switch语句输出学生成绩等级?switch编程等级
大家好,今天小编来为大家解答switch语句输出学生成绩等级这个问题,switch编程等级很多人还不知道,现在让我们一起来看看吧!
c语言作业 编写一个输出学生成绩等级的程序
一、首先打开VC++
二、文件》》新建
三、创建一个C++空白文档头文件是必须声明的# include<stdio.h>
四、说下主体思想我们定义一个求每门课平均成绩的函数AverageCourse它的形参一个是二维数组,用来传递学生成绩;一个是指针变量(数组名),存放每门课的平均成绩:
void AverageCourse(float score[][4],float*avg)
{
int i,j;
float sum;
for(i=0;i<4;i++)
{
sum=0;
for(j=0;j<4;j++)
sum+=score[j][i];
avg[i]=sum/4;
}
}
五、之后我们定义一个求总平均成绩的函数AverageAll
它的形参一个是指针变量(数组名),传递一个首地址
n是要计算的成绩个数
float AverageAll(float*score, int n)
{
int i=0;
float sum= 0;
while(i<n)
{
sum+=score[i];
i++;
}
return sum/n;
}
六、我们还需定义一个查询学生成绩的函数AStudentScore
它的形参一个是指向数组的指针,n是要计算的学生号
void StudentScore(float(*score)[4], int n)
{
int i;
for(i=0; i<4; i++)
printf("%4.2f",*(*(score+n)+i));
printf("
");
}
下面是主函数
int main()
{
int num,i;
//定义一个数组aveCourse来存储每门课的平均成绩,
定义变量aveAll来存储总的平均成绩
float aveAll,aveCourse[4];
float score[4][4]={{67, 78, 45, 88},{76, 54, 90, 69},
{99, 45, 88, 99},{98, 69, 77, 87}};//这是成绩,可以用scanf输入,也可以在这里定义
/*调用函数AverageAll求16个分数的平均分*/
aveAll=AverageAll(&score[0][0],16);
printf("The average of all courses is:
%f
",aveAll);
/*调用函数AverageCourse求4门客的平均分*/
AverageCourse(score,aveCourse);
for(i=0;i<4;i++)
printf("The average of%dth course is:
%f
",i,aveCourse[i]);
/*求出序号是num的学生的成绩*/
printf("
Please input the num of student(0-3):
");
scanf("%d",&num);
printf("The score of the%dth student is:
",num);
StudentScore(score,num);
getch();
return 0;
}
七、程序运行结果
求教c语言中switch 语句的详细用法
C语言程序语句switch:
switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择代码。其功能就是控制业务流程流转的。
switch语句的语法如下(switch,case和default是关键字):
switch( controllingExpression)
{
case constantExpression1:
case constantExpression2:
case constantExpression3:
statements;//当满足constantExpression1、constantExpression2、constantExpression3任何一个都执行statements
break;
case constantExpression:
statements;
break;
...
default:
statements;
break;
}
遵守switch语句规则
switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,必须使用if语句。
case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
C语言switch应用例子:
例一:
#include<stdio.h>
int main()
{
double score;
printf("请输入分数:\n");
scanf("%lf",&score);
switch((int)(score/10))//如果写成witch((int)score/10)会出现严重错误
{
case 10:
case 9:printf("A(最好)\n");break;
case 8:printf("B(优秀)\n");break;
case 7:printf("C(良好)\n");break;
case 6:printf("D(及格)\n");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("E(不及格)\n");break;
default:printf("Error!\n");
}
}
例二:
#include<stdio.h>
int main()
{
char rank;
printf("请输入分数等级:(A、B、C、D、E)\n");
scanf("%c",&rank);
switch(rank)//switch((int)score/10)出现严重错误,switch(((int)score)/10)出现严重错误,
{
case'A':printf("A(90~100)\n");break;
case'B':printf("B(80~89)\n");break;
case'C':printf("C(70~79)\n");break;
case'D':printf("D(60~69)\n");break;
case'E':printf("E(0~59)\n");break;
default:printf("error!\n");break;
}
}
例三:
输入年月日,判断这一天是这一年的第几天。
#include<stdio.h>
int main()
{
int year,month,date,leap,days=0;
scanf("%4d%2d%2d",&year,&month,&date);
leap=(year%4==0&&year%100!=0||year%400==0);
switch(month)
{
case 12:days+=30;
case 11:days+=31;
case 10:days+=30;
case 9:days+=31;
case 8:days+=31;
case 7:days+=30;
case 6:days+=31;
case 5:days+=30;
case 4:days+=31;
case 3:days+=28+leap;
case 2:days+=31;
case 1:days+=date;break;
}
printf("%4d年%2d月%2d日是这一年的第%d天。\n",year,month,date,days);
}
希望对你有帮助。
switch case用法举例
Switch case语句一般形式是这样的
在使用switch case的时候一定要注意不要把break给漏写了,如果没有break的活,程序在执行完所对应的代码块后会顺序执行下面的语句直到程序结束或者遇到下一个break为止。当表达式的值和下面哪一个常量相等就会执行那个常量所对应的代码块,如果没有与表达式相等的常量时就会执行default下面的代码块。
当多个常量对应同一个代码块时,我们也可以这样使用switch case。
这样写的话无论你输入的是0还是1它结果都是执行的遇到break之前的代码块。当多种情况对应同一种输出时,把代码块相同的case可以直接放到一起,这样可以有效减少重复代码,节省时间提升开发效率。
同一个Switch语句,所有case子句中的常量值互不相同。
switch case在什么情况中使用比较好呢?
如果判断的具体数值不多,而且符合byte、short、char、int、String、枚举等几种类型时建议使用swtich语句。
执行规则
1.swich后面括号内的'表达式必须是整数类型.也就是说可以是 int型变量、 char型变量,也可以直接是整数或字符常量,哪伯是负数都可以,但绝对不可以是实数, float型变量、double型变量、小数常量通通不行,全部都是语法错误。
2) switich下的 case和 defaut必须用一对大括号{}括起来
你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出swich语句.
3)当switch后面括号内“表达式”的值与某个case后面的"常量表达式"的值相等时.就执行此case后面的语句。执行完一个case后面的语句后,流程控制转移到下一个case缕续执行,如果你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出switch语句。
再重申一下: switch是"选择"语句,不是“循环”语句。很多新手看到break就以为是循环语句,因为break一般给我们的印象都是跳出"循环",但break还有一个用法,就是跳出switch。
4)若所有的 case中的常量表达式的值都没有与 switch后面括号内"表达式的值相等的,就执行 defaul后面的语句, defaut是"默认的意思。知果 defauit是最后一条语句的话,那么其
后就可以不加 break,因为既然已经是最后一句了,则执行完后自然就退出 switch了。
5)每个 case后面"常量表达式"的值必须互不相同,否则就会出现互相矛盾的现象,而且这样写造成语法错误。
6)"case常量表达式只是起语句标号的作用,并不是在该处进行判断。在执行 switch语句时,根据 switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断解。
7)各个 case和 default的出现次序不影响执行结果,但从阅读的角度最好是按字母或数字的顺序写。
关于switch语句输出学生成绩等级的内容到此结束,希望对大家有所帮助。