liyaoxin 发表于 2008-9-7 15:34

[求助]C语言初学遇到障碍,麻烦好心坛友们看看

下面的成绩查询代码是按老师要求写出来的:
[color=Blue]在90到100之间,输出优秀
在80到90之间,输出良好
在70到80之间,输出一般
在60到70之间,输出及格
60以下输出不及格。
如果输入的成绩在100以上或者0分以下,则输出错误
如果在0~100之间,再根据以上条件输出。[/color]

老师说还能改进,他只说再加上点东西能使这个程序的运算就更简单了,或者说是算法更快了...兄弟们来帮我看看

         我现在只学些简单的C语言,例如[color=Red]%d %f %lf %c或%s printf scanf &&||! <>==!= a++ ++a[/color]

         根据这些,怎么改进....[tk09]

#include <stdio.h>

void main()

{
        int a=0;
        scanf("%d",&a);
        if(a<=100&&a>90)
        {
                printf("优秀\n");  
        }
        if(a<90&&a>=80)
        {
                printf("良好\n");  
        }
        if(a<80&&a>=70)
        {
                printf("一般\n");  
        }
        if(a<70&&a>=60)
        {
                printf("及格\n");  
        }
        if(a<60&&a>0)
        {
                printf("不及格\n");  
        }
        if(a<0||a>100)
        {
                printf("错误\n");  
        }
}

jinqi2016 发表于 2008-9-7 16:36

可用else if就可以了啊

aizhinuo 发表于 2008-9-7 17:06

可以用if先判断输入的分数是否合法
然后在else当中把输入的分数进行一个除以10的整除
然后用选择语句switch语句做分数段的选择就行了.
选择语句应该学过吧

liyanhong 发表于 2008-9-7 17:07

成绩是按概率分步的

twistheart 发表于 2008-9-7 20:27

用switch语句吧。

qfyzy 发表于 2008-9-7 20:45

县判断是否错误,再用switch
switch(a/10){
case 10:
case 9:printf("优秀\n");  break;
case 8:printf("良好\n");  break;
。。。
不过不推荐switch 编译出的代码效率不如if else

liyaoxin 发表于 2008-9-8 08:42

问题解决了,没有诸位说的那么高深..........

老师给出答案是:因为目前我们只学习了if,没学else和swith所以在if里再次套用if....那样算法就更快了
不过谢谢各位的帮助,虽然我目前看不太懂你们说的.不过相信有一天我会和你们一样的,成为编程高手,谢谢大家

页: [1]

编程论坛