哈工大C语言实验题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈工大C语言实验题
————————————————————————————————作者:————————————————————————————————日期:
ﻩ
Q308.(10分)第5章实验2:体型判断。
医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。
体指数计算公式是:
t = w/(h*h)
其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。
根据给定的体指数t计算公式,可判断你的体重属于何种类型:
当t<18时,为低体重;
当18≤t<25 时,为正常体重;
当25≤t<27 时,为超重体重;
当t≥27 时,为肥胖。
****输入提示信息格式:"Please enter h,w:\n"
****输入数据格式要求:"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入)
****输出数据格式要求:
当 t<18 时,输出:"Lower weight!\n"
当18≤t<25 时,输出:"Standard weight!\n"
当25≤t<27时,输出:"Higher weight!\n"
当t≥27 时, 输出:"Too fat!\n"
#include <stdio.h>
#include <stdlib.h>
main()
{
float t,w,h;
printf("Please enter h,w:\n"); scanf("%f,%f",&h,&w);
t = w/(h*h);
if(t<18)
printf("Lower weight!\n");
else if(t>=18&&t<25)
printf("Standardweight!\n");
else if(t>=25&&t<27)
printf("Higher weight!\n");
else
printf("Too fat!\n");
return 0;
}
Q586.(
10分)编写一个程序,输入年份和月份,判断该年是否是闰年,并根据给出的月份判断是什么季节和该月有多少天?(闰年的条件是年份能被4整除但不能被100整除,或者能被400整除;规定3~5月为春季,6~8月为夏季,9~11月为秋季,1、2和12月为冬季)。
**输入格式要求:"%d,%d" 提示信息:"Please enter year,month:"
**输出格式要求:"%d is leap year\n" "%dis not leapye
ar\n" "The season is spring/summer/autumn/winter" "The number of days of this month is %d\n"
程序运行示例如下:
实例1:
Please enter year,month:2012,11
2012 is leap year
The season isautumn
The number of days of this month is 30
实例2:
Please enter year,month:2013,12
2013 is not leap year
The season is winter
The number ofdays of this monthis 31
#include <stdio.h>
#include <stdlib.h>
main()
{
int year=0,leap=0,mon=0,day=0;
printf("Please enter year,month:");
scanf("%d,%d",&year,&mon);
if((year%100!=0&&year%4==0)||(year%100==0&&year%400==0)){
printf("%d isleap year\n",year);
leap=1;
}
else
printf("%d is notleap year\n",year);
switch(mon)
{
case 1:
case 2:
case 12:printf("Theseason is winter\n");
break;
case3:
case 4:
case5:printf("The seasonis spring\n"); break;
case 6:
case7:
case 8:printf("The seasonis summer\n"); break;
case9:
case10:
case 11:printf("The season is autumn\n"); break;
}
switch(mon)
{
case1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;
break;
case 4:
case 6:
case 9:
case 11:day=30;
break;
case 2:
if(leap==1)
day=29;
else
day=28;
}
printf("The numberof days ofthismonth is%d\n",day); }
Q3161.(10分)请用else if多分支条件判断语句编程设计一个简单的计算器程序。
要求:
(1)请用户按以下形式从键盘输入表达式:操作数① 运算符op 操作数②
(2)然后计算表达式的值
**输入提示信息**:无
**输入数据格式**:"%f%c%f"
**输出数据格式**:"%.2f%c%.2f=%.2f\n"
若若输入的运算符是除法运算符/,当除数为0时,输出数据格式为:"dat is 0!Error!\n"
若输入的运算符不是加(+)、减(-)、乘(*)、除(/),则输出数据格式为:"Error!\n"
[友情提示]:
① 用户输入的运算符为算术运算符:加(+)、减(-)、乘(*)、除(/)。
用字符变量op 表示;
② 操作数①和操作数②为浮点型数据,分别用浮点型变量 dat1、dat2表示。
③程序运行结果如下所示:
1+2↙
1.00+
2.00=
3.00
#include <stdio.h>
#include <stdlib.h>
main()
{
float a=0,b=0;
char op;
scanf("%f%c%f",&a,&op,&b);
if(op=='+')
printf("%.2f%c%.2f=%.2f\n",a,op,
b,a+b);
elseif(op=='-')
printf("%.2f%c%.2f=%.2f\n",a,op,b,
a-b);
else if(op=='*')
printf("%.2f%c%.2f=%.2f\n",a,op,b,a
*b);
else if(op=='/'){
if(b!=0)
printf("%.2f%c%.2f=%.2f\
n",a,op,b,a/b);
else
printf("dat is0!Error!\n");
}
else
printf("Error!\n");
}
Q3185.(10分)实验二(2016春刘秉权C语言课):根据输入的百分制成绩score,转换成相应的五分制成绩grade后输出。
转换规则为(要求用switch语句实现):
当score大于等于90且小于等于100时,grade=A;
当score大于等于80且小于90时,grade=B;
当score大于等于70且小于80时,grade=C;
当score大于等于60且小于70时,grade=D;
当score大于等于0且小于60时,grade=E。
格式要求:
输入提示:"Please enter score:"
输出形式形如:"100--A"、"75--C"、"0--E"当输入分数不正确时,输出:"Inputerror! "
#include<stdio.h>
main()
{
int s,m;
printf("Please enters
core:");
scanf("%d",&s);
m=s<0||s>100?-1:s/10;
switch(m)
{
case 10:
case 9:printf("%d--A
\n",s);
break;
case8:printf("%
d--B\n",s);
break;
case 7:printf
("%d--C\n",s);
break;
cas
e 6:printf("%d--D\n",s);
break;
case 5:
case 4:
case3:
case 2:
case 1:
case0:printf("%d--E\n",s);
break;
default:printf("Inputer ror!");
}
}
Q221.(10分)编程从键盘输入某年某月(包括闰年),用switch语句编程输出该年的该月拥有的天数。
要求考虑闰年以及输入月份不在合法范围内的情况。
已知闰年的2月有29天,平年的2月有28天。
**输入格式要求:"%d, %d" 提示信息:"Input year,month:"
**输出格式要求:"31 days\n" "29 days\n" "28 days\n" "Input error!\n"
程序运行示例如下:
Input year,month:2004,2
29days
#include<stdio.h>
main()
{
int a, b;
printf("Input year,month:");
scanf("%4d,%2d", &a, &b);
switch(b)
{
case 1:
case 3:
case 5:
case7:
case 8:
case 10:
case 12:
printf("31 days\n");
break;
case 4:
case 6:
case9:
case 11:
printf("30 days\n");
break;
case 2:
if ((a % 4 == 0 && a %100 != 0) || a % 400 ==0)
printf("29 days\n");
else
printf("28 days\n");
break;
default:
printf("Input error!\n");
}
return 0;
Q210.(10分)第7章实验任务1:
所谓素数是指这个数只能被1和自身整除。
要求在主函数输入一个数,
调用函数Fun()判断该数是否是素数。
打印信息在主函数中进行。
例如:
从键盘输入5,5是素数则打印如下信息:"5is a prime number".
又如:从键盘输入4, 4不是素数则打印如下信息:"4 is not a prime number"
负数、0和1均不是素数。
对输入的数据要考虑数据的合法性,不满足条件的数
要重新输入直到满足条件为止。
不能使用全局变量,不按给定的函数原型编写程序
不给分。
Fun()函数原型如下:
int Fun(int m);
**输入数据提示信息:"Please input a number:\n"
注:该提示信息请放在循环体外
**输入数据格式为:"%d"
**输出格式要求:
若是素数输出数据格式为:"%d is a prime number\n"
若不是素数输出数据格式为: "%d isnot a prime number\n"
#include<stdio.h>
#include <stdlib.h>
int Fun(intm);
main()
{
int a;
printf("Please input a numbe
r:\n");
while(scanf("%d",&a))
{
if (a <=0|| a == 1)
continue;
elseif (a >0 && a != 1&& Fun (a)== 1)
printf("%d is aprimen
umber\n",a);
else
printf("%d is notaprime numb er\n", a);
break;
}
return 0;
}
int Fun(int m)
{
int i,result;
result = 1;
if (m!=2)
{
for (i= 2; i< m;i++)
{
if (m % i == 0)
{
result = 0;
break;
}
}
}
returnresult;
}
Q3185.(10分)实验二(2016春刘秉权C语言课):根据输入的百分制成绩score,转换成相应的五分制成绩grade后输出。
转换规则为(要求用switch语句实现):
当score大于等于90且小于等于100时,grade=A;
当score大于等于80且小于90时,grade=B;
当score大于等于70且小于80时,grade=C; 当score大于等于60且小于70时,grade=D;当score大于等于0且小于60时,grade=E。
格式要求:
输入提示:"Please enter score:"
输出形式形如:"100--A"、"75--C"、"0--E" 当输入分数不正确时,输出:"Input error! "
#include<stdio.h>
main()
{
ints,m;
printf("Please enter sco
re:");
scanf("%d",&s);
m=s<0||s>100?-1:s/10;
switch(m)
{
case 10:
case9:prin
tf("%d--A\n",s);
break;
case 8:printf("%d--B\n",s);
break;
case 7:printf("%d
--C\n",s);
break;
case6:printf("%d--D\n",s);
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("%d--E\n",s);
break;
default:printf("Input er ror!");
}
}
Q1709.(10分)第6章实验1:国王的许诺
相传国际象棋是古印度舍罕王的宰相达依尔发明的。
舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。
这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中放1粒,第2格中放2粒,第3格中放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。
舍罕王让人扛来一袋麦子,他要兑现他的许诺。
请问:国王能兑现他的许诺吗?试编程计算舍罕王共要多少麦子赏赐他的宰相,这些麦子合多少立方米(已知1立方米麦子约1.42e8粒)?
注:(1)不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。
(2)用标准C语言编程,所有变量必须在第一条可执行语句前定义。
(3)输入输出格式要和以下给定格式完全一致。
**输入格式:无
**输出格式:
"sum = %e\n"
"volum = %e\n"
%e表示double类型
#include<stdio.h>
#include<math.h>
main()
{
int i;
doubles, v;
s = 0;
for (i=0; i <= 6
3; i++)
s = s+ pow(2, i);
v = s/ 1.42e8;
printf("sum =%e
\n", s);
printf("volum = %e\
n", v);
return0;
}
Q1719.(10分)第7章实验任务3
从键盘任意输入一个整数n,编程计算并输出1~n之间的所有素数之和输入提示信息:"Input n:"
输入格式:"%d"
输出格式:"sum = %d\n"
#include <stdio.h>
#include <stdlib.h>
intFun(int m);
main()
{
int n,i,s;
s=0;
printf("Inputn:"); scanf("%d",&n);
for(i=2;i<=n;i++) {
if(Fun(i)==1)
s=s+i;
}
printf("sum = %d\n",s);
return 0;
}
int Fun(int m)
{
int i, result;
result= 1;
if (m != 2)
{
for (i = 2;i<
m; i++)
{
if (m % i ==0)
{
result =0;
break;
}
}
}
return result;
}
Q1720.(10分)第7章实验任务6
从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出"It is a prime num ber"。
例如,用户输入90时,程序输出90= 2 * 3 * 3 * 5;用户输入17时,程序输出"It is a primenumber"。
输入提示信息:"Input m:"
输入格式:"%d"
输出格式:
是素数时输出"It is a prime number\n"
否则输出用"%d =","%d * "
运行示例1:
Input m:90↙
90 = 2 * 3 * 3 * 5
运行示例2:
Input m:13↙
It is aprime number
#include<stdio.h>
intFun(intm);
int IsPerfect(int m);
main()
{
intm,i,p;
printf("Input m:");
scanf("%d",&m);
p=m;
if(Fun(m)==1)
printf("It isa prime number\n"); else
{
printf("%d = ",m);
for(i=2;i<m;i++)
{
if(p%IsPerfect(i)==0&&p/IsPerfect(i)!=1&&IsPer fect(i)!=1)
printf("%d * ",i);
else if(p%IsPerfect(i)==0&&p/IsPerfect(i)==1&&IsPerfect(i)!=1)
{
printf("%d",i);
break;
}
else
continue;
p=p/i;
while(p%i==0)
{
if(p/i!=1)
{
printf("%d * ",i);
p=p/i;
}
else
{
printf("%d",i);
break;
}
}
}
}
return 0;
}
intFun(intm)
{
inti, result;
result =1;
if (m != 2)
{
for(i =2; i < m; i++)
{
if(m % i ==0)
{
result= 0;
break;
}
}
return result;
}
int IsPerfect(int m)
{
inti, result;
result=1;
if (m != 2)
{
for (i= 2;i <= m; i++)
{
if (m %i==0)
break;
else if(m%i!=1&&m/i!=1)
continue;
else
result=m;
}
}
result=2;
return result;
}
Q198.(10分)第7章实验任务5
如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全数。
它是指这样的一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。
注意:1没有真因子,所以不是完全数。
例如,6就是一个完全数,是因为6 = 1 + 2 + 3。
请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。
要求:按如下原型编写判断完全数的函数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数。
int IsPerfect(int x);
**要求输入提示信息为: "Input m:\n"
**要求输入格式为: "%d"
**要求输出格式为
"%d is a perfect number\n"
"%d is not a perfect number\n"
注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用int main和return0。
#include<stdio.h>
intIsPerfect(intm);
main()
{
int a;
printf("Input m:\n");
scanf("%d", &a);
if (IsPerfect(a) == 1)
printf("%d is aperfect number\n", a);
else
printf("%d isnot aperfectnumber\n", a);
}
int IsPerfect(int m)
{
int i, s,find;
s = 0;
for(i = 1; i < m; i++)
{
if (m%i == 0)
s =s + i;
else
continue;
}
if(s==m)
find = 1;
else
find= 0;
returnfind;
}
Q3168.(10分)编程从键盘输入一个小写英文字母,将其转换为大写英文字母,并将转换后的大写英文字母及其十进制的ASCII码值显示到屏幕上。
**输入提示信息**:"Please input a low-case letter from keyboar d:"
**输入数据格式**:"%c"
**输出数据格式**:"The capital letter and its ASCII valueare:%c and %d.
"
提示:从键盘输入一个字符可用scanf也可用getchar
#include<stdio.h>
main()
{
char a;
printf("Please input alow-case letterfrom keyboar
d:");
a= getchar();
a = a - 32;
printf("The capital letter and its ASCII value are:%
c an
d %d.", a,a);
}
Q3241.(10分)实验三(2016春刘秉权C语言课):已知公式e = 1 + 1/1! + 1/2!+ 1/3! + ... +1/n!, 编程计算e的近似值,直到最后一项的绝对值小于1e-7时为止,输入e的值并统计累加的项数。
要求:按顺序输出每一个e值,小数点后保留8位有效数字,输出格式形如:e = 2.66666667, count =4(回车换行,count为累加的项数)
#include<stdio.h>
double fun(intn);
main()
{
int i, c;
doublee;
c=0;
e = 0;
for (i = 0; i<=11;i++)
{
e = e +fun(i);
c++;
printf("e = %.8lf, count = %d\n", e, c);
}
}
double fun(intn)
{
double result;
int i;
i = 1;
result =1;
do
{
result = result* i;
i++;
}
while (i<= n);
result =1.0 /result;
returnresult;
}
Q1710.(10分)第7章实验任务4:
任意输入一个整数m,若m不是素数,则输出其所有不包括1和自身的因子;否则输出“没有因子,是素数”的相关提示信息。
输入提示信息:"Please enter a number:"
输入格式:"%d"
输出格式:
有因子时:"%d\n"
无因子时:"It is a prime number.No divisor!\n"
输入为1,0,-1时:"It is not a prime number.No divisor!\n" #include<stdio.h>
#include<math.h>
int Fun(int m);
main()
{
inta, i;
printf("Pleaseenter anumber:");
scanf("%d", &a);
if (Fun(fabs(a))==1)
printf("It is aprime number.No divisor!\n");
else
{
for (i = 2; i < fabs(a); i++)
{
if ( a %i==0)
printf("%d\n", i);
}
}
}
int Fun(int m)
{
int i,result;
result =1;
if (m != 2 && m!= 1)
{
for (i =2; i < m; i++)
{
if (m % i == 0)
{
result= 0;
break;
}
}
}
else if (m == 1)
result= 0;
else;
return result;
}
Q1718.(10分)第5章实验1:身高预测。
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。
小孩成人后的身高与其父母的身高和自身的性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高预测公式为
男性成人时身高= (faHeight + moHeight) × 0.54 cm
女性成人时身高 = (faHeight ×0.923+ moHeight) /2cm
此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。
请编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHei ght为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y 表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。
运行示例:
Are you a boy(M) or a girl(F)?F↙
Please input your father's height(cm):182↙Please input yourmother's height(cm):162↙Do you like sports(Y/N)?N↙
Do you have a good habit of diet(Y/N)?Y↙Your future height will be 167(cm)
#include<stdio.h>
main()
{
float fh, mh, h;
charsex,sports, diet;
printf("Are you a boy(M)or agirl(F)?");
sex = getchar();
getchar();
printf("Pleaseinput your father's hei
ght(cm):");
scanf("%f", &fh);
getchar();
printf("Please input yourmother's heigh
t(cm):");
scanf("%f", &mh);
getchar();
printf("Do you like sports(Y/N)?");
sports=getchar();
getchar();
printf("Do you have a good habit of diet (Y/N)?");
diet = getchar();
if (sex == 'M')
h =(fh + mh) *0.54;
else if (sex == 'F')
h = (fh * 0.923+ mh)/ 2;
else
{
printf("Error!\n");
gotoR;
}
if (sports== 'Y')
h = h * 1.02;
else if (sports == 'N');
else
{
printf("Error!\n");
goto R;
}
if (diet == 'Y')
h = h * 1.015;
else if (diet== 'N');
else
{
printf("Error!\n");
goto R;
}
printf("Your future height will be %.0f(cm)\n", h);
R:
return0;
}
Q3134.(
.(10分)第8章实验1:学生成绩管理系统V1.0
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩。
程序运行结果示例:
Input student number(n<30):
6↙
Management for Students'scores
1.Input record
2.Caculate total and average score of course
3.Sort in descending order by score
4.Sort in ascending order by number
5.Search by number
6.Statistic analysis
7.List record
0.Exit
Please Input your choice:
1↙
Inputstudent's ID, name andscore:
11003001 87↙
1100300598↙
1100300375↙
11003002 48↙
11003004 65↙
11003006 100↙
Managementfor Students' scores
1.Input record
2.Caculate total and average score of course
3.Sort in descending order by score
4.Sort in ascending order bynumber
5.Search by number
6.Statistic analysis
7.List record
0.Exit
Please Inputyour choice:
2↙
sum=473,aver=78.83
Management for Students' scores
1.Input record
2.Caculate total and average score of course 3.Sort in descending order by score
4.Sort in ascending order by number
5.Searchby number
6.Statistic analysis
7.Listrecord
0.Exit
Please Input your choice:
3↙
Sort in descending order byscore:
100
ﻩ98
87
ﻩ75
ﻩ65
ﻩ48
Management for Students' scores
1.Input record
2.Caculate total and average score of course3.Sort in descending order by score
4.Sort inascending order by number
5.Search by number
6.Statistic analysis
7.List record
0.Exit
Please Inputyour choice:
4↙
Sort in ascending order by number:
87
ﻩ48
75
ﻩ65
ﻩ98
100
Management for Students' scores
1.Input record
2.Caculate total and average score ofcourse3.Sort indescending order by score
4.Sort inascending order by number
5.Search by number
6.Statistic analysis
7.List record
0.Exit
Please Input your choice:
5↙
Input the number you want to search:
ﻩ65
Management for Students' scores
1.Input record
2.Caculate total and average score of course 3.Sort in descending order by score
4.Sort in ascending order by number
5.Search by number
6.Statistic analysis
7.List record
0.Exit
Please Input your choice:
6↙
<60 1 16.67%
60-69 1 16.67%
70-79 116ﻩ.67%
80-89 1ﻩ16.67%
90-9911ﻩ6.67%
100ﻩ1ﻩ16.67%
Management for Students' scores
1.Input record
2.Caculate total and averagescore of course
3.Sortin descending order by score
4.Sort in ascending order by number
5.Search by number
6.Statisticanalysis
7.Listrecord
0.Exit
Please Input your choice:
7↙
ﻩ87
ﻩ48
ﻩ75
65
98
100
Management for Students'scores
1.Input record
2.Caculate total and average score of course 3.Sort in descending order by score
4.Sortin ascending order by number
5.Search by number
6.Statistic analysis
7.Listrecord
0.Exit
Please Input yourchoice:
8↙
Input error!
Management for Students' scores
1.Input record
2.Caculatetotal and averagescore ofcourse
3.Sort indescending order by score
4.Sort inascending order by number
5.Search by number
6.Statistic analysis
7.List record
0.Exit
Please Input your choice:
0↙
Endof program!
输入格式:
( 1 )录入学生的人数:
**输入数据格式:"%d"
**提示信息:"Input student number(n<30):\n"
( 2 )录入每个学生的学号和考试成绩:
**输入数据格式:"%ld%f"
**提示信息:"Input student's ID, name and sc ore:\n"
输出格式:
菜单项的输出显示:
Management for Students' scores
1.Input record
2.Caculate total and average score of course
3.Sort in descending order by score
4.Sort in ascending orderby number
5.Search by number
6.Statistic analysis
7.List record
0.Exit
Please Input your choice:
计算课程的总分和平均分:
**输出总分与平均分格式:"sum=%.0f,aver=%.2f\n"
按成绩由高到低排出名次表:
**输出格式:"%ld\t%.0f\n"
**提示信息:"Sort in descending order by sco re:\n"
按学号由小到大排出成绩表:
**输出格式:"%ld\t%.0f\n"
**提示信息:"Sort in ascending orderby number:\n"
按学号查询学生排名及其考试成绩:
**如果未查到此学号的学生,提示信息:"Not found!\n"
**如果查询到该学生,输出格式:"%ld\t%.0f\n"
按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比:
**成绩<60输出格式:"<60\t%d\t%.2f%%\n"
**成绩=100输出格式:"%d\t%d\t%.2f%%\n"
**其他输出百分比格式:"%d-%d\t%d\t%.2f%%\n" #include<stdio.h>
#include<stdlib.h>
#defineN 30
main()
{
int n,i,j,temp1,temp2,choice,p,mark;
long ids;
float sum;
printf("Inputstudent number(n<30):\n");
while(scanf("%d",&n))
{
if(n<30&&n>0)
break;
else
{
printf("Invalid Input!");
continue;
}
}
long id[N];
float score[N];
Choice:
printf("Managementfor Students' scores\n");
printf("1.Inputrecord\n");
printf("2.Caculatetotal andaverage score of cours e\n");
printf("3.Sort in descendingorder by score\n");
printf("4.Sort inascending orderby number\n");
printf("5.Search by number\n");
printf("6.Statistic analysis\n");
printf("7.List record\n");
printf("0.Exit\n");
printf("PleaseInput your choice:\n");
scanf("%d",&choice);
getchar();
switch(choice)
{
case 1:goto a;
case 2:goto b;
case 3:gotoc;
case 4:goto d;
case 5:goto e;
case 6:goto f;
case 7:gotog;
case 0:goto end;
default:
printf("Input error!\n");
gotoChoice;
}
a:
printf("Input student's ID, nameand score:\n");
for(i=1;i<=n;i++)
{
scanf("%ld %f",&id[i],&score[i]);
getchar();
}
goto Choice;
b:
sum=0;
for(i=1;i<=n;i++)
sum=sum+score[i];
printf("sum=%.0f,aver=%.2f\n",sum,sum/n);
goto Choice;
c:
printf("Sort in descending orderbyscore:\n");for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(score[j]>score[i])
{
temp1=score[i],temp2=id[i];
score[i]=score[j],id[i]=id[j];。