c语言程序改错题
【程序改错】
功能:根据整型形参m的值,计算如下公式的值。
1 1 1
t = 1- —— - —— - ... - ——
2x2 3x3 mxm
例如:若m=5,则应输出:0.536389
------------------------------------------------------*/
#include
double fun(int m)
{
double y=1.0;
int i;
/**********FOUND**********/
for(i=2;i y-=1/(i*i); y-=1.0/(i*i) /**********FOUND**********/ return m; return y } main() { int n=5; printf("\nthe result is %lf\n",fun(n)); } 【程序设计】 --------------------------------------------------------- 题目:编程求所有4位数,这些数具有以下特点:这数本身是平方数,且其低2位和高2位所组成的2个2位数也是平方数。 要求:使用程序中定义的变量 -------------------------------------------------------*/ #include #include main(){ int qw,bw,sw,gw; // qw千位数bw百位数sw十位数gw个位数 int a,b; //a 高两位低两数 int i; //循环变量 /**********Program**********/ for(i=1000;i<10000;i++) { qw=i/1000; bw=i/100%10; sw=i/10%10; gw=i%10; 1 a=qw*10+bw; b=sw*10+gw; if(sqrt(i)==(int)sqrt(i)&&sqrt(a)==(int)sqrt(a)&&sqrt(b)==(int)sqrt(b)) printf(“%d\n”,i); } /********** End **********/ }【程序设计】 功能:从键盘为一维整型数组输入10个整数,调用fun 函 数找出其中最小的数,并在main函数中输出。。 ------------------------------------------------*/ #include "stdio.h" void wwjt(); int fun(int x[],int n) { /**********Program**********/ int z,k; z=x[0]; for(k=1;k if(z>x[k])z=x[k]; return(z); /********** End **********/ } void main(){ int a[10],i,min; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); min=fun(a,10); printf("%d\n",min); wwjt(); } void wwjt() { FILE *IN,*OUT; int in[4],out; IN=fopen("in.dat","r"); if(IN==NULL) printf("Read FILE Error"); OUT=fopen("out.dat","w"); if(OUT==NULL) printf("Write FILE Error"); for(int j=0;j<5;j++) { for(int i=0;i<4;i++) { 2 fscanf(IN,"%d",&in[i]); } out=fun(in,4); fprintf(OUT,"%d\n",out); } fclose(IN); fclose(OUT); } 【程序设计】 --------------------------------------------------------- 题目:求Sn=a+aa+aaa+……+aa…a之值,其a中代表1到9中的一个数字。例如:a代表2, 则求2+22+222+2222+22222(此时n=5),a和n由键盘输入。 -------------------------------------------------------*/ #include void wwjt(); int fun(int a,int n) { int t=a,i,s; /* t 表示每个项*/ /**********Program**********/ s=0; for(i=1;i<=n;i++) { s=s+t; t=t*10+a; } return s; /********** End **********/ } void main( ) { int a, n, s ; printf("输入a和n的值:"); scanf("%d%d", &a, &n) ; printf("a=%d, n=%d:\n", a, n) ; s=fun(a,n); printf("a+aa+aaa+...+aa..a=%d\n", s); wwjt(); } void wwjt() { FILE *IN,*OUT; int j; 3 inta,n; IN=fopen("in.dat","r"); if(IN==NULL) { printf("Please Verify The CurrerntDir..It May Be Changed"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Please Verify The Current Dir.. It May Be Changed"); } for(j=0;j<3;j++) { fscanf(IN,"%d",&a); fscanf(IN,"%d",&n); fprintf(OUT,"%d\n",fun(a,n)); } fclose(IN); fclose(OUT); } 【程序设计】 --------------------------------------------------------- 题目:已知某班5名学生的三门课成绩。试编写程序,输入这5个学生的三门课成绩 a[5][3],输出每门课成绩的平均分vag[3]。 #include void main( ) { /**********Program**********/ int a[5][3]; float vag[3]; int i,j; for(i=0;i<5;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<5;i++) { for(j=0;j<3;j++) printf("%3d",a[i][j]); printf("\n"); } for(j=0;j<3;j++) vag[j]=0; for(i=0;i<5;i++) for(j=0;j<3;j++) vag[j]=vag[j]+a[i][j]/5.0; for(i=0;i<3;i++) printf("%.2f\n",vag[i]); /********** End **********/ } 4 【程序改错】 功能:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置. #include main( ) { int i,a[10],min,k=0; printf("\n please input array 10 elements\n"); for(i=0;i<10;i++) /***********FOUND***********/ scanf("%d", a[i]); scanf("%d", &a[i]); for(i=0;i<10;i++) printf("%d",a[i]); min=a[0]; /***********FOUND***********/ for(i=3;i<10;i++) for(i=1;i<10;i++) /***********FOUND***********/ if(a[i]>min) if(a[i] { min=a[i]; k=i; } /***********FOUND***********/ a[k]=a[i]; a[k]=a[0]; a[0]=min; printf("\n after eschange:\n"); for(i=0;i<10;i++) printf("%d",a[i]); printf("\nk=%d\nmin=%d\n",k,min); } 【程序填空】 功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作 为终止标记。 #include main() { int x,i=0,j=0; float s1=0,s2=0,av1,av2; scanf("%d",&x); /***********SPACE***********/ while(【?】) x!=0 { if(x%2==0) { s1=s1+x; i++; } /***********SPACE***********/ 【?】if(x%2==1) { s2=s2+x; j++; 5 } /***********SPACE***********/ 【?】; scanf("%d",&x); } if(i!=0) av1=s1/i; else av1=0; if(j!=0) /***********SPACE***********/ 【?】; av2=s2/j else av2=0; printf("oushujunzhi:%7.2f,jishujunzhi:%7.2f\n",av1,av2); } 【程序改错】 功能:根据整型形参m,计算某一数据项的值。 y = 1/(100*100)+1/(200*200)+1/(300*300)+ …… +1/(m*m)例如:若m = 2000,则应输出:0.000160。 #include #include /**********FOUND**********/ fun ( int m ) float fun ( int m ) { double y = 0, d ; int i ; /**********FOUND**********/ for( i = 100, i <= m, i += 100 ) for( i = 100; i <= m; i += 100 ) { d = (double)i * (double)i ; /**********FOUND**********/ y += 1.0 \ d ; y += 1.0/d ; } return( y ) ; } main( ) { int n = 2000 ; printf( "\nThe result is %lf\n", fun ( n ) ) ; } 【程序填空】题目:求100以内个位数为6且能够被3整除的所有数 #include void main() { Int i,j; /***********SPACE***********/ for(i=0;【?】;i++) i<=9 { j=i*10+6; /***********SPACE***********/ if(【?】) j%3!=0 6 continue; printf("%d\t",j); } } 【程序填空】 --------------------------------------------------------- 功能:下面程序的功能是用do-while语句求1至1000之间满足"用3除余2;且用5除余3"的数,且一行只打印五个数。 -------------------------------------------------------*/ #include main() { int i=1,j=0; do{ /***********SPACE***********/ if(【?】) i%3==2&&i%5==3 { printf("%4d",i); j=j+1; /***********SPACE***********/ if(【?】) printf("\n"); j%5==0 } i=i+1; }while(i<1000); } 【程序填空】 题目:下列程序从键盘输入所需数据,求出z的值并输出,要求输出结果保留2位小数。 #include /***********SPACE***********/ 【?】#include main() { int x; double y,z; /***********SPACE***********/ scanf("【?】",&x,&y); %d%lf z=2*x*sqrt(y); /***********SPACE***********/ printf("z=【?】",z); %lf } 【程序改错】功能:实现3行3列矩阵的转置,即行列互换。 #include fun(int a[3][3],int n) { Int i,j,t; for(i=0;i for(j=0;j 7 /**********FOUND**********/ scanf("%d",a[i][j]); scanf("%d",&a[i][j]); for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } for(i=0;i /**********FOUND**********/ for(j=0;j /**********FOUND**********/ a[i][j]=t; t=a[i][j]; a[i][j]=a[j][i]; /**********FOUND**********/ t=a[j][i]; a[j][i]=t; } for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } main() { int b[3][3]; fun(b,3); } 【程序改错】功能:实现两个字符串的连接。 例如:输入dfdfqe和12345时,则输出dfdfqe12345. #include main() { char s1[80],s2[80]; void scat(char s1[],char s2[]); gets(s1); gets(s2); scat(s1,s2); puts(s1); } void scat (char s1[],char s2[]) { int i=0,j=0; /**********FOUND**********/ while(s1[i]=='\0') while(s1[i]!='\0') i++; /**********FOUND**********/ while(s2[j]=='\0') while(s2[j]!='\0') { 8 /**********FOUND**********/ s2[j]=s1[i]; s1[i]=s2[j]; i++; j++; } /**********FOUND**********/ s2[j]='\0'; s1[i]='\0'; } 【程序填空】 功能:下面的程序是求1!+3!+5!+……+n!的和。#include main(){ long int f,s; int i,j,n; /***********SPACE***********/ 【?】; s=0 scanf("%d",&n); /***********SPACE***********/ for(i=1;i<=n; 【?】) { i+=2 f=1; /***********SPACE***********/ for(j=1; 【?】;j++) j<=i /***********SPACE***********/ 【?】; f=f*j s=s+f; } printf("n=%d,s=%ld\n",n,s); } 9 程序改错------------------------------------- 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语言题库 程序改错(部分)