當前位置:首頁 » 編程語言 » c語言鏈表改錯題統計專業人數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言鏈表改錯題統計專業人數

發布時間: 2023-08-29 17:04:44

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;}