本人英语学得不好,有个单词拼错了,不好意思啊!
prosess应改为:process
我不知楼主学c语言多少时间 首先这个程序写的很不规范(下面的源程序我没有改动,只是规范了一下),可读 性不好,做为一个程序,设计出来是给用户用的,不能用你的想法去想用户,下面 的红字是指出的错误(先不说代码的逻辑错误),程序要有一定的健壮性和容错性 要充分想到有可能的意外情况,并予以处理才能是一个好的程序. 至于c=getchar();,输入流中剩余的字符可以用 while(getchar()!='\n') continue; 来剔除
#include<Stdio.h> int a[100],n; char c='y'; main() { void sort(int a[],int n); void sum(int a[],int n); void max(int a[],int n); int i,j;
printf("\nthe number total n="); //没有做输入检查,如果输入非数字或小于等于0或大于等于100时就会出错 scanf("%d",&n); printf("please input the %d numbers:\n",n); for(i=1;i<=n;i++) //这也没有做输入检查 scanf("%d",&a[i]); printf(" the data process system\n"); printf("1:find the max:\n"); printf("2:sort:\n"); printf("3:sum:\n"); while(c=='y') { while(1) { printf("please choose :"); //这也没有做输入检查 scanf("%d",&j); if(j>=1&&j<=3) break; else printf("input error!\n"); } switch(j) { case 1: max(a,n); break; case 2: sort(a,n); break; case 3: sum(a,n); } printf("do you want continue(y/n?):"); c=getchar(); } }
//这里应为void max(int a[],int n) void max(int a[100],int n) { int i,t; //前面下标是从1开始,请问这里的a[0]是多少 t=a[0]; for(i=1;i<=n;i++) if(t<a[i]) t=a[i]; printf("the max=%d\n",t); c=getchar(); }
void sort(int a[],int n) { int i,j,t;
for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } for(i=1;i<=n;i++) { if(i%8==0) printf("\n"); printf("%8d",a[i]); } printf("\n"); c=getchar(); }
void sum(int a[],int n) { int i,s=0;
for(i=1;i<=n;i++) s=s+a[i]; printf("the sum=%d\n",s); c=getchar(); }