搜索
您的当前位置:首页正文

C语言经典习题

来源:六九路网
数组

3.下面程序的功能是:用strcmp函数比较两个字符串,输出两个字符串中较大的。请填空完善程序。

# include # include void main() {

char strl[20] =\"a beautiful girl\"; char str2[20] =\"a beautiful voice\"; if ( (1) ) printf(“%s”,strl,) ; else

printf(“%s”, (2) ) ; printf(\"\\n\"); )

4.下面程序的功能是:将从键盘输入的字符串中的大写字母转换为小写字母并输出该字符 串。请填空完善程序。 # include~stdio. h> # include void main() {

char str[30]; int i;

printf (“Please input str:”); gets(str);

for(i=0;str[i]!=‟\\0‟ 7;i++)

if(str[il>= 'A‟ && (l) <=‟Z‟)

str[i] = str[il+ (2) ;

printf (“output str:%s\n”,str); }

5.下面程序的功能是:找出二维数组中最大元素的值和最大元素所在的行号和列号。请填空完善裎序。

# include void main()

{ int i,j,row, colum,max,a[3][4]={{1,2,3,4),{9,8,7,6),{-10,10, -5,2}}; max=a[0][0]; (1) colum=0;

for(i=0;i<;i++) for(j=0;j<4;j++ ) if( (2) ) {max=a[i][j]; row=i:

colum=j; }

printf (”max=%d row=%d colum=%d\\n\ )

6.下面程序的功能是:将3×4的二维数组中的第0列和最后一列元素的值相交换,第1列和第2列元素的值相交换。请填空完善程序。 # include void main() {

int a[3][4]={{5,8,9,1),{4,2,6,7),{12,13,14,10}},i,j,k; for(i=0;i<3; (l)) for(j=0;j<4/2;j++) {

K= (2) ; a[i][j]=a[i][3-j]; a[i][3-j]=k; }

for(i=0;i<3;i++) {

printf(“\\n”);

for(j=0;j<4;j++) printf(\"%4d”, a[i][j]); }

printf(“\\n”); }

7.下面程序的功能是:将一个二维数组行和列元素互换,存到另一个二维数组中。请填空完善程序。

# include void main()

{int a[2][3]={{1,2,3),{4,5,6)),b[3][2],i,j; printf(\"array a:\n”); for(i=0;i < (1) ;i++) {for(j=0;j<3;j++) { priritf(\"% 5d\(2) =a[i][j]; }

printf(“\\n”); }

printf(“array b:\n”); for(i=0;i<3;i++) {for(j=O;j<2;j++) printf(“%5d”, b[i][j]); printf(\"\\n\"); )

}

8.下面程序的功能是:从键盘输入一个数插入一个有序的一维数组,要求插入这个数后的数组也是有序的。请填空完善程序。 # include void main()

{ inl a[11]={1,4,6,9,13,16,19,28,40,100}; int number, end, i,j; for(i=0;iif( number>end) a[10]= number; else

for(i=0;iif(a[i]>numbcr) for(j=9;j>=i;j- -) a[j+1]= (1); a[i]= (2) ; break; } }

for(i=0;iprintf(\"% 6d\" , a[i]) ; printf(“\\n”) ; }

9.a数组和b数组中存放的是由小到大的有序数。下面程序的功能是:把两个数组中的数按由小到大的顺序合并到c数组中。请填空完善程序。 # include void main()

{int a[10]= {1,2,5,8,9,10} ,an=5,b[lo]= {1,3 , 4 ,8, 12,18} ,bn=5; int i,j,k, c[20] ,max=9999; a[an+l]= b[bn+l]=-max;

while((a[i] ! =max) || (b[j] ! = max)) if(a[i]c[k]= (1) ; k++; i++; } else {

c[k]=b[j]; k++; (2) ; }

for(i=0;iprintf(”%4d\ printf(“\\n”) ; }

10.下面程序的功能是:统计一个字符串中的单词个数。请填空完善程序。 # include void main()

{ int i, c, num= 0 , word = 0 ; char string[81] ;

gets(string) ; for(i=o; (c=string[i]) !=‟\\0‟;i++) if(c==‟ „) (1) ; else if(word= =0) {word=l; (2) ;}

printf(“there are %d words in the line\\n”,num) ;

11.下面程序的功能是:从输入的十个字符串中找出最长的那个串。请填空完善程序。 # include \"stdio. h\"

# include \"string. h\" # define N 10 void main()

{ char str[Nl[811; char max[81]; int i:

for(i=0;i\\ if(strlen( max) 12.下面程序的功能是:用选择法对10个整数按升序排序。请填空完善程序。 # include (1) void main() {

int i,j,k,t,a[N];

for(i=o;i<=N-l;i++) scanf(”%d', &a[i]) ;

for(i=o;i(2) for(j=i+1;( 3) ;j++) if(a[j]if( (4) ){t=a[i];a[i]=a[k];a[k]=t;} }

printf ( \"output the sorted array :\\ n\") ; for(i=0;i<=N-l;i++) printf(\"%5d\ printf (”\\n\") ; }

13.下面程序的功能是:删除字符串中的指定字符,字符串和要删除的字符均由键盘输入。 填空完善程序。 # include void main() {

char str[80],ch; int i,k=o; gets( (1) ); ch=getchar() ;

for(i=0;str[i] (2) ;i++); if(str[i]!=ch) { (3) ;k++;} (4) ; puts(str); }

14.下面程序的功能是:将一个数组中的元素按逆序存放。请填空完善程序。 # include # define N 7 void main() {

static int a[Nl={12,9,16,5,7,2,1} ,k,s; printf(\"\\n the origanal array:\n\"); for(k=0;k(2) ;

(3) ; (l) }

printf(”\n the changed array:\\n\") ; for(k=0;k}

15.下面程序的功能是:产生10个[30,90]区间上的随机整数,然后对其用选择法进行由小到大的排序。请填空完善程序。 # include # include void main() {

int i,j,t,k;

( 1 ); for(i=o;ia[i] = rand()%60+30; for(i=0;i<9;i++) {

( 2 ); For (j=i+1;j<10;j++) If( ( 3 ) )k=j; if(k!=i){t=a[k];a[k]=a[i];a[i]=t; }

for ( (4) ) printf(“%5d”,a[i]); printf(”\\n”);

16.下面程序的功能是:将一个字符串中的前n个字符复制到一个字符组中去不允许使用 strcpy函数。请填空完善程序。 # include void main()

char strl[80],str2[80]; int i,n;

gets( (1) ); scanf(“%d”,&n);

/* * * * ********SPACE* * *******/ For(i=0;( (2) ) ;i++) /* * * * * * * * *SPACE**********/ { (3) ;}

/* *********** SPACE************/ ( 4 ) ;

printf(” % s\\n\3.3 程序改错

注意:不可以增加或删除程序行,也不可以更改程序的结构。

4.下面程序的功能是:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。请改正程序中的错误,使它能得出正确的结果。 # include # define N 11 void main() {

int i, number,a[N]= {1,2,4,6,8,9,12, 15 ,149 ,156} ;

printf(\"please enter an integer to insert in the array:\\n”) ; /* * * * * * * * FOUND* * * * * * * * * * * */ scanf(\"%d\

printf(\"The original array:\\n\") ; for(i=o;i/* * * * * * * * * FOUND* * * * * * * * */ for(i=N-l;i> =0;i- -)

if(number< =a[i]) a[i+1]=a[i]; else

{a[i+ll=number; break;}

if(number7.下面程序的功能是:计算并输出数组中所有正数的平均值。请改正程序中的错误,使1

得出正确的结果。 # include <.stdio. h> void main() {

int sL]O]一{-50,10, 80, 90, -6,8,100, -70,8,9}; float sum-0.O; inr i.c=0; double aver;

/********** FOUND**********/ for(i—O;i<一10;i++) {

if(s[门>O) 1 、 sum+=s[i]; c++: ) )

/* -x,-x*******FOUND-x*********/ aver - sum*C;

printf(n~6 f\\n/',aver); )

8.下面程序的功能是:先从键盘上输入一·个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。请改正程序中的错误,使它能得出正确的结果。 # include”stdio.h” void main()

{ int a[3l[3] , sum; sum=0;

for(i=0;i<3;i++) for(j=0j<3;j++) scanf(“%d”,&a[i][j]); for(i=0;i<3;i++)

/********** FOUND**********/ sum=sum+a[i][j];

/********** FOUND**********/ printf(“sum=%f\\n”,sum); }

11.下面程序的功能是:从字符串中删除指定字符,字符串和指定字符都从键盘输入。请改正程序中的错误,使它能得出正确的结果。 # include # include void main( ) {

char str[20],k; int i,j=0;

printf(\"Please input str:”); gets(str);

printf(\"Please input the deleted character:7‟); scanf(”%c”,&k);

/********** FOUND**********/ for(i—O;str[i]!一70 7;i++) if(str[i]!=k)

/********** FOUND**********/ str[j]一str[i~-+]; str[jl='\\0/;

printf (uoutput str:%s\\nu, str); }

3.4 程序设计

1.从键盘给一维整型数组输入10个整数,找出数组中最小的数并输出。 2.从键盘给一维整型数组输入10个整数,求最小值所在的下标并输出。(如果最小值出多次,求出第一次出现的下标即可)。

3.从键盘给二维整型数组输入12个整数,找出数组中最大的数并输出。

4.找出数组a[10l={l,2.8,18,20,-50,34,90,2,12)中的最大的偶数,并输出。

5.输入一个字符串给字符数组slr[40],将字符串中的所有小写字母转换为对应的大写字母,其它字符不变。最后输出转换后的字符串。

6.从键盘给一维整型数组输入10个整数,求其中最大值和最小值的差。 7.对二维数a进行转置,即行列转换,并放在b数组中。 转置情况如下:

数组a: 数组b:

1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9

8.随意输入一个字符串给字符数组str[40],求该字符串中字母的个数并输出。 9.把数组中的元素按相反顺序存放。即a数组中的元素原来存放方式是:5 4 3 2 1,试编程把该数组中的元素存放成:l 2 3 4 5。

10.随意输入两个字符串给字符数组strl[40]和str2[40],将两个字符串连接起来放在数组strl中,并输出连接后的字符串。(不允许使用strcat函数)。

答案: 程序填空

3. (l)strcmp(strl,str2)>0 (2)str2 4.(1) str[i] (2)32

5. (l)row=0 (2)max8.(1)a[j] (2)number 9(1)a[i] (2)j++.

10. (l)word=0 (2)num++或++num或 num=num+l 11. (l) str[i]

(2)strcpy(max,str[i])

12. (l) # define N 10 (2)k=I (3)jj 13.(1) str (2)!=‟\\0‟

(3) str[k] = str[i] (4) str[k]=‟\\0‟ 14.(l)k++或 k=k+l

(2)a[k] =a[N-k-l]

(3)a[N-k-l]=s或 a[N-I-kl=s

(4)printf 15.(1) int a[10] (2)k=i

(3) a[j](4)i=0;i<10;i++或i=0;i<=9;i++ 16.(1)str1

(2) i(4)str2[n]=‟\\0‟或 str2[il=‟\\0‟

程序改错

4.(1)scanf(“%d”,&number);

(2)for(i=N-2;i>=0;i--) 7.(1)for(i=0;i<10;i++) (2)aver=sum/c;

8(1)sum=sum+a[i][j];或sum+=a[i][j]; 11.(1)for(i=0;str[i]!=‟\\0‟;i++) (2)str[j++]=str[i]; 程序设计

1.程序代码: # include void main() { int a[lO],i,min; for(i= 0 ;i<10 ;i+ +) scanf(\"%d”, & a[il) ; min=a[0] ; for(i=l;i}

2.程序代码:

# include

void main() { int a[lOl,i,min; for(i=O;i# include void main() {

int a[3][4],i,j ,max; for(i=0;i<3;i++)

for(j=0;j<4;j++)

sacnf(“%d”,&a[i][j]);

max=a[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++)

if(a[i][j]>max) max=a[il[j]; printf(“%d\\n\

}

4.程序代码:

# include void main()

{int a[10] == {1,2,8,18, 20,50,34 , 90,2,12} ; int i,max= -l; for(i=0;i<10;i++) if(a[i]%2==0) if(a[i]>max) max=a[il;

. printf(\" % d\\n”, max) ; } 5.程序代码:

# include # include void main()

{ char str[40] ; int i;

gets(str) ;

for(i=0;str[i]!=’\\0’;i++)

if(str[i]>=’a’ && str[i]<=’z’) str[i] =str[i]-32; puts(str) ;

}

6.程序代码:

# include # include void main() { int a[10l; int i, max, min; for(i=0;imax) max=a[i]; else if(a[i]7.程序代码

#include void main()

{

int a[3][3]={1,2,3,4,5,6,7,8,9},b[3][3];

int i,j;

for(i=0;i<3;i++)

for(j=O;j<3;j++)

b[j][i]=a[il[j];

printf (“转置后的 b数组中的内容为 : \\n\") ; for(i=0;i<3;i++) { for(j=0;j<3;j++)

printf(”% 5d”, b[il[j]) ;

printf(“\\n”) ; } }

8.程序代码:

# include void main() char str[40];

int i,num=0;

gets(str);

for(i=O;str[i]!=’\\0’;i++)

if(str[i]>=’a’&& str[i]<=z || str[i]>=’A’&& str[i]<=’Z’) num++;

printf(\"%d\\n\; )

9.程序代码:

# include void main()

{ int a[5l= {5,4,3,2,1); int i,k,t; k=2;

for(i—O;i<一k;i++) {

t=a[il;

a[i]=a[4一i]; a[4一i]=t; )

printf(”按相反顺序存放后的数组元素值依次为:”); for(i=O;i<5;i++) printf(“%d “,a[i]); printf(“\\n”); }

10.程序代码:

# include void main()

( char strl[40],str2[40]; int i,j; gets(strl); gets(str2);

for(i=0;strl[i]!=’\0 ‘;i++); for(j=O;str2[j]!=’\0 ‘;j++) strl[i+j]=str2[j]; strl[i+j]='\\O’; puts(strl); )

因篇幅问题不能全部显示,请点此查看更多更全内容

Top