1、以下程序的功能是求如下表达式:
1 1 1
S = 1 + ——+ ———+ ...... + ———————
1+2 1+2+3 1+2+3+......+n
『答案』:1 scanf("%d",&n);
2 float fun(int n)
3 for(i=1;i<=n;i++)
4 s+=1.0/t 或s= s + 1.0 /t;
2、题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。
1 1 1
t = 1- ——- ——- ... - ——
2x2 3x3 mxm 例如,若m=5,则应输出:0.536389 『答案』:1 for(i=2;i<=m;i++)或for(i=2;i 2 y-=1.0/(i*i); 或y=y-1.0/(i*i); 3 return y; 或return (y); 3、函数fun的功能是:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于0.0001。 π 1 1 1 —= 1 - —+ —- —+ ... 4 3 5 7 『答案』:1 #include "math.h" 或#include 2 float s=0,t=1,p=1; 3 while(fabs(t)>1e-4)或while(fabs(t)>0.0001) 4 printf("pi=%f\n", s * 4 ); 4、功能:计算正整数num的各位上的数字之积。例如,输入252,则输出应该是20。『答案』:1 long k=1; 或long int k=1; 2 num/=10; 或num=num/10; 3 scanf("%ld",&n); 4 printf("\n%ld\n",fun(n)); 5、功能:(与上题略有不同)计算正整数num的各位数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 『答案』:1 {long k=1; 2 num/=10; 或num=num/10; 3 } while(num) ; 或}while(num!=0); 或}while(num>0); 6、题目:判断m是否为素数,若是返回1,否则返回0。 『答案』:1 int fun( int m) 或fun( int m) 2 for(i=2;i 3 if( m%i == 0 ) k=0; 4 return(k); 或return k; 7、功能:找出大于m的最小素数,并将其作为函数值返回。 『答案』:1 for(k=2;k 2 if( i%k == 0 ) break; 或if(!(i%k)) break; 3 if(i<=k)或if( k == i ) 或if(k>sqrt(i)) 4 return i; 或return (i); 8、功能:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。 『答案』:1 while ( (k>=2) && (mc<10) )或while ( (k>=2) && (mc<=9) ) 2 if(!(k%17!=0 && k%13!=0 )) 或if( ( k%1 3 == 0 ) || ( k%17 == 0 ) ) 3 k--; 或k=k-1; 或k-=1; 或--k; 4 return m; 或return(m); 9、在一个一维整型数组中找出其中最大的数及其下标。程序中共有4条错误语句,请改正错误。 『答案』:1 int fun(int *a,int *b,int n) 2 *b=c-a;} 3 scanf("%d",&a[i]); 或scanf("%d", a + i ); 4 max=fun(a,&p,N); 10、通过键盘输入10个整数为一维数组各个元素赋值;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出调整后的数组元素。 『答案』:1 scanf("%d",p++); 或scanf("%d",&arr[i]); 或scanf("%d",p+i); 2 if(*p>*max) 或if(*max<*p) 3 if( max == arr ) 4 for(i=0;i 11、用起泡法对10个整数从小到大排序。 『答案』:1 for(j=0;j< n -1 -i ;j++) 2 if(x[j]>x[ j + 1 ]) 或if(x[ j + 1] 3 scanf("%d",&a[i]); 或scanf("%d",a+i); 4 sort(a,n); 或sort(&a[0],n); 12、在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。 『答案』:1 scanf("%d",&number); 2 for(i=N-2;i>=0;i--) 或for(i=N-2;0<=i;i--) 3 a[ i + 1 ]=a[i]; 4 break;} 13、将一个字符串中第m个字符开始的全部字符复制成为另一个字符串。 『答案』:1 { char *p1,*p2; 或{ char *p2,*p1; 2 p1= str1 + m -1; 或p1=-1+ str1 + m ; 3 while(*p1) 或while(*p1!='\0') 4 strcopy(str1,str2,m); 14、将一个字符串中的大写字母转换成小写字母。例如:输入aSdFG输出为asdfg。 『答案』:1 char fun(char *c) 2 return *c; 或return (*c); 或return(*c); 3 { char s[81],*p=s; 4 putchar(*p); 或printf("%c",*p); 15、题目:将若干学生的档案存放在一个文件中,并显示其内容。 『答案』:1 { struct student *p; 2 FILE *fp; 3 for(p=stu;p< stu + 3 ;p++) 或for(p=stu; stu + 3 >p;p++) 4 printf("%4d %-10s %4d\n",(*p).num ,p->name,(*p).age); 16、题目:下列给定程序中,函数fun的功能是:求1到10的阶乘的和。 『答案』:1 for(i=1;i<=10;i++) 或for(i=1;i<11;i++) 2 s= s + fac(i) ; 或s+=fac(i); 3 float y=1.0; 或float y=1; 4 return y; 或return(y); 17、题目:函数fun的功能是:求1到20的阶乘的和。 『答案』:1 t=1; 或t=1.0; 2 t= t * j ; 或t*=j; 3 s= s + t ; 或s+=t; 4 printf("jiecheng=%f\n",s); 18、函数fun的功能是:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。 『答案』:1 printf("%8.0f",f1); 或printf("%f",f1); 2 for(i=1;i<20;i++)或for(i=2;i<=20;i++)或for(i=1;i<=19;i++) 3 f1=f2; 4 f2=f3; 19、函数fun的功能是:实现交换两个整数的值。例如给a和b分别输入3和6 ,输出为a=6 b=3 『答案』:1 void fun (int *a,int *b) 或fun (int *a,int *b) 2 t=*a; 3 *a=*b; 4 *b=t; 20、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。下列给定程序中,函数fun的功能是:求该数列的前n项的平方根之和sum,n的值通过形参传入。输出由主函数完成。例如,当n=10时,程序的输出结果应为23.197745。『答案』:1 double fun (int n) 2 sum=1.0; 或sum=1; 3 s2=1.0; 或s2=1; 4 for(k=4;k<=n;k++)或for(k=4;k 21、函数fun的功能是:根据以下公式求π值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。 π 1 1 2 1 2 3 1 2 3 4 — = 1 + — + — x — + — x — x — + — x — x — x — + ... 2 3 3 5 3 5 7 3 5 7 9 『答案』:1 while(t>eps) 或while (t>=eps) 2 t=t*n/(2*n+1); 或1.0*n/(2*n+1)*t; 3 return 2 * s ; 或return (2*s); 22、题目:函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给num1和num2分别输入49和21,则输出的最大公约数为7。 『答案』:1 a=b; 2 b=t; 3 r=a%b;} 4 return b; 或return (b); 或return(b); 23、题目:在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。 例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。『答案』:1 double sum=0.0; 或double sum=0; 2 while( s[i] != 0 )或while(s[i]) 3 sum/=c; 或sum=sum/c; 4 return sum; 或return (sum); 24、fun函数的功能是:给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。例如,n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值为40.828335,在平均值以下的实数个数应为3。 『答案』:1 float xa=0; 或float xa=0.0; 2 for(j=0;j 3 for(j=0;j 4 return c; 或return (c); 25、fun函数的功能是:实现3行3列矩阵的转置,即行列互换。 『答案』:1 scanf("%d",&a[i][j]); 或scanf("%d",(*(a+i)+j)); 2 for(j=0;j 3 t=a[i][j]; 4 a[j][i]=t; 26、fun函数的功能是:求一个3行4列矩阵的外框的元素值之和,注意,矩阵四个角上的元素不能重复加。 『答案』:1 int i,j,s,s1=0,s2=0,s3=0,s4=0; 2 s2= s2 + a[m-1][j] ; 或s2+=a[m-1][j]; 3 for(i=1;i 4 s= s1 + s2 + s3 +s4 ; 27、fun函数的功能是:实现两个字符串的连接。例如:输入dfdfqe和12345时,则输出dfdfqe12345. 『答案』:1 while( s1[i] != '\0' )i++; 或while(s1[i])i++;或while( s1[i] != 0 )i++; 2 while( s2[j] != '\0' ) 或while(s2[j])或while( s2[j] != 0 ) 3 s1[i]=s2[j]; 4 s1[i]='\0';或*(s1+i)='\0'; 或s1[i]=0; 28、将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。 例如:当s所指的字符串的内容为"ABCD"时,t所指数组中的内容为"DCBAABCD"。 『答案』:1 void fun (char s[],char t[]) 或void fun (char *s,char *t) 2 d = strlen(s); 3 for (i = 0; i 4 t[ 2 * d ] = '\0'; 或t[ i + d ] = '\0'; 29、下面程序的功能是:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。max 代表最高分,min代表最低分,avg代表平均分。 『答案』:1 float a[10],min,max,avg; 2 scanf("%f",&a[i]); 或scanf("%f",a+i); 3 max=min=avg=a[0]; 4 if (min>a[i]) 30、以下程序输出前六行杨辉三角形。 『答案』:1 for(i=0;i<6;i++) 或for(i=0;i<=5;i++) 2 if(j == 0 || j == i) 3 a[i][j]=a[i-1][j]+a[i-1][j-1]; 或a[i][j]=a[i-1][j-1]+a[i-1][j]; 4 print("\n"); 31、有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置. 『答案』:1 scanf("%d",&a[i]); 或scanf("%d",a+i); 2 for(i=1;i<10;i++) 或for(i=0;i<10;i++) 或for(i=1;i<=9;i++) 3 if(a[i] 4 a[k]=a[0]; 32、输入10个数,要求输出这10个数的平均值 『答案』:1 for(i=1;i<10;i++) 或for(i=1;i<=9;i++) 2 float score[10],aver; 或float aver,score[10]; 3 scanf("%f", &score[i]); 或scanf("%f", score+i); 4 aver=average(score); 33、用"起泡法"对输入的十个字符排序后按从小到大的次序输出. 『答案』:1 scanf("%c",&str[i]); 或scanf("%c",str+i); 2 sort(str); 3 for(i=0;i 4 if(str[i]>str[i+1]) 或if(str[i+1] 34、以下程序利用指针把两个数按由大到小的顺序输出。 『答案』:1 swap( int *p1,int *p2) 或void swap( int *p1,int *p2) 2 scanf("%d%d",&a,&b); 3 p1=&a;p2=&b; 4 printf("max=%d,min=%d\n",*p1,*p2); 或printf("max=%d,min=%d\n",a,b); 35、用指针作函数参数,编程序求一维数组中的最大和最小的元素值. 『答案』:1 void maxmin(int arr[ ],int *pt1,int *pt2,int n) 2 *pt1=*pt2=arr[0]; 或*pt1=*pt2=*(arr+0); 3 {if(arr[i]>*pt1) *pt1=arr[i]; 或{if(*(arr+i)>*pt1)) *pt1=arr[i]; 4 p1=&a;p2=&b; 36、编写一个函数,该函数可以统计一个长度为3的字符串在另一个字符串中出现的次数。例如,假定输入的主字符串为:asdasasdfgasdaszx67asdmklo,子字符串为:asd,则应输出n=4。『答案』:1 int i,n=0; 2 for(i=0;i<=strlen(str)-3;i++) 或for(i=0;i 3 n++; 或n+=1; 或n=n+1; 或++n; 37、函数fun功能是:根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)『答案』:1 double y=1; 或double y=1.0; 2 for(i=1; i<=m; i++) 或for(i=1; i 3 y+=1.0/(2*i-3); 38、下列程序中,函数fun的功能是:找出一个大于给定整数m的最小的素数,并作为函数值返回。 『答案』:1 { int i,k; 或{ int i; int k; 2 if(i%k==0) 或if(!(i%k)) 3 if(k==i) 或if(k>=i) 39、给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87654时,t 中的数为:864。 『答案』:1 if( d%2 == 0 ) 或if(d%2!=1) 2 { *t=d* sl+ *t; 或{ *t+=d*sl; 3 s/=10; 或s=s/10; 40、给定程序MODI1.C中函数fun的功能是:求两数平方根之和,作为函数值返回。 例如:输入12和20,输出结果是:y = 7.936238。 『答案』:1 double fun (double *a, double *b) 2 c = sqrt(*a)+sqrt(*b) ; 或c = sqrt(*b)+sqrt(*a) ; 3 return c; 或return(c); 41、给定程序MODI1.C中函数fun 的功能是:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为:1,1,1,3,5,9,17,31,……项值通过函数值返回main ( )函数。 『答案』:1 for (k=4; k<=n; k++) 或for (k=4; k 2 a=b; b=c; c=d; 3 return d; 42、给定程序MODI1.C中函数fun 的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 『答案』:1 float fun(float r) 2 s=1.0/2*3.14159*r*r; 或s=1/2.0*3.14159*r*r; 3 return s; 或return (s); 程序改错------------------------------------- 1题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 -----------------*/ #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;i 下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() 序中有两处错误代码,请改正.注意,不得改变程序结构。 #include <> main() { int a[8],*p=a; int i,j; int tempmin,tempcode; printf("\n input the numbers:\n"); for (i=0;i<8;i++) scanf("%d",p+i); tempmin=*p; for (i=0;i<7;i++) { for (j=i;j<8;j++) if (j==i||*(p+j) 【程序改错】 1.功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序 打印出来。 char next; next=getchar(); palin(n-1); 2.功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 for (k=4; k<=n; k++) a=b; return d; 3.功能:根据整型形参m,计算如下公式的值: y=1/2+1/8+1/18+...+1/2m*m double y=0.0; 4.功能:编制统计营业员一天的营业额的程序,设程序采用一个循环 实现,每次循环输入一笔交易金额并累计营业额。由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 float sale,sigma; scanf("%f",&sale); sigma=sigma+sale; 5.功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。while(n<8) while(a<1||a>50); for(i=0;i 1、以下程序的功能是求如下表达式: 1 1 1 S = 1 + ——+ ———+ ...... + ——————— 1+2 1+2+3 1+2+3+......+n 『答案』:1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 4 s+=1.0/t 或s= s + 1.0 /t; 2、题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。 1 1 1 t = 1- ——- ——- ... - —— 2x2 3x3 mxm 例如,若m=5,则应输出:0.536389 『答案』:1 for(i=2;i<=m;i++)或for(i=2;i 第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include (一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (i = j+1;i < n; i++) /**********ERROR**********/ if(a[i] >a[k]) /**********ERROR**********/ k=j; t = a[k] ; a[k] = a[j] ; a[j] = t; } } main() { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); } 【参考答案】 k = j; 【参考答案】 if(a[i] < a[k]) if(a[k] > a[i]) 【参考答案】 k = i; (二)功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 #include "conio.h" #include "stdio.h" long fun ( int n ) { long a=1, b=1, c=1, d=1, k; /**********ERROR**********/ for (k=4; kc语言程序改错题
C语言程序改错及填空题
c语言程序改错
C语言程序改错2
C语言程序改错题
程序改错完整版---C语言
齐齐哈尔大学C语言题库 程序改错(部分)