y);max=x;/**********FOUND(3)*********" />
第七次作业
——程序改错
完成实验教程《C语言程序设计上机指导与习题》中的程序改错题:一、P155——四、程序改错
1.从键盘输入两个整数,求出较大数并输出。
main()
{ int x,y,max;
/**********FOUND(1)**********/
printf("%d %d",&x,&y);
/**********FOUND(2)**********/
if(x>y);
max=x;
/**********FOUND(3)**********/
else(x<=y)
/**********FOUND(4)**********/
y=max;
printf("max=%d\n",max);
}
2.从键盘输入一个实数,求其绝对值并输出。
main()
{
/**********FOUND(1)**********/
int x,y;
/**********FOUND(2)**********/
scanf("%f",&x)
if(x>=0)
/**********FOUND(3)**********/
y=-x;
else
/**********FOUND(4)**********/
y=x;
printf("y=%f\n",y);
}
3.从键盘输入x的值,求y的值并输出。main()
{/**********FOUND(1)**********/
float x;
scanf("%f",&x);
/**********FOUND(2)**********/
if(x>0);
y=1;
/**********FOUND(3)**********/
else if(x=0)
y=0;
else
y=-1;
/**********FOUND(4)**********/ printf("y=%f\n",x);
}
二、P166——四、程序改错
1.求1+4+7+……+100之和。
main()
{int s,i;
s=0;
/**********FOUND(1)**********/
i=0;
/**********FOUND(2)**********/
while(i<100)
{s=s+i;
/**********FOUND(3)**********/
i+=1;
}
/**********FOUND(4)**********/
printf("s=%f\n",s);
}
2.求1到100之间的奇数之和与偶数之和。
main()
{int s1,s2,i;
/**********FOUND(1)**********/
s1=s2;
for(i=1;i<=100;i++)
{/**********FOUND(2)**********/
if(i/2==1)
/**********FOUND(3)**********/
s1=i; /*奇数之和*/
/**********FOUND(4)**********/
else if
s2=s2+i; /*偶数之和*/
}
printf("s1=%d,s2=%d\n",s1,s2);
}
3.用循环程序求10的阶乘。
main()
{/**********FOUND(1)**********/
int p;
int i;
/**********FOUND(2)**********/
p=0;
/**********FOUND(3)**********/
for(i=0;i<=10;i++)
/**********FOUND(4)**********/
p*i;
printf("p=%ld\n",p);
}
4.求1*3*5*...*19之积。
main()
{/**********FOUND(1)**********/
int p;
int i;
/**********FOUND(2)**********/
p=0;
/**********FOUND(3)**********/
for(i=1;i<=19;i++)
p=p*i;
/**********FOUND(4)**********/
printf("p=%d\n",p);
}
5.从键盘输入一个正整数n,求1+2+3+...+n之和并输出。
main()
{
int i,n;
long s;
/**********FOUND(1)**********/
s=1;
/**********FOUND(2)**********/
scanf("%d",n);
/**********FOUND(3)**********/
for(i=1;i<=n;++i)
s=s+i;
/**********FOUND(4)**********/
printf("s=%d\n",s);
}
三、P171——四、程序改错
1.在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
注意:不可以增加或删除程序行,也不可以更改程序的结构。
#define N 11
main()
{int i,j,t,number,a[N]={21,22,44,46,47,49,112,115,149,156};
printf("please enter an integer to insert in the array:\n");
scanf("%d",&number);
printf("The original array:\n");
for(i=0;i printf("%5d",a[i]); printf("\n"); for(i=N-2;i>=0;i--) /**********FOUND(1)**********/ if(number /**********FOUND(2)**********/ a[i-1]=a[i]; else { /**********FOUND(3)**********/ a[i]=number; /**********FOUND(4)**********/ continue; } if(number a[0]=number; printf("The result array:\n"); for(i=0;i printf("%5d",a[i]); printf("\n"); } 2.fun函数的功能是:实现3行3列矩阵的转置,即行列互换。 请改正程序中的错误,使它能得出正确的结果。 fun(int a[3][3],int m,int n) { int i,j,t; for(i=0;i for(j=0;j /**********FOUND(1)**********/ 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(2)**********/ for(j=0;j { t=a[i][j]; a[j][i]=a[i][j]; a[j][i]=t; } for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } main() {/**********FOUND(4)**********/ int b[2][2]; fun(b,3,3); } 3.有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置. main( ) { int i,a[10],min,k=0; printf("\n please input array 10 elements\n"); for(i=0;i<=10;i++) scanf("%d", &a[i]); for(i=0;i<10;i++) printf("%d",a[i]); min=a[0]; for(i=1;i<10;i++) /**********FOUND(2)**********/ if(a[i]>min) { min=a[i]; k=i; } /**********FOUND(3)**********/ a[k]=a[i]; a[0]=min; printf("\n after eschange:\n"); /**********FOUND(4)**********/ for(i=1;i<10;i++) printf("%d",a[i]); printf("\nk=%d\nmin=%d\n",k,min); } 4.输入5个字符串,将其中最小的打印出来。 main() { /**********FOUND(1)**********/ int str[10],temp[10]; int i; /**********FOUND(2)**********/ gets(&temp); for(i=0;i<4;i++) { gets(str); if(strcmp(temp,str)>0) /**********FOUND(3)**********/ strcpy(str,temp); } /**********FOUND(4)**********/ printf("\nThe first string is:%s\n",temp[10]); } 5.统计一行语句中的单词数。 #include "stdio.h" main() { int i,c,num=0,word=0;char string[81]; gets(string); /**********FOUND(1)**********/ for(i=0;(c=string[i])=='\0';i++); /**********FOUND(2)**********/ if(c=32) word=0; /**********FOUND(3)**********/ else if(word=0) { /**********FOUND(4)**********/ word=0; num++; } printf("there are %d words in the line\n",num); } 四、P179——四、程序改错 1. 题目:函数fun 的功能是:根据整型形参m 的值,计算如下 公式的值。 m m t ?-?-?- =1 ... 3312211 例如,若m=5,则应输出:0.536389 请改正程序中的错误,使它能得出正确的结果。 注意:不可以增加或删除程序行,也不可以更改程序的结构。 double fun(int m) {/**********FOUND(1)**********/ double y=1; int i; for(i=2;i<=m;i++) /**********FOUND(2)**********/ y-=1/(i*i); /**********FOUND(3)**********/ return m; } main() {int n=5; /**********FOUND(4)**********/ printf("\nthe result is %lf\n",fun); } 2.题目:函数scopy的功能是:将一个字符串前面n个子字符送到一个字符型数组中去,然后再加上一个'\0'。不用系统提供的函数strcpy。 请改正程序中的2个错误,使它能得出正确的结果。 注意:不可以增加或删除程序行,也不可以更改程序的结构。 /**********FOUND(1)**********/ void scopy(str1[],str2[],int n) { int i; for(i=0;i str1[i]=str2[i]; /**********FOUND(2)**********/ str2[n]='\0'; } main( ) { char str1[30]; int n; /**********FOUND(3)**********/ char str2[]=I am a student; scanf("%d",&n); scopy(str1,str2,n); /**********FOUND(4)**********/ printf("\n%d",str1); } 3.题目:编写函数fun求整数n以内(不包括n)3的倍数之和, 在main函数中由键盘输入n值,并输出运算结果。 例如:若n值为500时,则结果为41583。 请改正程序中的错误,使它能得出正确的结果。 注意:不可以增加或删除程序行,也不可以更改程序的结构。 #include /**********FOUND(1)**********/ fun(int n) { int i; long int s=0; /**********FOUND(2)**********/ for(i=1;i<=n;i++) if(i%3==0) s+=i; /**********FOUND(3)**********/ return n; } void main() { int n; long int result; printf("Enter n: "); scanf("%d",&n); /**********FOUND(4)**********/ result=fun(s); printf("Result=%ld\n",result); } 4.题目:fun函数的功能是:实现两个字符串的连接。 例如:输入dfdfqe和12345时,则输出dfdfqe12345. 请改正程序中的错误,使它能得出正确的结果。 注意:不可以增加或删除程序行,也不可以更改程序的结构。 main() { /**********FOUND(1)**********/ string 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[]) { /**********FOUND(2)**********/ int i,j; while(s1[i]!='\0') i++; while(s2[j]!='\0') { /**********FOUND(3)**********/ s2[j]=s1[i]; i++; j++; } /**********FOUND(4)**********/ s1[i]=\0; } 程序改错------------------------------------- 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语言题库 程序改错(部分)