C语言习题集(9)

2020-03-26 23:20

a[j+1]=a[j] ; a[0]=k;

for (m=0 ; m<6 ; m++) printf(“%d ”,a[m]); printf(“\\n”); } }

四.程序判断题

1.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。 main ( )

{ int a[3]={3*0} ; int i;

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

}

2.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。 main ( )

{ int a[3]={1,2,3} , i; scanf(“%d%d%d”,&a);

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

}

3.下面程序的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为:“ABCDE”时则t中的字符串应为:“EDCBAABCDE”;判断下面程序的正误,如果错误请改正过来。

main ( )

{ char s[80],t[200]; int i,sl ; gets(s); sl = strlen(s);

for (i=0; i

}

4.下面程序的功能是:将n各无序整数从小到大排序;判断下面程序的正误,如果错误请改正过来。 main ( )

{ int a[100], i, j, p, t, n=20 ;

for (j = 0; j

for ( i=j+1; ia[i]) t=i; if (p!=j)

{ t = a[j]; a[j] = a[p]; a[p]=t; } }

for ( j = 0; j

5.下面程序的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaas lkaaas,子字符串为as,则应输出2;判断下面程序的正误,如果错误请改正过来。 main ( )

{ char substr[80],str[80]; int i,j,k,num=0;

gets(substr); gets(str); for (i = 0, str[i], i++)

for (j=i,k=0;substr[k]==str[j];k++,j++) if (substr[k+1]!=?\\0?) { num++; break; }

printf(“num=%d”, num);

}

五.程序填空题

1.下面程序可求出矩阵a的主对角线上的元素之和,请填(2)空使程序完整。 main ( )

{ int a[3][3]={1,3,5,7,9,11,13,15,17} , sum=0, i, j ; for (i=0 ; i<3 ; i++) for (j=0 ; j<3 ; j++) if (【1 】)

sum=sum+【2 】; printf(“sum=%d”,sum); }

2.下面程序将十进制整数base转换成n进制,请填(3)空使程序完整。 main ( )

{ int i,base,n,j,num[20] ; scanf(“%d”,&n); scanf(“%d”,base) ; do { i++;

num[i]=【1 】; n=【2 】; } while (n!=0); for (【3 】) ;

printf(“%d”,num[j]) ; }

3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。 main ( )

{ int a[10],max,min,i,j,k ; for (i=0; i<10; i++)

scanf(“%d”,&a[i]); max=min=a[0];

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

if (a[i]max) {max=a[i]; 【2 】; } }

【3 】;

for (i=0; i<10; i++) printf(“%d”,a[i]); }

4.下面程序用“插入法”对数组a进行由小到大的排序,请填(3)空使程序完整。 经典算法提示:

简单插入排序算法的基本思想使将数组处理n-1次,第k次处理是将第k个元素插入到目前的位置。第k次的元素是这样插入的:在第k次处理时,前面的元素a[0],a[1],…,a[k-1]必定已排成了升序,将a[k]与a[k-1],a[k-2],…a[0]逐个比较(由后向前),若有a[j]

{ int a[10]={191,3,6,4,11,7,25,13,89,10} ; int i,j,k ;

for (i=1; i<10; i++) { k = a[i] ; j = 【1 】;

while (j>=0 && k>a[j] ) { 【2 】; j--; }

【3 】=k ; }

for (i=0; i<10; i++) printf(“%d”,a[i]); }

5.下面程序用“两路合并法”把两个已按升序(由小到大)排列的数组合并成

一个新的升序数组,请填(3)空使程序完整。 main ( )

{ int a[3]={5,9,10} ;

int b[5]={12,24,26,37,48} ; int c[10],i=0,j=0,k=0 ; while (i<3 && i<5) if (【1 】) {

c[k]=b[j] ; k++ ; j++ ; } else {

c[k]=a[j] ; k++ ; i++ ; }

while (【2 】) {

{ c[k]=a[j] ; i++ ; k++ ; } while (【3 】) {

{ c[k]=b[j] ; j++ ; k++ ; }

for (i=0; i

6.下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的结果保存到b数组中,并按矩阵形式输出a和b,请填(3)空使程序完整。

数组a 数组 main ( )

{ int a[2][3]{{4,5,6},{1,2,3}}, b[2][3], i,j; for (i=0; i<2 ; i++) for (j=0; i<3 ; j++ ) { printf(“]”,a[i][j]); 【1 】; }

printf(“\\n”); }

for (【2 】) b[i][0]=a[i][2]; for (i=0; i<2 ; i++) { for (j=0; i<3 ; j++) { printf(“]”,b[i][j]); 【3 】;


C语言习题集(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:早黑宝葡萄的花果管理技术

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: