c语言作业 老师要求用switch 来判定学生分数等级
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言作业 老师要求用switch 来判定学生分数等级相关的知识,希望对你有一定的参考价值。
如下是我自己写的#include<stdio.h>
#include<conio.h>
int main()
int s,x;
char n[5];
while(1)
printf("\n please enter your name:");
gets(n);
if(n!="q[0]"&&"u[1"&&"i[2]"&&"t[3]")
printf("\n please enter your score.");
scanf("%d",&s);
if(s>=80&&s<=100)
x=1;
else if(s>=70&&s<=79)
x=2;
else if(s>=60&&s<=69)
x=3;
else if(s>=50&&s<=59)
x=4;
else if(s>=0&&s<=49)
x=5;
switch(x)
case 1:
printf("HD");
break;
case 2:
printf("D");
break;
case 3:
printf("C");
break;
case 4:
printf("C");
case 5:
printf("N");
break;
default:
printf("\n please enter a number between 0 and 100");
return 0;
不知道为什么只有case 5有作用,其他都不会显示结果?这是为什么?还有要求输入“quit”就退出,这个咋么写?
修改:把switch语句与if语句并列。
更好的:你为什么用了if语句还要用switch语句呢,直接在if语句中输出不就行了吗?
还有输入quit退出的问题:建议使用scanf在接收字符串n。接收字符串n后判断是否等于”quit“,如果等于则break,退出while循环,否则往下执行。判断时可以用strcmp函数进行判断,也可以逐个的对字符串n进行判断。
为什么要用scanf而不用gets:当进行下一次的输入时,上次输入完分数后的回车会被这次的gets给吃掉;于是就会发现,当进行这次的输入时,”please enter your name“, ”please enter your score.“会同时出现。
下面是我帮你修改的程序,基本上没动。
#include<stdio.h>
#include<conio.h>
int main()
int s,x;
char n[5];
while(1)
printf("\n please enter your name:");
scanf("%s", n);
if(n[0]=='q' && n[1]=='u' && n[2]=='i' && n[3]=='t')
break;
else printf("\n please enter your score.");
scanf("%d",&s);
if(s>=80&&s<=100)
x=1;
else if(s>=70&&s<=79)
x=2;
else if(s>=60&&s<=69)
x=3;
else if(s>=50&&s<=59)
x=4;
else if(s>=0&&s<=49)
x=5;
switch(x)
case 1:
printf("HD");
break;
case 2:
printf("D");
break;
case 3:
printf("C");
break;
case 4:
printf("C");
case 5:
printf("N");
break;
default:
printf("\n please enter a number between 0 and 100");
return 0;
这是我自己随意修改的:
#include<stdio.h>
#include<conio.h>
#include <string.h>
int main()
int s,x;
char n[5];
while(1)
printf("\n please enter your name:");
scanf("%s", n);
if(strcmp(n, "quit")==0)
break;
else printf("\n please enter your score.");
scanf("%d",&s);
if(s>=80&&s<=100)
printf("HD");
else if(s>=70&&s<=79)
printf("D");
else if(s>=60&&s<=69)
printf("C");
else if(s>=50&&s<=59)
printf("C");
else if(s>=0&&s<=49)
printf("N");
else
printf("\n please enter a number between 0 and 100");
return 0;
参考技术A #include<conio.h>
#include <stdio.h>
int main()
int s,x;
char n[5];
while(1)
printf("\n please enter your name:");
gets(n);
if(n[0]=='q' && n[1]=='u' && n[2]=='i' && n[3]=='t' && n[4]=='\0') //这样就可以输入quit就退出了
break;
printf("\n please enter your score.");
scanf("%d",&s);
getchar(); //这里要用getchar吸收掉scanf按下回车时产生的换行符
if(s>=80 && s<=100)
x=1;
else if(s>=70 && s<=79)
x=2;
else if(s>=60 && s<=69)
x=3;
else if(s>=50 && s<=59)
x=4;
else if(s>=0 && s<=49)
x=5;
//这里漏了个,导致x一直都是5
switch(x)
case 1:
printf("HD");
break;
case 2:
printf("D");
break;
case 3:
printf("C");
break;
case 4:
printf("C");
case 5:
printf("N");
break;
default:
printf("\n please enter a number between 0 and 100");
return 0;
已经通过编译,不懂追问,望采纳~~
P.S LZ代码规范不好,看得我头有点大。。。本回答被提问者采纳 参考技术B #include<conio.h>
#include
<stdio.h>
int
main()
int
s,x;
char
n[5];
while(1)
printf("\n
please
enter
your
name:");
gets(n);
if(n[0]=='q'
&&
n[1]=='u'
&&
n[2]=='i'
&&
n[3]=='t'
&&
n[4]=='\0')
//这样就可以输入quit就退出了
break;
printf("\n
please
enter
your
score.");
scanf("%d",&s);
getchar();
//这里要用getchar吸收掉scanf按下回车时产生的换行符
if(s>=80
&&
s<=100)
x=1;
else
if(s>=70
&&
s<=79)
x=2;
else
if(s>=60
&&
s<=69)
x=3;
else
if(s>=50
&&
s<=59)
x=4;
else
if(s>=0
&&
s<=49)
x=5;
//这里漏了个,导致x一直都是5
switch(x)
case
1:
printf("HD");
break;
case
2:
printf("D");
break;
case
3:
printf("C");
break;
case
4:
printf("C");
case
5:
printf("N");
break;
default:
printf("\n
please
enter
a
number
between
0
and
100");
return
0;
已经通过编译,不懂追问,望采纳~~
P.S
LZ代码规范不好,看得我头有点大。。。 参考技术C 1.关于只有case5有作用是因为你 x=5后面漏了一个“”这样只有在符合s>=0&&s<=49的时候才能够执行switch选择语句...
2.你的case4后面漏打了一个break啊....
3.你将循环语句的条件改成while(n != "quit"),将n的第一次输入改在while前
另外你这句话是? printf("\n please enter a number between 0 and 100");
switch结构default后面的东西是不会运行的吧...
整个while我觉得这么写好点:
gets(n);
while(n!="quit")
if(n!="q[0]"&&"u[1"&&"i[2]"&&"t[3]")
printf("\n please enter your score.");
scanf("%d",&s);
if()
。。。//四个判断语句将x赋值
switch(x)
case 1:。。
case 2:。。
case 3:。。
case 4:。。
default;
printf("\n please enter your name:");
gets(n);
参考技术D 修改后的代码如下,望采纳!
自己对比一下
#include<stdio.h>
int main()
int s;
char n[5];
while(1)
printf("please enter your name:");
scanf("%s",&n);
printf("please enter your score:(1~100):");
scanf("%d",&s);
if(s>100||s<0)
printf("您输入的成绩有误!请从新输入!\n");
else
int flag=s/10;
switch(flag)
case 10:
case 9:
case 8:
printf("成绩等级是:A\n");
break;
case 7:
printf("成绩等级是:B\n");
break;
case 6:
printf("成绩等级是:C\n");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("成绩等级是:D\n");
break;
default:
break;
C 语言程序设计~实训~急急急!!!
实训一:C的运行环境
实训内容
从命令行参数输入姓名和性别,在屏幕上显示hello 姓名先生(或女士),例如:
命令行输入test 李四 女,结果显示:hello 李四女士
实训二:分支结构
实训内容
给学生写评语,若学生成绩在60-69则打印“及格”,70-89“良好”,90-100“优秀”,60以及“不及格”,请分别用 if-else语句和switch语句编程。
实训三:循环结构
实训内容
1 、编程统计全班学生成绩。要求每次用键盘输入一个学生的2门分数,计算输出每个学生的总分和平均分。如果平均大于等于85为优秀;60-85为通过。统计出成绩优秀的学生及及格学生的人数。
2、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如同一因子是1,2,3,而6=1+2+3因此6是一个完数。编程找出1000之内的所有完数。
实训四:数组
实训内容
1、有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其它字符的个数。
2、有一行电文,已按下面规律译成密码。
A->Z a->z
B->Y b->y
C->X c->x ………
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程序将密码译回原文,并打印出密码和原文。
实训五:C函数
实训内容
1、编一函数判别某一数是否为素数,若是,返回值为1,否则,返回值为0。在main函数中调用该函数。
2、用递归法将一个整数n转换成字符串,例如输入483,应输出字符串“384”。N的位数不确定,可以是任意位数的整数。
这五道大题,总共分8个小题,非常急!!!求助各位编程高手,对于你们来说应该很简单吧?
需要 详细的流程图 和源代码~!
谢谢!!
2,完数
#include <stdio.h>
void main()
int i,j,sum=0;
for (i=2;i<=1000;i++)
for (j=1;j<=i/2;j++)
if (i%j==0) sum=sum+j;
if (sum==i) printf("%d\n",sum);
sum=0;
实在没心情写了,用switch的很不想写。就是c的教材上都有的例题。
一下是统计字符那个题
#include <stdio.h>
void main()
char a[1000],b[1000];
int i,j,c[1000],num=0;
scanf ("%s",&a);
for (i=0;i<1000;i++)
c[i]=0;
for (i=0;a[i]!='\0';i++)
for (j=0;j<=num;j++)
if (a[i]==b[j])
c[j]++;
break;
if (j==num&&a[i]!=b[num])
b[num]=a[i];
c[num]++;
num++;
break;
for (i=0;i<=num-1;i++)
printf("%c",b[i]);
printf("%d个\t",c[i]);
printf("\n");
一下为求素数
#include <stdio.h>
void main()
int a,i;
scanf ("%d",&a);
for (i=2;i<=a/2;i++)
if (a%i==0)
printf("不是素数\n");
break;
if (i==a/2) printf("是素数\n");
参考技术A 实训是针对你的.既然是求助,只需点拨一下即可.这些题太基础了,只要看看书应该会的.按你的要求"详细的流程图和源代码"要在电脑上打出来是很琐碎的.很多人会不屑一顾,因为那30分不值得付出那么多精力. 参考技术B 虽然简单,但也费时。30分做8题无语... 参考技术C 有300分 我立即做... 参考技术D 不会呀
以上是关于c语言作业 老师要求用switch 来判定学生分数等级的主要内容,如果未能解决你的问题,请参考以下文章
采用switch语句设计一个程序,对给定的学生成绩score评判其等级这个程序怎么编啊??