关于C语言的两道题 20
;第n个月兔子对数f(n)=f(n-1)+f(n-2)
运行效果:一对兔子开始繁殖,以后各月的兔子对数:
不用子函数计算结果:
1 2 3 5 8 13 21 34 55 89 144 233
第二:验内容:从键盘输入一个班(最多30人)的某门课程的学生成绩,当输入为负值时或已达30人时输入结束,分别统计下列内容:
1)统计不及格人数并打印其学生名单。
2)统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单。
3)统计各分数段的学生人数及所占百分比。
运行效果:
学号 成绩 学号 成绩 学号 成绩 学号 成绩
2001 60 2002 80 2003 90 2004 100
2005 70 2006 40 2007 80 -1 -1
不及格人数:1 名单:2006
平均分:74.3
平均分及平均分之上的学生:2002 2003 2004 2007
不及格:14.3% 60-69分:14.3% 70-79分:14.3% 80-89分:28.6% 90-100分:28.6%
实验说明:学号、成绩输入小于0的数表示结束输入。 展开
//第一题
#include<stdio.h>
int main()
{
int f1=1,f2=2,f3=3;
while(f3<233)
{
f3=f1+f2;
printf("%d ",f3);
f1=f2;
f2=f3;
}
return 0;
}
//第二题
#include<stdio.h>
struct stu
{
unsigned int ID;
double score;
}s[31];
int main()
{
int n=0,c1=0,c2=0,c3=0,c4=0,c5=0,i;
double sum=0;
do
{
printf("学号 成绩\n");
scanf("%d%lf",&s[n].ID,&s[n].score);
n++;
}while(n<30&&s[n-1].ID>=0&&s[n-1].score>=0);
if(n<30)n--;
for(i=0;i<n;i++)
{
sum+=s[i].score;
if(s[i].score<60)c1++;
else if(s[i].score<70)c2++;
else if(s[i].score<80)c3++;
else if(s[i].score<90)c4++;
else if(s[i].score<=100)c5++;
}
printf("不及格人数:%d 名单:",c1);
for(i=0;i<n;i++)if(s[i].score<60)printf("%d ",s[i].ID);
printf("\n平均分:%.1lf\n平均分及平均分以上的学生:",sum/n);
for(i=0;i<n;i++)if(s[i].score>=sum/n)printf("%d ",s[i].ID);
printf("\n不及格:%.1lf%% 60-69分:%.1lf%% ",c1*100.0/n,c2*100.0/n);
printf("70-79分:%.1lf%% 80-89分:%.1lf%% ",c3*100.0/n,c4*100.0/n);
printf("90-100分:%.1lf%%",c5*100.0/n);
return 0;
}