正文

if and else if 部分的习题2006-11-30 21:43:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/zean/21110.html

分享到:

写一个程式输入学生的学号(number)于3次考试的成绩(S1,S2,S3),先检查成绩是否为负数,若有负数就 输出**Invalid Data**;如果符合规定,计算平均成绩,并输出信息:         平均成绩                                     消息 ___________________        ___________________ average<60                               Sorry! Retaking 60<=aveage<70                        pass but marginal 70<average                                     Good! _______________________________________________ 第一次编写 main(){ long int number,s1,s2,s3,sum;                          /*我没有注意s1,s2,s3 是浮点数,而number printf("enter your student's ID No.: \n");         不 是,应该用float 另外宣告*/ getch(number); if (number<0) printf("**Invalid Data** \n"); else printf("enter your resort of text: \n"); scanf ("%3.1f,%3.1f,%3.1f \n",s1,s2,s3); sum == (s1+s2+s3)/3;   {  if(sum<60)  printf("Sorry! Retaking \n");  if(sum>=60&&sum<70)  printf("pass but marginal \n");  if(sum>70)  printf("!Good \n");  }} ———————————— 第2次编写 main(){ long int number,s1,s2,s3,sum; printf("enter your student's ID No.: \n"); getch(number);   /* getch 只接受字元,我没有学好,这方面的问题*/ if (number<0) printf("**Invalid Data** \n"); else printf("enter your resort of text: \n"); scanf ("%3.1f,%3.1f,%3.1f \n",s1,s2,s3); sum == (s1+s2+s3)/3;  if(sum<60)  printf("Sorry! Retaking \n");  if(sum>=60&&sum<70)  printf("pass but marginal \n");  if(sum>70)  printf("!Good \n");} ———————————————————— 第3次编写 main(){    long int number;    float s1,s2,s3,sum; /*这里解决了 输入后没有反映就直接跳入的问题*/    printf("enter your student's ID No.: ");    scanf("%d",number);    if (number<0)     printf("enter your resort of text: \n");    else     printf("**Invalid Data** \n");    scanf ("%3.1f,%3.1f,%3.1f \n",s1,s2,s3);    sum == (s1+s2+s3)/3;        if(sum<60)        printf("Sorry! Retaking \n");        if(sum>=60&&sum<70)        printf("pass but marginal \n");        if(sum>70)        printf("!Good \n");        getch();} 明天在接着调试。。。。。。。。由于第2天,一天都无法打开本网站,所以今天晚上(2、12、06)发出。 第4次 main(){    long number;    float s1,s2,s3,sum; /*这里解决了 输入后没有反映就直接跳入的问题*/          printf("enter your student's ID No.: ");          scanf("%d", &number);          printf("enter your resort of text: ");          scanf ("%1f,%1f,%1f \n",s1,s2,s3); /*这里大家注意我的s1,s2,s3于float一样,不应该是这样的,应该取地址,所以,&s1,&s2,&s3 这样,调试的时候出现的 警告s1,s2,s3被提前使用问题得到解决了*/          if (s1>=0&&s2>=0&&s3>=0)        {                     sum = (s1+s2+s3)/3;                   printf("%d sum is %f \n", number , sum);                                          if (sum<60) printf("Sorry! Retaking \n");                  else if (sum>=60&&sum<70) printf("pass but marginal \n");                  else if (sum>70) printf ("!Good \n");        }             else printf("**Invalid Data** \n");        getch();} 第5次 main(){    long number;    float s1,s2,s3,sum; /*这里解决了 输入后没有反映就直接跳入的问题*/          printf("enter your student's ID No.: ");          scanf("%d", &number);          printf("enter your resort of text: ");          scanf ("%1f,%1f,%1f \n",s1,s2,s3);          if (s1>=0&&s2>=0&&s3>=0)        {                     sum = (s1+s2+s3)/3;                   printf("%d sum is %f \n", number , sum);                                          if (sum<60) printf("Sorry! Retaking \n");                  else if (sum>=60&&sum<70) printf("pass but marginal \n");                  else if (sum>70) printf ("!Good \n");        }             else printf("**Invalid Data** \n");        getch();} 感觉还有问题,接着调试,问题现在不在程式的结构了,感觉定义的数据有问题,因为输入2,2,2 回来的结果是。。。。。。。小数 第6次修改 main(){    long int number;    float s1, s2, s3, average;           printf("enter your student's ID No.: ");          scanf("%ld", &number);          printf("enter your resort of text: \n");          scanf ("%f %f %f",&s1,&s2,&s3);          if (s1>=0 && s2>=0 && s3>=0)        {                     average = (s1+s2+s3)/3;                   printf("Student %ld average is %f\n", number , average);                  if (average<60) printf("Sorry! Retaking \n");                  else if (average>=60&&average<70) printf("pass but marginal \n");                  else if (average>70) printf ("!Good \n");        }             else printf("**Invalid Data** \n");        getch();} 这次,应该没有大的问题了! 第5次的问题在: scanf("%d", &number);这句应该是有问题的,因为number是long int 应该用scanf("%ld",&number);当然如果int 跟 long int 大小一样就没事可能是编译器下number溢出了 所以 有两处错误:1. scanf("%d", &number); 改成: scanf("%ld", &number);2.printf("Student %d average is %f\n", number , average);改成:printf("Student %ld average is %f\n", number , average);

阅读(4748) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册