初学者关于两段C程序的问题请教
1.以下程序是在网上看到的,说的是根据所输入的成绩输出对应的成绩等级。我在看了这段程序后想到了另外一个问题,假如我输入的成绩为101到109之间的正数的的话,也会得到“优秀”输出结果,但是实际上学生成绩是0到100之间的整数(这里小数忽略不计),所以我就想到了用if else的控制结构,想把整个switch语句作为if语句执行,后续的input error作为else语句输出,但是不知道是我操作失误还是不能这样操作,最后运行失败,另外也想到了用goto去控制switch语句,不知道那样的话是否可行,如果可行的话,该如何自定义函数呢?(对于此疑问欢迎不同解决方案)#include <stdio.h>
main()
{
int score;
scanf("%d",&score);
getchar();
switch(score/10)
{
case 10:printf("优秀\n");getchar();break;
case 9:printf("优秀\n");getchar();break;
case 8:printf("良好\n");getchar();break;
case 7:printf("中等\n");getchar();break;
case 6:printf("及格\n");getchar();break;
case 5:printf("不及格\n");getchar();break;
case 4:printf("不及格\n");getchar();break;
case 3:printf("不及格\n");getchar();break;
case 2:printf("不及格\n");getchar();break;
case 1:printf("不及格\n");getchar();break;
case 0:printf("不及格\n");getchar();break;
default:printf("input error");getchar();
}
}
2.以下是简单的if else示例,网上视频中与以下有一个不同的地方,就是将主函数main()写成void main(),它用的是TC的编译器,我自己练习用的是Dev C++的编译器,但是如果我照它那样用void main()就无法运行,将main()前面的void去掉后就可以运行,我想知道这是编译器的区别造成的吗?如果是的话,void一般放在主函数前是啥意思呢?
#include<stdio.h>
main()
{
int a=5,b=4,c=3;
int s,t;
if(a>b>c)
s=a;
else
s=0;
t=(a-c>c+2==0);
printf("s=%d,t=%d\n",s,t);
getchar();
}