1. c语言数据统计
#include <stdio.h>
#include <errno.h>/*错误处理头文件*/
#define IN_FILE_NAME "file15.txt"/*要输入的文件*/
int sumclass = 0;/*全局变量*/
struct theclassinfo /*一个班的信息*/
{
int classno; /*班号*/
int sumstudent;/*总人数*/
float sumscore;/*总成绩*/
};
void addtoclass (int classno, float score, struct theclassinfo theclass[]);/*班级信息添加*/
int main()
{
int stuno = 0, sum = 0, i;
FILE *ptrin; /*打开文件时的指针*/
int sid, sclassno;
float average, score;
char sname[20];
struct theclassinfo theclass[100];
if ((ptrin = fopen(IN_FILE_NAME, "r")) == NULL)/*以读的方式打开输入文件*/
{
printf("程序运行中发生了错误!\n");
perror(IN_FILE_NAME);/*错误处理*/
getchar();
}
else/*成功打开进行下面操作*/
{
printf("学号\t班级\t分数\t姓名\n");
while (!feof(ptrin))
{
fscanf(ptrin, "%d %d %f %s", &sid, &sclassno, &score, sname);
sum += score;
stuno ++;
addtoclass(sclassno, score, theclass);
printf("%d\t%d\t%.2f\t%s\n", sid, sclassno, score, sname);
}
average = sum/stuno;
printf("学生数为:%d\n", stuno);
printf("数学成绩平均分为:%f\n\n", average);
printf("各班级平均分如下:\n");
printf("班级号\t平均分\n");
for (i = 0; i < sumclass; i++)
{
printf("%d\t%f\n", theclass[i].classno, theclass[i].sumscore/theclass[i].sumstudent);
}
fclose(ptrin);
}
return 0;
}
void addtoclass (int classno, float score, struct theclassinfo theclass[])
{
int i;
for (i = 0; i < sumclass; i++)
{
if (theclass[i].classno == classno)
{
theclass[i].sumstudent++;
theclass[i].sumscore += score;
break;
}
}
if (i == sumclass)
{
theclass[i].classno = classno;
theclass[i].sumstudent = 1;
theclass[i].sumscore = score;
sumclass++;
}
}
测试数据 同目录下 的file15.txt 内容如下:
1 2 95 陈
2 2 94 啊
3 3 80 飞
4 9 92 d
5 9 56 dss
结果:
学号 班级 分数 姓名
1 2 95.00 陈
2 2 94.00 啊
3 3 80.00 飞
4 9 92.00 d
5 9 56.00 dss
学生数为:5
数学成绩平均分为:83.000000
各班级平均分如下:
班级号 平均分
2 94.500000
3 80.000000
9 74.000000
本来想用链表保存班级的。
测试看看 有没有问题。
2. c语言编程:统计各省份报道情况并按实际人数从多到少排列
编程时输入输出非常重要。因为计算机不懂得人类语言,必须要约定输入输出格式:
比如,
(1)举例一:
输入文件“c:\各省份报道统计.txt”
文件内容:
3 (省份数量)
江苏 4 7
浙江 3 3
安徽 8 6
(文件结束。其中,第一行表示省份数量,下面若干行中每行有3个数据,第一个数据为省份名,第二个数据为报道人数,第三个数据为报道文章数)
(2)举例二:
输入文件“c:\各省份报道统计.txt”
文件内容:
7 (报道数量)
南京**报道 江苏 王**
杭州**报道 浙江 张**
……
合肥**报道 安徽 李**
(文件结束。其中,第一行表示报道篇数。之后若干行中每行有3个数据,第一个为报道名称,第二个为报道省份,第三个为报道人姓名)
以上两个例子虽然都是统计,但是输入数据格式不同,所以统计方法完全不同。这些细节无法忽略。同理,输出的格式也是如此。
3. c语言 统计各个分数段的学生人数
#include <stdio.h> //使用printf函数要包含的头文件void main(void) //主函数
{
int n;
int x1=0,x2=0,x3=0,x4=0,x5=0;
printf("请输入学生的成绩1~100:\n");
scanf("%d",&n);
while(n!=-1)
{
if(1<=n&&n<=59)
{
x1+=1;
}
else if(60<=n&&n<=69)
{
x2+=1;
}
else if(70<=n&&n<=79)
{
x3+=1;
}
else if(80<=n&&n<=89)
{
x4+=1;
}
else
{
x5=+1;
}
scanf("%d",&n);
}
printf("1~59分数段的人数为:%d\n",x1);
printf("60~69分数段的人数为:%d\n",x2);
printf("70~79分数段的人数为:%d\n",x3);
printf("80~89分数段的人数为:%d\n",x4);
printf("90~100分数段的人数为:%d\n",x5);
}
4. C语言编程 统计不同分数段学生人数
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intscore[10];//先定义十个学生
inti=0;
inta[7]={0};//定义要求的a到h,并初始化
printf("pleaseenter10students'score:
");
for(;i<10;i++)
{
scanf("%d",&score[i]);
if(score[i]>40)
{
a[2]++;
if(score[i]>60)
{
a[1]++;
if(score[i]>80)
{
a[0]++;
}
elsea[5]++;
}
elsea[6]++;
}
elsea[3]++;
}
a[4]=a[0];//a的值与e的值一样
printf("得分大于80的学生数=%d
",a[0]);
printf("得分大于60的学生数=%d
",a[1]);
printf("得分大于40的学生数=%d
",a[2]);
printf("得分等于或小于40的学生数=%d
",a[3]);
printf("得分在80——100之间的学生数=%d
",a[4]);
printf("得分在60——80之间的学生数=%d
",a[5]);
printf("得分在60——41之间的学生数=%d
",a[6]);
printf("得分在0——40之间的学生数=%d
",a[3]);
system("pause");
return0;
}
呵呵,初学者来的,锻炼一下自己同时希望能帮到你,已经在MicrosoftVisualc++6.0上运行过,你可以把10替换成任何数
5. C语言要求输入人数和成绩来统计各分数段的人数
#include<stdio.h>int count[5];const char *str[5] = {"1-59: ","60-69: ","70-79: ","80-89: ","90-100: "};int main(void){ int score,i; while(1) { scanf("%d",&score); if(score==-1) break; if(score>=1 && score <=59) count[0]++; else if(score >= 60 && score<=69) count[1]++; else if(score>=70 && score<=79) count[2]++; else if(score>=80 && score<=89) count[3]++; else if(score>=90 && score<=100) count[4]++; else printf("输入错误"); } for(i = 0; i < 5; i++) { printf("%s%d\n",str[i],count[i]); } return 0;}