首页 > 用户发贴区 > 编程问题提问区 > [求助]C语言初学遇到障碍,麻烦好心坛友们看看
2008
09-07

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

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

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

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

         根据这些,怎么改进….

 #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”);  
    }
}


[求助]C语言初学遇到障碍,麻烦好心坛友们看看》有 9 条评论

  1. 蓝芽168 说:

    用if

    else

    语句

  2. whos 说:

    当然是用switch语句了

  3. whos 说:

    #include “stdio.h”
    int main()
    {
    int s;
    scanf(“%d”,&s);
    if(s>100||s<0)
    printf(“error\n”);
    else
    {
    switch(s/10)
    {
    case 10:printf(“outstanding\n”);break;
    case 9:printf(“outstanding\n”);break;
    case 8:printf(“good\n”);break;
    case 7:printf(“general\n”);break;
    case 6:printf(“pass the test\n”);break;
    default:printf(“fail\n”);break;
    }
    }
    return 0;
    }

  4. liyaoxin 说:

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

  5. m13554550158 说:

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

    这个判断部分前面半段的判断是多余的

  6. xstar 说:

    [QUOTE=whos] [P]#include “stdio.h”int main(){int s;scanf(“%d”,&s);if(s>100||s<0)printf(“error\n”);else{switch(s/10){case 10:printf(“outstanding\n”);break;case 9:printf(“outstanding\n”);break;case 8:printf(“good\n”);break;case 7:printf(“general\n”);break;case 6:printf(“pass the test\n”);break;default:printf(“fail\n”);break;}}return 0;}[/P][/QUOTE]

    改进型

    [code]

    #include <stdio.h>

    #include <stdlib.h>

    char *S[ 11 ] = {

      "不及格", /* 0 */

      "不及格", /* 1 */

      "不及格", /* 2 */

      "不及格", /* 3 */

      "不及格", /* 4 */

      "不及格", /* 5 */

      "及格",  /* 6 */

      "一般",  /* 7 */

      "良好",  /* 8 */

      "优秀",  /* 9 */

      "优秀"  /* 10 */

    };

    int main()

    {

      int s;

       printf( "输入分数: " );

      scanf( "%d", &s );

      if ((s > 100) || (s < 0))

      {

        printf( "超出范围[ 0 - 100 ]: %d\n", s );

        return -1;

      }

      printf( "分数: %d => %s\n", s, S[ s / 10 ] );

      return 0;

    }

    [/code]

  7. liyaoxin 说:

    [QUOTE=xstar] [QUOTE=whos] [P]#include “stdio.h”int main(){int s;scanf(“%d”,&s);if(s>100||s<0)printf(“error\n”);else{switch(s/10){case 10:printf(“outstanding\n”);break;case 9:printf(“outstanding\n”);break;case 8:printf(“good\n”);break;case 7:printf(“general\n”);break;case 6:printf(“pass the test\n”);break;default:printf(“fail\n”);break;}}return 0;}[/P][/QUOTE]

    改进型

    [code]

    #include <stdio.h>

    #include <stdlib.h>

    char *S[ 11 ] = {

      "不及格", /* 0 */

      "不及格", /* 1 */

      "不及格", /* 2 */

      "不及格", /* 3 */

      "不及格", /* 4 */

      "不及格", /* 5 */

      "及格",  /* 6 */

      "一般",  /* 7 */

      "良好",  /* 8 */

      "优秀",  /* 9 */

      "优秀"  /* 10 */

    };

    int main()

    {

      int s;

       printf( "输入分数: " );

      scanf( "%d", &s );

      if ((s > 100) || (s < 0))

      {

        printf( "超出范围[ 0 - 100 ]: %d\n", s );

        return -1;

      }

      printf( "分数: %d => %s\n", s, S[ s / 10 ] );

      return 0;

    }

    [/code] [/QUOTE]
    谢谢版主大人!

  8. 765650970 说:

     #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”);  
        }
    }

留下一个回复