考你IQ的程序题
初学C语言时,一般会遇到这样的题目。要求:输入0-100的分数,小于60的则输出“不及格”,大于60小于等于70的输出“一般”,70-80的输出“良好”,80以上的输出“优秀”。
现在加上条件:不得用if,switch来实现,想想怎么办?
考考IQ,有空的就做做看,只要符合要求,可以不择手段。
用三目运算符 ?:
用三目运算符 ?: 嵌套用三目运算符,一个不错的方法。楼下继续。。。 main()
{float score;
char grade;
printf("");
scanf("%f",&score);
switch((int)(score/10))
{case 10:
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';
}
printf("%5.1f,%c,\n",score,grade);
} 楼上的用了switch 用java写:
String level ;//等级
int score;//分数
//处理输入,略。
level= score>=60?"一般":"不及格";
level= score>=70?"良好":level;
level= score>=80?"优秀":level;
level= score>100||score<0?"出错":level; 4楼没看清题目!
楼上什么都用JAVA的说。
楼下继续。。。 呵呵
眼大睇过笼~ level="不及格";
level="一般";
level="良好";
level="优秀";
level="优秀";
level="优秀";
k=scroe/10;
printf("%s",level); 楼上这个方法和我想的一样!
我还有个方法,可能很快也有人想出来了.
楼下继续...... 用MOD. MOD是求模吗?
不懂,可不可以详细点. 顶上来,明天考完试尽可能多地想出些方法来。
楼下继续。。。 没人玩了。
方法一,用 while 加 break;
方法二,用 for 加 goto
暂时没了。 感觉C++中非面向对象的部分都属于C 楼主的第二个方法似乎很不安全. 原帖由 needyou 于 2006-10-2 00:21 发表
楼主的第二个方法似乎很不安全.
这个测试只是用来玩玩的,为达目的不择手段.
是不是因为用到 goto ,让人觉得不安全。其实我也没有在实际中用过 goto 想到用while来写,可惜没有耐心想下去。
页:
[1]