switch(表达式) //表达式必须为整数类型,包括字符型
{
case 常量表达式1: 语句1; break;
case 常量表达式2: 语句2; break;
....
case 常量表达式n: 语句n; break;
default: 语句n+1
}
要求按照考试成绩的等级输出百分制分数段,A等为90分以上,B等为70~89分,c等为60一69分,D等为60分以下。成绩的等级由键盘输入。
#include <stdio.h>
void main() {
char grade;
scanf_s("%c", &grade);
switch (grade)
{
case 'A': printf("90分以上\n"); break;
case 'B': printf("70-89分\n"); break;
case 'C': printf("60-79分\n"); break;
case 'D': printf("60分以下\n"); break;
default:
printf("输入错误!\n");
}
}
例2:按照输入的百分制分数,打印相应的评语。要求:用switch语句实现。
#include <stdio.h>
void main() {
float score;
scanf_s("%f", &score);
switch ((int)(score/10))
{ // case后面只能是常量表达式值,不能是关系表达式
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: printf("不及格\n"); break;
case 6: printf("及格\n"); break;
case 7: printf("中等\n"); break;
case 8: printf("良好\n"); break;
case 9:
case 10: printf("优秀\n"); break;
default:
printf("输入错误!\n");
}
}
从键盘输入一个年份,判断是否是闰年,将结果输出到控制台
#include <stdio.h>
void main()
{
int year, leap;
scanf_s("%d", &year);
if (year % 4 == 0)
if (year % 100 == 0)
if (year % 400 == 0)
leap = 1;
else leap = 0;
else leap = 1;
else leap = 0;
switch (leap) {
case 1: printf("%d是闰年\n", year); break;
case 0: printf("%d不是闰年\n", year); break;
}
}
求 ax² + bx + c = 0 方程的解。
a = 0
不是二次方程b² -4ac = 0
有两个相等实根b² -4ac > 0
有两个不等实根。b² -4ac < 0
有两个共辄复根。#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,disc,x1,x2,realpart,imagpart;
scanf_s("%f %f %f", &a, &b, &c);
if (fabs(a) <= 1e-6)
printf("这个方程不是一元二次方程\n");
else
{
disc = b * b - 4*(a * c);
if (fabs(disc) <= 1e-6)
printf("方程有两相同的实数根为%.2f\n", -b /(2 * a));
else if (disc > 1e-6) {
x1 = (-b + sqrt(disc)) / (2 * a);
x2 = (-b - sqrt(disc)) / (2 * a);
printf("方程有两不同的实数根为 x1=%.2f x2=%.2f\n",x1,x2);
}
else
{
realpart = -b / (2 * a);
imagpart = sqrt(-disc)/ (2 * a);
printf("方程有两个共辄复根\n %.2f+%.2fi\n", realpart, imagpart);
printf(" %.2f-%.2fi\n", realpart, imagpart);
}
}
}
10^-6
如果小于此数,就认为a等于0。)