C语言程序改错练习题
程序改错练习题
下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。
1.求1?2?3?4? ?n
main()
{ int sum; 正确:int sum=1;
int n,i=1;
scanf("%d",n); scanf(“%d”,&n);
printf(“\n”);
while(i { sum=sum*i; i++; } printf("sum=%c",sum); printf("sum=%d",sum); } 2.求一个数组中最大值及其下标。 main( ) { int max,j,m; int a[5]; for(j=1;j<=5;j++) 正确:for(j=0;j<5;j++) scanf(“%d”,a); scanf(“%d”,&a[j]); max=a[0]; for(j=1;j<=5;j++) for(j=0;j<5;j++) if(max>a[j]) if(max { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) printf(“下标:%d\n最大值:%d”, m,max); } 3.用一个函数求两个数之和。 sum(x,y) 正确:float sum(float x, float y ) { float z; z=x+y; return ; return z; } main() { float a,b; int c; float c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); printf("\nSum is %f",c); } 4. x , y两个数中,让x中存较大的数,y存较小的数 #include main( ){ int x , y=200 , z=0; x=180; if ( x z=x; x=y; y=z; 正确:{ z=x;x=y;y=z;} printf(“x=%d,y=%d\n”,&x,&y); printf(“x=%d,y=%d\n”,x,y); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; 正确:int t; *p=*p1;*p1=*p2;*p2=*p; t=*p1;*p1=*p2;*p2=t; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; q1=&a,q2=&b; if(a printf("\n%d,%d\n",q1,q2); printf("\n%d,%d\n",*q1,*q2); } 6. 求100~300间能被3整除的数的和。 main() { int n; sum; for(n=100;n<=300;n++) { if(n%3=0) sum=sum*n; } printf(“%l d ”,sum); } 7. 实现华氏温度转换为摄氏温度,公式为:c= 9 5*(f-32),要求输出结果取2位小数。 main() { int c,f ; printf("Please enter f:"); scanf("%f", &f); c=5/9*(f-32); printf("f=%f,c=%f",c ,f); } 8.下面程序的功能是计算n!。 main() { int i ,n ; int s ; printf("Please enter n:"); scanf("%d", n); for(i=1;i<=n ;i++) ; s=*i ; printf("%d! = %d",i ,s);} 9、求一个4×4矩阵的对角线元素之和 main( ) {int a[4][4], sum=0; int i,j; printf(“Enter data:\n ”); for(i=0;i<=4;I++) for(j=0,j<=4;j++) scanf(“%d ”,&a[i][j]); for(i=0;i<4;I++) for(j=0;j<4;j++) sum=sum+a[i][j]; printf(“sum=%5d\n ”,sum); } 10. 编程计算下面分段函数, 输入x, 输出y ?????>-≤≤-<-=10 1131001201x x x x x x y main() { int x,y; p rintf(“\n Input x:\n”); scanf(“%d”, x); if(x<0) y=x-1; else if(x>=0||x<=10) y=2x-1; else y=3x-1; printf(“y=%d”,&y); } 11. 求表达式ab c =的值 #include #include int fun(int x, int y); main() { int a,b; float f; scanf(“%d,%d ”,a,b); if(ab>0) { f = fun(a,b); printf("The result is:%d\n", &f) } else printf(“error!”);} fun(x, y) { float result; result = sqrt(a+b); return; } 12、通过函数调用,求两个数之差 sub(x,y) { float z; z=x-y; return; } main() { float a,b; int c; scanf(“%f,%f”,&a,&b); c=sub(a,b); printf(“\nSub is %f”,sub); } 13、输入三角形的三边长,求三角形的面积。 #include main( ) {float a,b,c,s,area; scan("%d,%d,%d",a,b,c); s=1.0/2*(a+b+c); area=sqrt(s(s-a)(s-b)(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",&a,&b,&c,&s); printf("area=%7.2f\n",&area) } 14、求和1!+2!+3!+4!+……+20!。 main( ) { float s=0,t=0; int n; for(n=0;n<20;n++) { t=t+n; s=s*t; } printf("1!+2!+3!+4!+……+20!=%d\n",s); } 15. 求一个3×3矩阵的主对角线元素之和 main( ) { int a[3][3]; int sum; int i,j; printf(“Enter data:\n”); for(i=0;i<3;i++) for(j=0,j<3,j++) scanf(“%f”,&a[i][j]); for(i=0;i<3;i++) for(j=0,j<=3;j++) if (i=j) sum +=a[i][j]; printf(“sum=%5d\n”,sum); } 程序改错------------------------------------- 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语言题库 程序改错(部分)