下面的成绩查询代码是按老师要求写出来的:
在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”);
}
}
>> 本文固定链接: http://www.vcgood.com/archives/2707
用if
else
语句
当然是用switch语句了
#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;
}
老师给出答案是:因为目前我们只学习了if,没学else和swith所以在if里再次套用if….那样算法就更快了
不过谢谢各位的帮助,虽然我目前看不太懂你们说的.不过相信有一天我会和你们一样的,成为编程高手,谢谢大家
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”);
}
这个判断部分前面半段的判断是多余的
[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=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]
谢谢版主大人!
#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”);
}
}