powerwind 发表于 2006-6-28 11:39

考你IQ的程序题

初学C语言时,一般会遇到这样的题目。
要求:输入0-100的分数,小于60的则输出“不及格”,大于60小于等于70的输出“一般”,70-80的输出“良好”,80以上的输出“优秀”。

现在加上条件:不得用if,switch来实现,想想怎么办?

考考IQ,有空的就做做看,只要符合要求,可以不择手段。

深圳情缘 发表于 2006-6-28 12:15

用三目运算符 ?:

用三目运算符 ?:

powerwind 发表于 2006-6-28 12:25

嵌套用三目运算符,一个不错的方法。
楼下继续。。。

木叶乌鸦 发表于 2006-6-28 14:44

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

wool王 发表于 2006-6-28 16:06

楼上的用了switch

wool王 发表于 2006-6-28 16:12

用java写:

String level ;//等级
int score;//分数

//处理输入,略。

level= score>=60?"一般":"不及格";
level= score>=70?"良好":level;
level= score>=80?"优秀":level;
level= score>100||score<0?"出错":level;

powerwind 发表于 2006-6-28 16:21

4楼没看清题目!
楼上什么都用JAVA的说。
楼下继续。。。

木叶乌鸦 发表于 2006-6-28 16:26

呵呵
眼大睇过笼~

再见型过笼 发表于 2006-6-28 18:10

level="不及格";
level="一般";
level="良好";
level="优秀";
level="优秀";
level="优秀";
k=scroe/10;
printf("%s",level);

powerwind 发表于 2006-6-28 18:16

楼上这个方法和我想的一样!
我还有个方法,可能很快也有人想出来了.
楼下继续......

joe_233 发表于 2006-6-28 20:37

用MOD.

powerwind 发表于 2006-6-28 21:20

MOD是求模吗?
不懂,可不可以详细点.

powerwind 发表于 2006-6-30 00:00

顶上来,明天考完试尽可能多地想出些方法来。
楼下继续。。。

powerwind 发表于 2006-6-30 16:39

没人玩了。

方法一,用 while 加 break;
方法二,用 for 加 goto
暂时没了。

Dave 发表于 2006-7-8 19:05

powerwind 发表于 2006-7-8 19:17

感觉C++中非面向对象的部分都属于C

needyou 发表于 2006-10-2 00:21

楼主的第二个方法似乎很不安全.

powerwind 发表于 2006-10-2 00:34

原帖由 needyou 于 2006-10-2 00:21 发表
楼主的第二个方法似乎很不安全.

这个测试只是用来玩玩的,为达目的不择手段.
是不是因为用到 goto ,让人觉得不安全。其实我也没有在实际中用过 goto

zaijzhgh 发表于 2006-10-2 08:09

想到用while来写,可惜没有耐心想下去。
页: [1]
查看完整版本: 考你IQ的程序题