写一个程式输入学生的学号(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);

评论