❶ c語言用數組實現學生成績統計,三科總成績和每門課程平均分。
比較簡單,通過一維數組就能實現
void Record ()
{
float score[3];
printf("請輸入學生成績\n");
for(int i = 0;i<3;i++)
{
scanf("%f",a+i);
}
float sum = 0,average=0;
for(int j =0;j<3;j++)
{
sum+=a[i];
}
average = sum/3;
}
❷ C語言:編寫一個函數print,列印一個學生的成績結構數組,該數組中有5個學生的數據記錄,(續接問題補充)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define N 5
struct student {
int num;
char name[1024];
int score[3];
};
typedef struct student stu;
void print(stu* p) {
printf("學號 姓名 成績1 成績2 成績3 ");
for (int i = 0; i < N; ++i) {
printf("%d ", (p + i)->num);
printf("%s ", (p + i)->name);
for (int j = 0; j < 3; ++j) {
printf("%d ", (p + i)->score[j]);
}
printf(" ");
}
}
void main() {
stu arr[N];
stu* p = arr;
//輸入
for (int i = 0; i < N; ++i) {
printf("請輸入第%d個學生的信息 ", i + 1);
printf("請輸入num ");
scanf("%d", &(p + i)->num);
printf("請輸入姓名 ");
scanf("%s", &(p + i)->name);
for (int j = 0; j < 3; ++j) {
printf("請輸入score%d ", j + 1);
scanf("%d", &(p + i)->score[j]);
}
}
//輸出
print(p);
system("pause");
}
運行效果:
(2)c語言學生試卷分數統計結構數組擴展閱讀:
printf函數使用注意事項
1、域寬
%d:按整型數據的實際長度輸出。
如果想輸出指定寬度可以指定域寬,%md-->m域寬,列印出來以後,在控制台上,顯示m位;
如果我們要列印的數的位數如果超過我們設定m則原樣輸出;
如果我們要列印的數的位數如果小於我們設定的位數,則補空白,具體如下:
如果m為正數,則左對齊(左側補空白);
如果m為負數,則右對齊(右側補空白)。
2、轉義字元
如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示。
如:printf("%f%%",1.0/3);輸出結果:0.333333%。
❸ C語言課程設計任務——學生成績統計程序設計
#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{ printf("\t\t\tstudent's num:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多餘的輸入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/
printf("\t\t\tstudent's num:"); /*互動式輸入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*調用排序函數*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
這個我想就是你要的程序,具體功能跟你說的差不多
❹ C語言編程 學生成績管理(結構體數組、函數、指針、演算法、流程結構及文件等的綜合應用)
累死了...
不要以0為學號...
必須在該目錄下新建"stud.dat",並輸入一行 "0 test 0 0 0 0"
對於"對學生單科成績排序,輸出學生姓名與該科成績",我建了一個菜單,以選擇哪一科...
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
累死了...
不要以0為學號...
必須在該目錄下新建"stud.dat",並輸入一行 "0 test 0 0 0 0"
對於"對學生單科成績排序,輸出學生姓名與該科成績",我建了一個菜單,以選擇哪一科...
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
int num;
char name[20];
float score[4];
float average;
}stu[10000];
long t,max;
bool unpass[1000];
FILE *fstu=fopen("stud.dat","at+");
int init()
{
int no,i;
float s[4],ave;
char nam[20];
while (!feof(fstu))
{
fscanf(fstu,"%d",&no);
fscanf(fstu,"%s",nam);
fscanf(fstu,"%f%f%f%f",&s[1],&s[2],&s[3],&ave);
if (no>max) max=no;
stu[no].num=no;
strcpy(stu[no].name,nam);
unpass[no]=false;
for (i=1;i<=3;i++)
{
stu[no].score[i]=s[i];
if (s[i]<60) unpass[no]=true;
}
stu[no].average=ave;
}
}
int stuinsert()
{
int no,i;
float s[3],sum;
char nam[20],cha;
loop:printf("請輸入學生的學號、姓名及三門課的成績 \n");
scanf("%d",&no);
scanf("%s",nam);
scanf("%f%f%f/n",&s[1],&s[2],&s[3]);
if (no>max) max=no;
stu[no].num=no;
sum=0.0;
strcpy(stu[no].name,nam);
unpass[no]=false;
for (i=1;i<=3;i++)
{
stu[no].score[i]=s[i];
sum=sum+s[i];
if (s[i]<60) unpass[no]=true;
}
stu[no].average=sum/3.0;
fprintf(fstu,"\n");
fprintf(fstu,"%d %s %f %f %f %f\n",stu[no].num,stu[no].name,stu[no].score[1],stu[no].score[2],stu[no].score[3],stu[no].average);
}
int find(int x)
{
long i,no;
switch (x)
{
case 1:printf("請輸入學號:");
scanf("%d",&no);
printf("%d %s %f %f %f %f\n",stu[no].num,stu[no].name,stu[no].score[1],
stu[no].score[2],stu[no].score[3],stu[no].average);
break;
case 2:for (i=1;i<=max;i++)
if (unpass[i]) printf("%d %s %f %f %f %f\n",stu[i].num,stu[i].name,stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].average);
break;
}
}
int sort(int x)
{
extern int headprint(int x);
student so[1000];
int i,j,k,n;
switch (x)
{
case 1:for (i=1;i<=max;i++)
if (stu[i].num==i)
printf("%d %s %f\n",i,stu[i].name,stu[i].average);
break;
case 2:n=0;
for (i=1;i<=max;i++)
{
j=1;
if (stu[i].num==i)
while ((so[j].average>stu[i].average)&&(j<=n)) j++;
n++;
for (k=n;k>=j;k--) so[k]=so[k-1];
so[j]=stu[i];
}
for (i=1;i<=n;i++) printf("%d %s %f %f %f %f\n",so[i].num,so[i].name,so[i].score[1],so[i].score[2],so[i].score[3],so[i].average);
break;
case 3:headprint(4);
}
}
int othersort(int x)
{
extern int headprint(int x);
student so[1000];
int i,j,k,n,q;
q=0;
switch (x)
{
case 1:if (q==0) q=1;
case 2:if (q==0) q=2;
case 3:if (q==0) q=3;
n=0;
for (i=1;i<=max;i++)
{
j=1;
if (stu[i].num==i)
while ((so[j].score[q]>stu[i].score[q])&&(j<=n)) j++;
n++;
for (k=n;k>=j;k--) so[k]=so[k-1];
so[j]=stu[i];
}
for (i=1;i<=n;i++) printf("%d %s %f\n",so[i].num,so[i].name,so[i].score[q]);
break;
}
}
int select(int x)
{
extern int headprint(int x);
int p;
switch (x)
{
case 1:scanf("%d",&p);
switch (p)
{
case 1:stuinsert();break;
case 2:headprint(2);break;
case 3:headprint(3);break;
case 4:t=0;break;
}
break;
case 2:scanf("%d",&p);
find(p);break;
case 3:scanf("%d",&p);
sort(p);break;
case 4:scanf("%d",&p);
othersort(p);break;
}
}
int headprint(int x)
{
switch (x)
{
case 1:printf("學生成績管理系統\n");
printf("1、 成績錄入\n");
printf("2、 成績查詢\n");
printf("3、 成績統計\n");
printf("4、 退出\n");
select(x);
break;
case 2:printf("1、 按學號查詢學生記錄\n");
printf("2、 查詢不及格學生的記錄\n");
select(x);
break;
case 3:printf("1、 計算學生的平均分\n");
printf("2、 根據學生的平均分高低,對學生的數據進行排序後輸出\n");
printf("3、 對學生單科成績排序,輸出學生姓名與該科成績\n");
select(x);
break;
case 4:printf("1、 第一科\n");
printf("2、 第二科\n");
printf("3、 第三科\n");
select(x);
break;;
}
}
int main()
{
max=0;
t=1;
init();
loop:headprint(1);
if (t!=0) goto loop;
}
❺ C語言定義一個一維數組,輸入N個學生的考試成績統計各分數段的人數(分數段為:90-100,80-89,70-79,60-69
#include<stdio.h>
intmain(){
inti,sc,grade[5]={0};
chars[][7]={"優秀","優良","良好","及格","不及格"};
printf("請輸入成績:");
while(scanf("%d",&sc)==1){//Ctrl+Z結束輸入過程
if(sc<=100&&sc>=90)++grade[0];
elseif(sc>=80&&sc<=89)++grade[1];
elseif(sc<=79&&sc>=70)++grade[2];
elseif(sc<=69&&sc>=60)++grade[3];
elseif(sc>=0&&sc<60)++grade[4];
elseprintf("不合理數據,請重新輸入。 ");
printf("請輸入成績:");
}
for(i=0;i<5;++i)
if(grade[i])printf("%s成績,%d個人。 ",s[i],grade[i]);
printf(" ");
return0;
}
❻ 用c語言設計一個程序統計一個班的學生成績
#include<stdio.h>
#include<stdlib.h>
//定義一個學生結構體數組
struct Student{
int id;
double score;
}Student[100];
//記錄實際導入學生個數
int len = 0;
//求最高分
void getmax() {
int maxid = 0;
double maxscore = -1;
for (int i = 0; i < len; i++) {
if (Student[i].score > maxscore) {
maxscore = Student[i].score;
maxid = Student[i].id;
}
}
printf("班級最高分為:%.2lf學號是:%d ", maxscore, maxid);
}
//求最低分
void getmin() {
int minid = 0;
double minscore = 101;
for (int i = 0; i < len; i++) {
if (Student[i].score < minscore) {
minscore = Student[i].score;
minid = Student[i].id;
}
}
printf("班級最低分為:%.2lf學號是:%d ", minscore, minid);
}
//求總分
double getsum() {
double sum = 0;
for (int i = 0; i < len; i++) {
sum += Student[i].score;
}
return sum;
}
//求平均分
double getave() {
double ave = 0;
return getsum() / len;
}
//導入學生信息
void input() {
int id = 0;
double score = 0;
while (1) {
printf("請輸入學生學號:");
scanf_s("%d", &id);
if (id == -1) { break; }
printf("請輸入學生成績:");
scanf_s("%lf", &score);
Student[len].id = id;
Student[len].score = score;
len++;
}
printf("信息導入完畢! ");
}
int main() {
input();
printf("全班總分為:%.2lf ", getsum());
printf("全班平均分為:%.2lf ", getave());
getmax();
getmin();
return 0;
}
註:此代碼運行於VS2017,如果在VC6.0中運行,可將scanf_s改成scanf
並且for(int i=0;i<len;i++){xxx}改成int i=0;for(i=0;i<len;i++){xxx}即可正常運行
程序運行測試圖如下:
❼ C語言考試試題:定義一個100位學生的結構體數組,按成績從高到低進行排序
我現寫的一個,簡潔明了,應該是符合你的口味的,測試完全通過
#include <stdio.h>
#define N 100
typedef struct student
{
int id; //學號
char name[20]; //姓名
int gender; //性別(0代表男生,1代表女生)
float score; //成績
}stu;
stu s[N];
int main()
{
int i;
for(i=0;i<N;i++)
{
printf("請輸入第%d個學生的學號:",i+1);
scanf("%d",&s[i].id);
printf("請輸入第%d個學生的姓名:",i+1);
scanf("%s",&s[i].name);
printf("請輸入第%d個學生的性別:",i+1);
scanf("%d",&s[i].gender);
printf("請輸入第%d個學生的成績:",i+1);
scanf("%f",&s[i].score);
}
stu ss[N];
stu* p=ss;
for(i=0;i<N;i++)
ss[i]=s[i];
for(i=0;i<N-1;i++)
{
for(int j=i+1;j<N;j++)
{
if(ss[i].score<ss[j].score)
{
stu temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
printf("所有學生的信息按成績由高到低排名如下:\n");
printf("學號\t姓名\t性別\t成績\n");
for(i=0;i<N;i++)
{
printf("%d\t%s\t%d\t%.1f\n",(p+i)->id,(p+i)->name,(p+i)->gender,(p+i)->score);
}
return 0;
}
❽ 跪求c語言學生成績統計小系統。1用數組結構存放10個學生的3門成績,2調用函數求學生的總分3調用子函數統計
親~~
你這個可不可以用結構體?
學生成績需不需要用文件保存?
還有啊,這么復雜的題目不給分基本上是沒有人給做的啊~~~
下面的是用數組做的,沒有文件的讀取。
#include<stdio.h>
void Sum(int score[]);
void Height(int score[]);
void Avg(int score[]);
void main()
{
int score[30]={11,34,23,43,123,32,12,43,23,53,123,32,54,45,76,45,45,23,45,456,756,45,23,32,12,54,56,76,45,32}; //每3個為一個學生的成績
Sum(score);
Height(score);
Avg(score);
}
void Sum(int score[])
{
int i,j,sum[10]={0};
for(i=0;i<10;i++)
for(j=0;j<3;j++)
{
sum[i]+=score[i*3+j];
}
printf("學生總分分別為:");
for(i=0;i<10;i++)
printf("%d ",sum[i]);
printf("\n");
}
void Height(int score[])
{
int i,j;
int max[3]={score[0],score[1],score[2]},min[3]={score[0],score[1],score[2]};
for(i=0;i<3;i++)
for(j=0;j<10;j++)
{
if(score[3*j+i]>max[i])
max[i]=score[3*j+i];
if(score[3*j+i]<min[i])
min[i]=score[3*j+i];
}
printf("每一門的最高分為:");
for(i=0;i<3;i++)
printf("%d ",max[i]);
printf("\n每一門的最低分為:");
for(i=0;i<3;i++)
printf("%d ",min[i]);
printf("\n");
}
void Avg(int score[])
{
int i,j;
float avg[3]={0},sum[10]={0};
for(i=0;i<3;i++)
for(j=0;j<10;j++)
{
avg[i]+=score[3*j+i];
}
printf("每一門課的平均成績是:");
for(i=0;i<3;i++)
{
avg[i]=avg[i]/10;
printf("%.2f ",avg[i]);
}
printf("\n");
for(i=0;i<10;i++)
for(j=0;j<3;j++)
{
sum[i]+=score[i*3+j];
}
printf("每個學生的平均成績是:");
for(i=0;i<10;i++)
{
sum[i]=sum[i]/3;
printf("%.2f ",sum[i]);
}
printf("\n");
}
❾ C語言學生成績統計
可以給你。需要點時間。現在在上課。
#include <stdio.h>
void main()
{
int Password =0,i=0,sum=0;
clrscr();
printf("\n===請輸入密碼!====\n");
while(Password != 1234)
{
if(i>3)
{
printf(" 密碼錯誤!\n ");
return;
}
i++;
printf(" 請輸入密碼!\n");
}
//以上為三次密碼部分,密碼默認1234。
int k=0,b=0;
int stu[50];
loop:
printf("1. 學生成績錄入(限人數50)\n");
printf("2. 顯示學生成績\n");
printf("3. 統計總分平均分\n");
printf("4. 最高分和最低分\n");
printf("5. 統計各分數段人數\n");
printf("6. 退出\n");
abc:
scanf("%d",&k);
switch(k)
{
case 1:
printf("請輸入50個學生成績:\n");
for(i=0;i<50;i++)
{
scanf("%d",&stu[i]);
b=i;
}
printf("請選擇下一個選項:\n");
goto abc;
case 2:
if(b == 50)
{
printf(" 顯示學生成績:\n");
for(i=0;i<50;i++)
printf(" %d ",stu[i]);
printf("請選擇下一個選項:\n");
goto abc;
}
else
{
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
case 3:
if(b == 50)
{
printf(" 顯示學生總分:\n");
for(i=0;i<50;i++)
sum += stu[i];
printf(" %d ",sum);
printf("請選擇下一個選項:\n");
goto abc;
}
else
{
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
case 4:
if(b == 50)
{
printf(" 顯示學生最大分,最小分:\n");
min = stu[0];
max = stu[49];
for(i=0;i<50;i++)
if(min > stu[i])
min = stu[i];
for(i=0;i<50;i++)
if(max < stu[i])
max = stu[i];
printf(" %d %d ",max ,min);
printf("請選擇下一個選項:\n");
goto abc;
}
else
{
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
case 5:
if(b == 50)
{
printf(" 統計各分數段人數:\n");
// ************************************
// 哥們,這里你自己來寫好嗎?我給點提示,把及格,不及格寫出來。細分分數段,你自己來吧。
int x=0,y=0;
for(i=0;i<50;i++)
if (stu[i]>=60)
x++;
else
y++;
printf(" 及格人數 %d 人,不及格人數 %d 人\n",x,y);
// ***********************************
printf("請選擇下一個選項:\n");
goto abc;
}
else
{
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
case 6:
break;
default:
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
//switch語句結束。
getch();
}
親,剛寫好了。我沒調試。這個僅供參考。自己調試,有錯就找找。
是否可以解決您的問題?
❿ c語言學生試卷分數統計
#include<stdio.h>
#defineN50//學生人數
#defineM3//課程門數
voidInput(intscore[][M+3],intn)
{
inti,j,sum;
printf("InputNumberand%dscore: ",M);
for(i=0;i<n;i++)
{
sum=0;
printf("%d:",i+1);
for(j=0;j<=M;j++)
{
scanf_s("%d",&score[i][j]);
if(j!=0)
sum+=score[i][j];
}
score[i][M+1]=sum;
score[i][M+2]=sum/M;
}
}
voidOutput(intscore[][M+3],intn)
{
inti,j;
printf(" Number ");
for(i=0;i<M;i++)
printf("sub%d ",i+1);
printf("<ahref="https://www..com/s?wd=Total&tn=44039180_cpr&fenlei=--bIi4WUvYETgN-"target="_blank"class="-highlight">Total</a> Average ");
printf("----------------------------------------- ");
for(i=0;i<n;i++)
{
for(j=0;j<M+3;j++)
printf("%d ",score[i][j]);
printf(" ");
}
}
voidSort(inta[][M+3],intn)
{
inti,j,k,t;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
if(a[j][M+2]<a[j+1][M+2])
{
for(k=0;k<M+3;k++)
{
t=a[j][k];
a[j][k]=a[j+1][k];
a[j+1][k]=t;
}
}
}
}
voidmain()
{
intscore[N][M+3],n;
printf("?");
scanf_s("%d",&n);
Input(score,n);
Output(score,n);
Sort(score,n);
Output(score,n);
}