首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于C语言程序中隐秘的异常

2012-05-27 
关于C语言程序中隐秘的错误!一个错误程序# define N 51# define H 123# includestdio.hvoid main(){int

关于C语言程序中隐秘的错误!
一个错误程序
# define N 51
# define H 123
# include<stdio.h>
  void main()
{  
int sum(int b[],int n);
int a[N],b[N],c[N],e[N],i,j,m,h,k,l,p,s,n1,n2,count;
i=1;
l=1;
count=0;
while(1)
{  
printf("输入退出密码:");
if(scanf("%d",&k)==H)
{  
printf("退出!");
break;
}
else
{  
printf("不退出继续!\n");
printf("输入学号:\n");
for(j=1;j<N-1||j==N-1;j++)
{  
scanf("%d",&a[j]);
}
s=sum(a,N-1);
if(s==1)
{  
printf("输入学号重复有误!\n");
break;
}
printf("显示学生学号:\n");
for(j=1;j<N-1||j==N-1;j++)
printf("学号%d)是%d",j,a[j]);
printf("\n");
printf("输入学生成绩:\n");
for(j=1;j<N-1||j==N-1;j++)
{  
scanf("%d",&b[j]);
}
printf("显示学生成绩:\n");
for(j=1;j<N-1||j==N-1;j++)
printf("第%d个成绩是%d",j,b[j]);
for(m=1;m<N-1||m==N-1;m++)
{  
if(b[m]>80||b[m]==80)
{  
c[i++]=b[m];
e[l++]=a[m];
count++;
}
}
if(count==0)
printf("输入成绩都没有达到80!\n");
else
{  
for(h=1;h<count||h==count;h++)
printf("学号是%d学生成绩是%d",e[h],c[h]);
}
printf("\n");
printf("原学号输入:");
scanf("%d",&p);
for(j=1;j<N-1||j==N-1;j++)
{  
if(a[j]==p)
printf("成绩是%d",b[j]);
}
n1=b[j];
switch(n1/10)
{  
case 10: printf("成绩等级是A");break;
case 9: printf("成绩等级是B");break;
case 8: printf("成绩等级是C");break;
case 7: printf("成绩等级是D");break;
case 6: printf("成绩等级是E");break;
case 5: printf("成绩等级是F");break;
case 4: printf("成绩等级是G");break;
case 3: printf("成绩等级是H");break;
case 2: printf("成绩等级是I");break;
case 1: printf("成绩等级是J");break;
case 0: printf("成绩等级是K");break;
}
  printf("\n");
printf("成绩大于等于80的学生的学号输入:");
scanf("%d",&p);
for(j=1;j<l;j++)
{  
if(e[j]==p)
  printf("成绩是%d",c[j]);
}
  n2=c[j];
  switch(n2/10)
{  
case 10: printf("成绩等级是A");break;
case 9: printf("成绩等级是B");break;
case 8: printf("成绩等级是C");break;
}
}
}
int sum(int b[],int n)
{  
int i,j,k,s;
s=0;
for(i=1;i<n;i++)
{  
k=i;
for(j=i+1;j<n||j==n;j++)
{  
if(b[j]==b[k])
{  
s++;
if(s==1)


break;
}
}
if(s==1)
break;
}
return s;
}
请问错在何方?

[解决办法]

C/C++ code
# include<stdio.h># define N 51# define H 123int sum(int b[],int n);void main(){       int sum(int b[],int n);    int a[N],b[N],c[N],e[N],i,j,m,h,k,l,p,s,n1,n2,count;    i=1;    l=1;    count=0;    while(1)    {           printf("输入退出密码:");        if(scanf("%d",&k)==H)        {               printf("退出!");            break;        }        else        {               printf("不退出继续!\n");            printf("输入学号:\n");            for(j=1;j<N-1||j==N-1;j++)            {                   scanf("%d",&a[j]);            }            s=sum(a,N-1);            if(s==1)            {                   printf("输入学号重复有误!\n");                break;            }            printf("显示学生学号:\n");            for(j=1;j<N-1||j==N-1;j++)                printf("学号%d)是%d",j,a[j]);            printf("\n");            printf("输入学生成绩:\n");            for(j=1;j<N-1||j==N-1;j++)            {                   scanf("%d",&b[j]);            }            printf("显示学生成绩:\n");            for(j=1;j<N-1||j==N-1;j++)                printf("第%d个成绩是%d",j,b[j]);            for(m=1;m<N-1||m==N-1;m++)            {                   if(b[m]>80||b[m]==80)                {                       c[i++]=b[m];                    e[l++]=a[m];                    count++;                }            }            if(count==0)                printf("输入成绩都没有达到80!\n");            else            {                   for(h=1;h<count||h==count;h++)                    printf("学号是%d学生成绩是%d",e[h],c[h]);            }            printf("\n");            printf("原学号输入:");            scanf("%d",&p);            for(j=1;j<N-1||j==N-1;j++)            {                   if(a[j]==p)                    printf("成绩是%d",b[j]);            }            n1=b[j];            switch(n1/10)            {               case 10: printf("成绩等级是A");break;            case 9: printf("成绩等级是B");break;            case 8: printf("成绩等级是C");break;            case 7: printf("成绩等级是D");break;            case 6: printf("成绩等级是E");break;            case 5: printf("成绩等级是F");break;            case 4: printf("成绩等级是G");break;            case 3: printf("成绩等级是H");break;            case 2: printf("成绩等级是I");break;            case 1: printf("成绩等级是J");break;            case 0: printf("成绩等级是K");break;            }            printf("\n");            printf("成绩大于等于80的学生的学号输入:");            scanf("%d",&p);            for(j=1;j<l;j++)            {                   if(e[j]==p)                    printf("成绩是%d",c[j]);            }            n2=c[j];            switch(n2/10)            {               case 10: printf("成绩等级是A");break;            case 9: printf("成绩等级是B");break;            case 8: printf("成绩等级是C");break;            }        }    }}int sum(int b[],int n){       int i,j,k,s;    s = 0;    for(i = 1; i < n; i++)    {           k = i;        for(j=i+1;j<n||j==n;j++)        {               if(b[j]==b[k])            {                   s++;                if(s==1)                    break;            }        }        if(s==1)            break;    }    return s;}
[解决办法]
你主函数最后少了一个括号,还有那个sum函数在前面没有申明。
------解决方案--------------------


楼上解决了??
[解决办法]
要不你验证一下?

探讨

楼上解决了??

[解决办法]
验证一下。
[解决办法]
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。

热点排行