正文

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);

阅读(4699) | 评论(0)


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

评论

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