【一】该程序的功能:调试B01.c的程序,使之具有如下功能:从键盘上输入6个整数给数组a,然后求数组a的前k个数之和并输出。 #include\"stdio.h\" main() {
int a[6],i,k,sum; sum=0;
printf(\"\\nPlease enter 6 numbers:\"); for(i=0;i<6;i++) {
scanf(\"%d\(1)未加地址符,a[i]应改为&a[i] */ }
printf(\"\\nPlease enter another number k=\"); scanf(\"%d\
for(i=1;i<=k;i++) /*(2)循环初值应改为:i=0;*/ /*(3)循环条件应改为:i printf(\"\\n sum= \(4)少了输出格式字符,应改为:\"\\n sum=%d \" */ } 【二】该程序的功能:源文件C02.C是有几处错误的程序,调试使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出这10个整数的平均值。结果用原文件名保存。 #include \"stdio.h\" main() { int i, n=10, a[10] /*(1)行末缺少一个分号*/ float av; /*(2)变量av为初始化,应改为:float av=0; */ for (i=0; i if((i+1)%3= 0) /*(4)等号写错,应改为:((i+1)%3==0) */ printf(\"\\n\"); } for (i=0; i!=n; i++) av += a[i]; print(\"\\nav = %f\\n\(5)参数av应改为:av/10或av/n */ } 【三】该程序的功能:给定程序A03.C中函数fun的功能是:读入一个字符串(长 度<20),将该字符串中的所有字符按ASCII码升序排序后输出。 例如,若输入:dceba,则应输出:abcde。 #include #include int c; int i, j; for( i = strlen( t )-1; i; i-- ); /*(1)i>=0; (2)去掉行末分号*/ for( j = 0; j < i; j++ ) if( t[j] < t[ j + 1 ] ) /*(3)“<”改为“>”*/ { c = t[j]; t[j+1] = t[ j ]; /*(4)本行改为t[j] = t[ j+1 ];*/ t[i ] = c; /*(5)本行改为t[j+1] = c*/ } } main() { char s[81]; printf( \"\\nPlease enter a character string: \" ); gets( s ); printf( \"\\n\\nBefore sorting:\\n \\\"%s\\\"\ fun( s ); printf( \"\\nAfter sorting decendingly:\\n \\\"%s\\\"\} 【四】该程序的功能:调试B01.c的程序,使之具有如下功能:从键盘上输入6个整数给数组a,然后求数组a的前k个数之和并输出。 #include\"stdio.h\" main() { int a[6],i,k,sum; sum=0; printf(\"\\nPlease enter 6 numbers:\"); for(i=0;i<6;i++) { scanf(\"%d\(1)未加地址符,a[i]应改为&a[i] */ } printf(\"\\nPlease enter another number k=\"); scanf(\"%d\ for(i=1;i<=k;i++) /*(2)循环初值应改为:i=0;*/ /*(3)循环条件应改为:i printf(\"\\n sum= \(4)少了输出格式字符,应改为:\"\\n sum=%d \" */ } 【五】该程序的功能:调试A07.C程序,使之具有如下功能:读入一个n*n的整数矩阵的元素,再找出这个矩阵的最小的元素及其所在的行号和列号(行号和列号均从1开始)输出。 #include \"stdio.h\"; /*(1)去掉行末分号*/ main() { int n,i,j,a[80,80] ; /*(2)数组定义改为a[80][80]*/ int min,min_i,min_j; printf(“Please enter n=”); /*(3)括号内的全角双引号改为半角双引号*/ scanf(\"%d\ printf(\"\\n\"); if (n<=0) printf(\"error:over limt!\"); else { printf(\"Please enter a[][]:\\n\"); for (i=0; i min=a[0][0], min_i=0, min_j=0; for (i=0; i min=a[i][j]; min_i=i; min_j=j; } printf(\"min:row=%d,col=%d,value=%d\\n\ min_i+1,min_j+1,a[min_i][min_j]); } } 【六】该程序的功能:调试B06.c程序:任意给定一个正整数,输出小于该正整数的 所有素数,每行K(可以任意设定)个,同一行相邻数之间用制表符隔开。 #include void isSuShu(int num) /*(1)函数类型void应改为int或short */ { int K=num/2; int i; for(i=2;i<=K;i++) { if(num%i=0) /*(2)等号写错,应改为:num%i==0*/ return 0; } return 1; } void main() { int N,K,i,count=0; printf(\"请输入一个正整数:\"); scanf(\"%d\ getchar(); printf(\"请输入每行显示的数的个数:\"); scanf(\"%d\(3)未加地址符, k应改为&k */ getchar(); printf(\"小于%d的素数如下:\\n\ for(i=2;i count=0; /*(5)本句应改为:count++;或count+=1;*/ printf(\"%d\\ if(count%K==0) printf(\"\\n\"); } } } 【七】该程序的功能:调试C05.c程序,使之具有如下功能:从键盘任意读入10个整数,计算出任意K个数的平均值(0 mian() /*(1)主函数名拼写错误,应改为:main() */ { int a[10],i,k,sum; /*(2)变量sum应初始化,改为:sum=0; 也可将变量声明为float并初始化,改为:„k; float sum=0; */ printf(\"\\nPlease enter 10 numbers:\"); for(i=0; i<10; i++); /*(3)应去掉行末分号*/ { scanf(\"%d\(4)未加地址符,a[i]应改为&a[i] */ } printf(\"\\nPlease enter another number k=\"); scanf(\"%d\ for(i=0; i<=k; i++) /*(5)循环条件应改为:i printf(\"\\nsum= %d\(6)输出应改为:\"...=%f\ 若前述变量定义sum已声明为float,则仅改为:\"...=%f\ /*打印结果*/ } 【八】该程序的功能:计算S = 1! + 2! + ... + n! #include \"stdio.h\" mian() /*(1)主函数名拼写错误,应改为:main() */ { int k , i, n ; long m , s; scanf ( \"%d\" , n ) ; /*(2)未加地址符,n应改为&n */ m =0; for ( k=1; k<=n; k++ ) { s=0; /*(3)初值错误,应改为:s=1; */ for( i=1; i<=k; i++) ; /*(4)去掉行末分号*/ s*=i ; m+=s; } printf ( \"%ld\\n\" , m ) /*(5)行末缺少分号*/ } 【九】该程序的功能:计算1/n!的值,例如:获至给n输入5,则输出0.008333。 #include int fun(int n) /*(1)函数类型错,int应改为double */ { double res=1.0; if(n=0) /*(2)等号写错,应改为:n==0 */ return 1.0; while(n>1 && n<170); /*(3)应去掉行末分号*/ res*=n--; res=1/res; return res; } main(); /*(4)应去掉行末分号*/ { int n; printf(\"Input N:\"); scanf(\"%d\(5)未加地址符,n应改为&n */ printf(\"\\n%d!=%f\\n\(6)输出格式%f应改为%lf */ } 【十】该程序C11.c的功能:程序C11.c有六行有错误,请改正。 #define \"stdio.h\" /*(1)#define 应改为:#include */ fun(int a,b) /*(2)形参声明错,应改为:fun(int a,int b) */ { return(a+b); } main() { int x=2;y=5;z=8;r; /*(3)多变量声明错,中间的分号应改为逗号, 本行应改为:int x=2, y=5, z=8, r; */ r=fun(fun(x,y),z) /*(4)行末缺少分号*/ printf(\"%f\\n\(5)输出格式字符错,%f应改为%d */ ) /*(6)此处圆括号应改为大括号:} */ 【十一】该程序的功能:调试B04.C程序,使之具有如下功能:统计学生各个分数段的成绩人数。 #include\"stdio.h\" #include #include main() { int i,a[100]={90,80, 70,80, 59, 53, 40, 75, 80,90},b[6]; { for(i=0;i<6;i++) b[i]=0; /*(1)循环初值应改为:i=1; */ for(i=0;i<10;i++); /*(2)应去掉行末分号*/ { if (a[i]< 60) a[i]=0; else a[i]=a[i]/10; switch(a[i]) case 0: b[1]++; break; /*(3)行首或上一行末应加大括号:{ */ case 6: b[2]++; break; case 7: b[3]++; break; case 8: b[4]++; break; case 9: b[5]++; /*(4)行末应加:break; */ default: b[5]++; } } } printf(\"The result is: \\n\"); for (i=1; i<6; i++) printf(\"%d0 number is: \\n \ /*(5)少了一个输出格式字符,应改为:\"%d„„is: %d\\n \" */ printf(\"\\n\"); } 【十二】该程序的功能:给定程序C09.c中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 #include\"stdio.h\" main() { long fun (long num); /*(1)行末的全角分号应改为半角分号*/ long n; printf(\"Please enter a number:\"); scanf(\"%ld\(2)未加地址符,n应改为&n */ printf(\"%ld\\n\(3)函数调用错,应改为:fun(n) */ } long fun (long num) { long k; /*(4)变量k应初始化,改为:k=1; */ do { k*=num%10; num/=10; } while(num) /*(5)行末缺少分号*/ return (k); } 【编程】 【1】题目描述: 编写程序,定义一个含20个元素的int类型数组。依次向数组中输入数值;在将数组元素中所有偶数输出到屏幕。 运行参考: 输入:1 54 5 7 8 66 12 33 36 输入数值为:1 54 5 7 8 66 12 33 36 所有偶数:8 66 12 36 【参考程序】 #include \"stdio.h\" #define N 20 main() { int i,a[N]; printf(\"\\nInput 20 number:\\n\"); for (i=0; i 【2】题目描述: 编写一个求水仙花的函数和判断整数n是否为素数的函数,求出3位正整数的全部水仙花数并判断求出的水仙花数是否为素数。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。例如153就是一个水仙花数: 153=13+53+33 所谓素数是指一个正整数只能被1和它本身整除的数。如153就不是一个素数。 #include \"math.h\" int IsPrime(int n) { int i; for (i=2; i<=sqrt(n); i++) if (n%i==0) return 0; return 1; } int IsNarcissus(int n) { int i,j,k; i=n/100; j=n/10%10; k=n%10; return (i*i*i+j*j*j+k*k*k==n); } main() { int i; printf(\"\\n3位正整数的全部水仙花数有:\\n\"); for (i=100; i<=999; i++) if (IsNarcissus(i)) { printf(\"%4d\ if (IsPrime(i)) printf(\"(素数)\"); else printf(\"(非素数)\"); } } 【运行结果】: 3位正整数的全部水仙花数有: 153(非素数) 370(非素数) 371(非素数) 407(非素数) 【3】题目描述: 编写程序完成以下数字金字塔:随机输入一个大于零的整数,即输出一个由数字组成的金字塔即第一行即输出一个1,第二行输出两个2,第三行输出3个3,第n行输出n个n,例如:输入一个数字5,则输出结果如下图所示: #include \"stdio.h\" main() { int i,j,n; printf(\"\\nInput a number:\"); scanf(\"%d\ for (i=0; i 找出1000以内所有素数,并求出它们的累加和。 #include \"math.h\" int IsPrime(int n) { int i; for (i=2; i<=sqrt(n); i++) if (n%i==0) return 0; return 1; } main() { int i,sum=0; printf(\"\\n1000以内所有素数有:\\n\"); for (i=2; i<1000; i++) /*注,1不是素数,故从2开始*/ if (IsPrime(i)) { printf(\"%4d\ sum += i; } printf(\"\\n其累加和sum=%d\\n\} 【运行结果】: 1000以内所有素数有: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 3 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 1 3 7 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 其累加和sum=10591 【5】题目描述: 有一个数组,内放10个整数,要求找出最小的数和它的下标。 #include \"stdio.h\" #define N 10 main() { int i,a[N],min; printf(\"\\nIntput 10 number:\\n\"); for (i=0; i 【6】题目描述: 用函数编程实现如下功能:求出比x大的最初k(k<1000)个素数,放入数组中输出。例如:程序运行时输入:10 10,输出:11 13 17 19 23 29 31 37 41 43 要求:在主函数中定义数组并输出处理的结果。 #include \"stdio.h\" #include \"math.h\" int IsPrime(int n) { int i; for (i=2; i<=sqrt(n); i++) if (n%i==0) return 0; return 1; } main() { int x,k,i; printf(\"\\nInput x and k:\\n\"); scanf(\"%d%d\ printf(\"\\n\"); i=0; while (i if (IsPrime(x)) { printf(\"%4d\ i++; } } } 【7】题目描述: 从键盘输入一个矩阵a[3][3]、b[3][3],先在屏幕上输出该矩阵,然后将矩阵对应数据相乘,即aij*bij将相乘后的数据放到矩阵a[3][3],再输出求乘后的矩阵。(注意:要程序实现过程中调用到自己编写的函数。) 运行参考: 请输入矩阵a[3 [3]的值:1 2 3 4 5 7 8 9 b[3][3] 的值:1 2 3 4 5 6 7 8 9 矩阵a[3] [3]被处理后的值为: 1 4 9 16 25 36 49 81 【参考程序】 #define M 3 #define N 3 void InputMatrix(int a[][N],int m,int n) { int i,j; for (i=0; i void OutputMatrix(int a[][N],int m,int n) { int i,j; for (i=0; i void MulMatrix(int a[][N], int b[][N], int m, int n) { int i,j; for (i=0; i int a[M][N],b[M][N]; InputMatrix(a,M,N); InputMatrix(b,M,N); printf(\"a=\\n\"); OutputMatrix(a,M,N); printf(\"b=\\n\"); OutputMatrix(b,M,N); MulMatrix(a,b,M,N); printf(\"a*b=\\n\"); OutputMatrix(a,M,N); } 【8】题目描述: 设有一个字符串This is a program,请编程求字符a第二次出现的位置并输出。要求:编程题对应的工程名为“prog1”,工程目录放在学号文件夹下。 main() { char s[]=\"This is a program\"; int i=0,j=0; while (s[i]!='\\0'&&j<2) { if (s[i]=='a') j++; i++; } if (j==2) printf(\"position is : %d\\n\ else printf(\"not found.\\n\"); } 【9】题目描述: 编写程序如下功能:从键盘上读入一个整数n(n<=20),求n以内所有素数阶乘的和。(即求2!+3!+5!…..+k!,其中k为小于n的素数,要求必须写出判断一个数是否为素数的子函数)。 #include \"math.h\" int IsPrime(int n) { int i; for (i=2; i<=sqrt(n); i++) if (n%i==0) return 0; return 1; } long Fact(int n) { int i; long f=1L; for (i=2; i<=n; i++) f *= i; return (f); } main() { int n,i; long sum=0L; printf(\"\\n请输入整数n=?\"); scanf(\"%d\ printf(\"%d以内的所有素数有:\\n\ for (i=2; i<=n; i++) if (IsPrime(i)) { printf(\"%4d\ sum += Fact(i); } printf(\"\\n这些素数的阶层之和:sum=%ld\\n\} 【运行结果】: 请输入整数n=?20 20以内的所有素数有: 2 3 5 7 11 13 17 19 这些素数的阶层之和:sum=1793094960 【10】题目描述: 该程序的功能:输出从公元1年到现在(公元2010年)间所有闰年(能被4整除且不能被100整除或能被400整除的年份),每行输出8个。要求:编程题对应的工程名为“prog1”,工程目录放在学号文件夹下。 main() { int i,j=0; for (i=4; i<=2010; i+=4) { if ((i%4==0&&i%100!=0)||i%400==0) { printf(\"%6d\ j++; if (j%8==0) printf(\"\\n\"); } } } 【11】题目描述: 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串并输出结果。 void AnalyStr(char *s,int *Alpha, int *Digits, int *Space, int *Other) { char *p; *Alpha=*Digits=*Space=*Other=0; p=s; while (*p) { if ((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z')) *Alpha+=1; else if (*p>='0'&&*p<='9') *Digits+=1; else if (*p==' ') *Space+=1; else *Other+=1; p++; } } main() { char *s; int *Alpha,*Digits,*Space,*Other; gets(s); AnalyStr(s,Alpha,Digits,Space,Other); printf(\"Alpha=%d,Digits=%d,Space=%d,Other=%d\\n\ *Alpha,*Digits,*Space,*Other); } 【12】题目描述: Fibonacci数列:其第1、2个数全为1,从第3个数开始,每个数等于它前两个数的和。 (1、1、2、3、5、„„) 要求:编程实现按照输入的项数实现Fibonacci数列的输出。 例如 输入3 输出为 1 1 2 输入5 输出为 1 1 2 3 5 要求:编程题对应的工程名为“prog1”,工程目录放在学号文件夹下。 main() { int i=1,j=1,k,n; while (1) { printf(\"\\n请输入数列输出个数n=?\"); scanf(\"%d\ if (n<3) printf(\"输入错误!输出个数应>=3个。\\n\"); else break; } printf(\"%4d%4d\ n -= 2 ; while (n>0) { k=i+j; printf(\"%4d\ i=j; j=k; n--; } } 【13】题目描述: 编写程序,其中使用函数base完成以下功能:将输入的一个base(取值2到16)进制正整数转换为十进制数输出。整数base和要转换的以字符串str表示的base进制数由键盘输入。如,输入16 2A则表示输入16进制数2A,程序将输出十 进制整数42;输入3 211则输出22。 int base(int k, char s[]) { int len=0,sum=0; int i,j,t,n; while (s[len]!='\\0') len++; i=len-1; while (s[i]!='\\0') { n=0; if (s[i]>='0'&&s[i]<='9') n=s[i]-48; else if (s[i]>='A'&&s[i]<='F') n=10+s[i]-'A'; t=1; for (j=0; j main() { int sz; char str[20]; scanf(\"%d %s\ if (sz<2||sz>16) printf(\"输入错误。\\n\"); else printf(\"%d\\n\} 【14】题目描述: 从键盘输入n(n<=10)个整数,统计其中偶数的个数,并对输入的偶数从小到大排序输出 (30) 测试用例: 输入的整数为:3 6 18 256 45 8 偶数个数为:4 偶数由小大排序为:6 8 18 256 #define N 10 main() { int a[N],b[N],n,t,i,j; printf(\"\\n输入数据的个数n=?\"); while (1) { scanf(\"%d\ if (n<=10) break; printf(\"数据个数不能超过10个。\"); } j=0; for (i=0; i printf(\"\\n偶数个数为:%d\\n\ n=j; for (i=0; i printf(\"偶数由小大排序为:\"); for (i=0; i 用函数SUM完成以下功能:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时 共有5个数相加),a的值和相加的个数由键盘控制。 main() { int a,n,i,j; long s,sum=0; printf(\"\\n请输入a的值及其个数:\"); scanf(\"%d%d\ printf(\"s=\"); for (i=1; i<=n; i++) { s = a ; for (j=1; j1) printf(\"+%ld\ else printf(\"%ld\ sum += s ; } printf(\"\\n =%ld\\n\} 【16】题目描述:输入4*4的数组,编写程序实现找出数组中其值最大和最小的元 素以及它们在数组中的位置。 #define M 4 #define N 4 main() { int a[M][N],i,j; int min_row,min_col,max_row,max_col; for (i=0; i min_row=min_col=max_row=max_col=0; for (i=0; i if (a[i][j]>a[max_row][max_col]) { max_row=i; max_col=j; } } printf(\"max:a[%d][%d]=%d\\n\ printf(\"min:a[%d][%d]=%d\\n\} 【17】题目描述: 定义一个函数:void sortArray(float*a,int n,short mode);该函数的功能是对一个数组a进行排序,n为参与排序的元素的个数,mode为排序方式,当mode=0时,按升序排序,mode不为0时按降序排序。 在主函数中调用该函数,从而实现对任意输入的n(不大于100)个浮点型数进行排序,最后输出升序及降序的排序结果(输出的数保留小数点后三位有效数字)。以下是该程序的一个测试画面: 注意:参与排序的数的个数不固定。可以为4,也可以为其他数如9等等。 #define N 100 void sortArray(float *a, int n, short mode) { int i,j,t;
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务