当前位置:首页 > C程序设计作业集
for (i=0; i 4.下面程序的功能是:将n各无序整数从小到大排序;判断下面程序的正误,如果错误请改正过来。 main ( ) { int a[100], i, j, p, t, n=20 ; for (j = 0; j for ( i=j+1; i { 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] 【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] main ( ) { 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 】; } printf(“\\n”); } } 7.下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串中第一次出现的位置(下标值),否则输出-1,请填(2)空使程序完整。 # include { char c=?a? ; /* 需要查找的字符*/ char t[50] ; int i,j,k; gets(t) ; i = 【1 】; for (k=0; k if (【2 】) { j = k ; break ;} else j=-1; printf(“%d”,j); } 8.下面程序用“顺序查找法”查找数组a中是否存在某一关键字,请填(2)空使程序完整。 main ( ) { int a[10]={25,57,48,371,123,291,18,22,44}; int i=0,x ; scanf(“%d”,&x); 【1 】; while (a[i]!=x) i++ ; if (【2 】) printf(“found=%d\\n”,i); else printf(“can\\?t found!\\n”); } 9.以下程序是求矩阵a,b的乘积,结果存放在矩阵C中并按矩阵形式输出,请填(3)空使程序完整。 main ( ) { int a[2][3]={2,10,9,4,5,119}, b[2][2]={-1,-2,-3,-4}; int i,j,k,s,c[3][2]; for (i=0; I<3; i++) for (j=0; j<2; j++) { 【1 】 for (k=0; k<2; k++) s+=【2 】; c[i][j]=s; } for (i=0; i<3; i++) for (j=0; j<2; j++) { printf(“m”,c[i][j]); 【3 】; } } 10.以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填(2)空使程序完整。 main ( ) { char a[40]=”Great ”, b[ ]=”Wall”;
共分享92篇相关文档