C语言编程改错完善
程序设计1./*-【程序设计】-功能:能计算从1开始到n的自然数的和,n由键盘输入, 并在main()函数中输出。-*/#include "stdio.h" int fun(int n) /*Begin*/ /* End */ main() int m; void TestFunc(); printf("Enter m: "); scanf("%d", &m); printf("nThe result is %dn", fun(m); TestFunc(); void TestFunc() FILE *IN,*OUT; int t; int o; int c; 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(c=1;c<=5;c+) fscanf(IN,"%d",&t); o=fun(t); fprintf(OUT,"%dn",o); fclose(IN); fclose(OUT);2. /*-【程序设计】-功能:调用函数fun判断一个三位数是否"水仙花数"。 在main函数中从键盘输入一个三位数,并输 出判断结果。请编写fun函数。说明:所谓"水仙花数"是指一3位数,其各位数字立方和 等于该数本身。例如:153是一个水仙花数,因为153=1+125+27。-*/#include "stdio.h" int fun(int n) /*Begin*/ /* End */ TestFunc() FILE *IN,*OUT; int iIN,i; int iOUT; IN=fopen("in.dat","r"); if(IN=NULL) printf("Please Verify The Currernt Dir.It May Be Changed"); OUT=fopen("out.dat","w"); if(OUT=NULL) printf("Please Verify The Current Dir. It May Be Changed"); for(i=0;i<10;i+) fscanf(IN,"%d",&iIN); iOUT=fun(iIN); fprintf(OUT,"%dn",iOUT); fclose(IN); fclose(OUT);main() int n,flag; scanf("%d",&n); flag=fun(n); if(flag) printf("%d 是水仙花数n",n); else printf("%d 不是水仙花数n",n); TestFunc();答案1. int sum=0,i;for(i=1;i<=n;i+) sum=sum+i;return(sum);2.int bw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10; if(n=bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1; else return 0;程序改错1. /*- 【程序改错】-功能:有一数组内放10个整数,要求找出最小数和它的下标,然后 把它和数组中最前面的元素即第一个数对换位置.-*/#include "stdio.h"main( ) int i,a10,min,k=0; printf("n please input array 10 elementsn"); for(i=0;i<10;i+) /*ERROR*/ scanf("%d", ai); for(i=0;i<10;i+) printf("%d",ai); min=a0; /*ERROR*/ for(i=3;i<10;i+) /*ERROR*/ if(ai>min) min=ai; k=i; /*ERROR*/ ak=ai; a0=min; printf("n after eschange:n"); for(i=0;i<10;i+) printf("%d",ai); printf("nk=%dnmin=%dn",k,min);2. /*- 【程序改错】-功能:以下程序把两个数按由大到小的顺序输出来.-*/#include "stdio.h"/*ERROR*/void swap( int *p1,*p2) int p; p=*p1; *p1=*p2; *p2=p;main( ) int a,b, *p,*q; printf("input a,b:"); /*ERROR*/ scanf("%d%d",a,b); p=&a; q=&b; if(a<b) swap(p,q); printf("a=%d,b=%dn",a,b); /*ERROR*/ printf("max=%d,min=%dn",p,q);答案1.改错1.scanf("%d",&ai);改错2.for(i=1;i<10;i+)for(i=0;i<10;i+)for(i=1;i<=9;i+)for(i=0;i<=9;i+)改错3.if(ai<min)改错4.ak=a0;2.改错1.swap( int *p1,int *p2)void swap( int *p1,int *p2)改错2.scanf("%d%d",&a,&b);改错3.printf("max=%d,min=%dn",*p,*q);printf("max=%d,min=%dn",a,b);程序填空1. /*-【程序填空】-题目:本程序的功能是输入一段数字后,将输出的数字颠倒输出。 请填空。-*/#include "stdio.h"main() int numb,rdigit; scanf("%d",&numb); /*FILL*/ while(_) rdigit=numb%10; /*FILL*/ printf("%d",_); numb/=10; printf("n");2. /*-【程序填空】-题目:本程序用printf函数输出字符串"I am student",完善程序。-*/#include "stdio.h"main() int i; char *s1="I am student" /*FILL*/ for(i=0;s1i!=_;i+) /*FILL*/ printf("_", s1i); 答案1空1.numb!=0numb空2.rdigit2.空1.'0'空2.%c