改错练习
1.语法错误
2.缺少头文件
3.函数相关的错误
4.功能是否实现问题
5.指针使用问题
6.循环次数和终止
7.字符型数组和指针存储字符串的时候的差异
程序改错练习、、
1.求1,2,3,4,5,6,….n的乘积
#include
int main()
{ int sum;
int n,i=1;
scanf("%d",n);
printf(“\n”);
while(i { sum=sum*i; i++; } printf("sum=%c",sum); printf("sum=%d",sum); } 2.求一个数组中最大值及其下标。 #include void main() { int max,j,m; int a[5]; for(j=1,j<=5,j++) scanf(“%d”,a); max=a[1]; for(j=1;j<=5;j++) if(max>a[j]) { max=a[j]; m=j; printf(“下标:%d\n最大值:%d”, j, max) printf(“下标:%d\n最大值:%d”, m,max); } 3.用一个函数求两个数之和和之积。 sum(x,y) { float z1,z2; z1=x+y; z2=x*y return z1,z2; } Main() { float a,b; printf(“Input a,b”); scanf(“%d%d”,a,b); printf(“a+b=%d\t a*b=%d\n”,sum(a,b)); } 4. 调用函数swap()实现交换主函数中(实参)变量a,b的值。 #include void swap(float * a, float * b) { float x; x=a,a=b,b=x; } Void main() { float a=10,b=20; swap(a,b); printf(“a=%f/tb=%f\n”,a,b) } 5. 用指针实现变量a的值的输入,输出 #include Void main() { Int a; printf(“Input a:\n”); int *p; scanf(“%d”,p); a=*p; printf(“\n a=%d\n”,&a); } ; 6. 字符串组的输入输出 #include #define M 100 #define N 200; void main() { char print(char *str[],int n); char s[M][N]; char *ps[M]; int I; p=s; for(i=1;i<=M;i++) gets(&ps[i]); print(ps[0]); ] char print(char *str[],int n) { int I; for(i=0;i puts(str++); } 8.调用函数fun()实现字符串组中的所有字符串的连接 #include char *fun(char *pstr) { int I; char *new; for(i=0;i<10;i++) strcat(new,pstr[i]); return(new); } void main() { char *str[]={“I”,”like”,”programming”,”very”,”much”,”!”}; printf(“%s”,fun(str)); } 9.下面程序的功能是对a数组中的元素按从大到小的顺序排序 #include #define N 10; main() { int a[N]={2,17,8,3,24,53,82,1,29,101}; int i,j,k,t; for(i=0;i<9;i++) { k=i; for(j=i+1;j<10;j++) if(a[j] k=j; if(k=i) { t=a[j]; a[j]=a[i]; a[i]=t; } } } 10.下面程序的功能是交换变量a和b中的值 #include main() { int a,b,*p,*q,*t; p=&a; q=&b; printf("请输入变量a和b的值:"); scanf("%d%d", &p,&q); *t=*p ; *p=*q ; *q=*t printf("交换后a和b的值:a=%d b=%d\n",a,b); } 11.假设某袋子中装有3个红球,5个白球,6个黑球,现从该袋子中任意取出8个球,下 面程序的功能是输出这8个球中至少有一个白球的所有方案。 #include main() { int i,j,k; for(i=0;i<=3;i++) for(j=0;j<=5;j++) { k=8-i-j; if(0<=k<=6) printf(“hong=%d\t,bai=%d\t, hei=%d\t\n”,i,j,k); } } 12.以下程序有若干语法错误。 #include struct date { int y;m;d; } struct stu { char n[10]; struct date b; int a; -s=,“Wang”,,1980,11,11-,30-; main() { printf(“%c,%d,%d\n”,s.n,s) } 根据程序写出结果 1.#include main() { int i=16,j,x=6; j=i+++1; x*=i=j; printf(“%d,%d\n”,j,x); } 2. #include int n=1; void main() { void fun(void); static int a=5; int b; b=n; printf(“main_a=%d,b=%d,n=%d\n”,a,b,n); fun(); printf(“main_a=%d,b=%d,n=%d\n”,a,b,n); fun(); } void fun(void) { static int a=6; int b=4; a=a+2; n=n+5; b=b+n; printf(“fun_a=%d,b=%d,n=%d\n”,a,b,n); } 3.#include #include main() { int a=1,b=4,c=2; float x=10.5,y=4.0,z; z=(a+b)/c+sqrt((double)y)*1.2/c+x; printf(“%f\n”,z); } 4.#include void main() { int a,b,c,d; a=c=0; b=1; d=20; if(a) d=d-10; else if(!b) if(!c) d=25; else d=15; printf(“d=%d\n”,d); } 5. #include void main() { int i=10; switch(i){ case 9: i+=1; case 10: i+=1; case 11: i+=1; default : i+=1; } printf(“%d”,i); } 6.#include main() { int a[]={1,2,3,4},i,j,s=0; j=1; for(i=3;i>=0;i--) { s=s+a[i]*j; j=j*10; } printf("s=%d\n",s); } 运行结果: 6.func(int x) { x=20; } main() { int x=10; func(x); printf(“%d”,x); } 7. #include void main() { int i,j; for(i=1; i<=3; i++) { for(j=i; j>=1; j--) print f("* “); printf("\n“); } } 2. #include main() { int a,b,c; scanf("%2d%2d%*2c%2d",&a,&b,&c); printf("%d\n", a+b-c); } 程序执行时从键盘输入:54457766↙ 运行结果是: 3. #include #include main() { char *p=”abcde”,a*20+=”ABC”,*q=a; p+=3; printf(“%s\n”,strcat(q,p)); } 运行结果是: 4. #include int fun() { auto int x=1; static int y=1; x+=2; y+=2; return x+y; } main() { int a,b; a=fun(); b=fun(); printf(“%d,%d\n”,a,b); } 运行结果是: 5. #include main() { int k=0; char c=’A’; do { switch(c++) { case ‘A’: k++; break; case ‘B’: k--; case ‘C’: k+=2; break; case ‘D’: k=k%2; continue; case ‘E’: k=k*10; break; default: k=k/3; } k++; -while(c<’G’); printf(“k=%d\n”,k); } 程序改错------------------------------------- 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 C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); 下列程序是建立一个包含学生有关数据的单向链表。但该程序有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) 程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }c语言程序改错题
C语言程序设计第三版习题库答案
C语言程序改错及填空题
C语言程序设计程序填空题库及答案