C语言程序输入5学生3门课成绩并输出平均分用结构体指针做 C语言编程:输入5名学生3门课程成绩
3.C\u8bed\u8a00 \u7528\u7ed3\u6784\u4f53\u7c7b\u578b\u7f16\u4e00\u7a0b\u5e8f,\u8f93\u5165\u4e00\u4e2a\u5b66\u751f\u7684\u5b66\u53f7,\u59d3\u540d\u53ca\u4e09\u95e8\u8bfe\u7684\u6210\u7ee9,\u8ba1\u7b97\u5e76\u8f93\u51fa\u5e73\u5747\u6210\u7ee9#includestruct stud {int num;char name[30];float score[3];} ;int main(){struct stud stu ;int i;float avg ;printf("input number: "); scanf("%d", &stu.num );printf("input name: " ); scanf("%s", stu.name );printf("input 3 score:\n");avg=0;for( i=0;i<3;i++ ){scanf("%f", &stu.score[i] );avg += stu.score[i] ;}avg /= 3 ;printf("average score: %f\n", avg );return 0;}
\u60a8\u597d\uff01\u4e0b\u9762\u662f\u6211\u5199\u7684\u7a0b\u5e8f\u5e0c\u671b\u5bf9\u60a8\u6709\u7528\uff01
#include
void main()
{
int x1,x2,x3,x4,x5,y1,y2,y3,y5,y5,z1,z2,z3,z4,z5,m1,m2,m3,m4,m5,n1,n2,n3;
printf("\u8f93\u51655\u540d\u540c\u5b66\u76843\u95e8\u8bfe\u7a0b\u7684\u6210\u7ee9 x1,x2,x3,x4,x5,y1,y2,y3,y5,y5,z1,z2,z3,z4,z5\n");
scanf("%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d\uff0c%d",&x1,&x2,&x3,&x4,&x5,&y1,&y2,&y3,&y4,&y5,&z1,&z2,&z3,&z4,&z5);
n1=(x1+x2+x3+x4+x5)/5;
n2=(y1+y2+y3+y4+y5)/5;
n3=(z1+z2+z3+z4+z5)/5;
m1=(x1+y1+z1)/3;
m2=(x2+y2+z2)/3;
m3=(x3+y3+z3)/3;
m4=(x4+y4+z4)/3;
m5=(x5+y5+z5)/3;
printf("%d,%d,%d,%d,%d,%d,%d,%d",m1,m2,m3,m4,m5,n1,n2,n3);
}
我这儿有一个写好的,改改就可以用.不过个人建议不要这样,我的东西你看看思路就行,主要要自己实现,稍后我给你文件.
切记:尽力自己实现
#ifndef _STULIST_H
#define _STULIST_H
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
#include<string.h>
#include<assert.h>//断言
#include<conio.h>//getch()
#define ADDSTU 1
#define DISPLAYSTU 2
#define UPDATE 3
#define DELSTU 4
#define SORTSCORE 5
#define SORTNUM 6
#define SELECTNAME 7
#define SELECTNUM 8
typedef struct student
{
long num;
char name[32];
long classnum;
float score_c;
float score_english;
float score_math;
float score_avg;
struct student * next;
}nodelist,*pnodelist;
#define LEN sizeof(nodelist)
#define FORMAT "%-7d%-12d%-9s%-8.2f%-11.2f%-8.2f%-7.2f%
"
#define DATA p->num,p->classnum,p->name,p->score_c,p->score_english,p->score_math,p->score_avg
void menu(void);
int init_list(pnodelist *p);
void add_node(nodelist* phead,long num,char *s,long classnum,float c,float eng,float math);
void display_list(pnodelist phead);
void add_stu(pnodelist phead);
void destroy_list(pnodelist phead );
void del_node(pnodelist phead, long num );
pnodelist update_stu( pnodelist phead, long num);
void savefile(pnodelist phead);
void loadfile(pnodelist phead);
pnodelist foundmax(pnodelist phead);
pnodelist sortstu_avg(pnodelist phead);
pnodelist foundmin(pnodelist phead );
pnodelist sortstu_num(pnodelist phead);
void select_name(pnodelist phead,pnodelist val);
void select_num(pnodelist phead,pnodelist val);
#endif
//学生管理系统菜单
void menu()/*自定义函数实现菜单功能*/
{
system("cls");
printf("
");
printf("|------------学生管理信息系统------------|
");
printf("| 0. 退出学生管理系统 |
");
printf("| 1. 增加学生信息 |
");
printf("| 2. 显示学生信息 |
");
printf("| 3. 修改学生信息 |
");
printf("| 4. 删除学生信息 |
");
printf("| 5. 按成绩进行排序 |
");
printf("| 6. 按学号进行排序 |
");
printf("| 7. 按姓名进行查询 |
");
printf("| 8. 按学号进行查询 |
");
printf("|----------------------------------------|
");
printf("请选择您的操作:");
}
//初始化头指针
int init_list(pnodelist *p)
{
if (p == NULL)
{
return 0;
}
*p = (pnodelist)malloc(LEN);
if( p == NULL )
{
printf("failed!
");
return 0;
}
(*p)->next = NULL;
return 1;
}
//添加学生信息
void add_stu(pnodelist phead)//输入学生信息
{
long num, classnum;
char ch, name[32] = {0};
float c;
float english;
float math;
do{
printf("please input: num classnum name c english math
");
if( 6 == scanf("%ld %ld %s %f %f %f",&num,&classnum,name,&c,&english,&math) )
{
add_node(phead,num,name,classnum,c,english,math);
}
else
{
printf("error! Input parameters error
");
printf("input enter to menu
");
while(getchar() != '
')continue;//清除错误值
getch();
menu();
return;
}
while(getchar() != '
')continue;
printf("continue? y/n
");
ch = getchar();}while(ch=='Y '|| ch=='y');
printf("input enter to menu!
");
}
//添加学生信息结点到链表中
void add_node( pnodelist phead, long num, char* s, long classnum, float c, float english, float math )//将学生信息写入文件
{
pnodelist p = phead;
pnodelist q = NULL;
assert(phead != NULL);
q = (pnodelist)malloc(LEN);
assert(q != NULL);
q->num = num;
q->classnum = classnum;
q->score_c = c;
q->score_english = english;
q->score_math = math;
q->score_avg = (float)( ( q->score_c + q->score_english + q->score_math ) / 3.0 );
strcpy(q->name,s);
q->next = NULL;
while(p->next != NULL)
{
p = p->next;
}
p->next = q;
}
//显示学生信息
void display_list(pnodelist phead)
{
pnodelist p = NULL;
assert(phead != NULL);
p = phead->next;
if (p == NULL)
{
printf("no record!
");
printf("input enter to menu!
");
}
else
{
printf("num classnum name c english math avg
");
while(p != NULL)
{
printf(FORMAT,DATA);
p = p->next;
}
printf("input enter to menu!
");
}
return;
}
//按学号修改学生信息
pnodelist update_stu( pnodelist phead, long number)
{
long num, classnum;
char ch, name[32] = {0};
float c;
float english;
float math;
pnodelist p = NULL;
assert(phead != NULL);
p = phead->next;
if (p == NULL)
{
printf("no record!
");
}
else
{
while( (p->next != NULL) && (p->num != number) )
{
p = p->next;
}
if(p->num != number)
{
printf("no such num record!
");
return 0;
}
printf("please input: num classnum name c english math
");
scanf("%ld %ld %s %f %f %f",&num,&classnum,name,&c,&english,&math);
p->num = num;
p->classnum = classnum;
strcpy(p->name,name);
p->score_c = c;
p->score_english = english;
p->score_math = math;
p->score_avg = (float)( ( p->score_c + p->score_english + p->score_math ) / 3.0 );
}
return phead;
}
//清除所有信息
void destroy_list(pnodelist phead )
{
pnodelist p;
while(phead->next!=NULL)
{
p = phead->next;
phead->next = phead->next->next;
free(p);
}
free(phead);
return ;
}
//删除学号为num的学生信息
void del_node(pnodelist phead, long num )
{
pnodelist p,q;
assert(phead != NULL);
p=phead;
q=p->next;
//assert( q != NULL );
if ( q == NULL )
{
printf("no record!
");
return ;
}
while(q!=NULL && q->num!=num )
{
p=q;
q=q->next;
}
if(q==NULL)
{
printf("no such record!
");
}
else
{
p->next=q->next;
free(q);
printf("delete successfully
");
}
}
//保存链表信息到文件中
void savefile(pnodelist phead)
{
FILE *fp = NULL;
pnodelist p = NULL;
assert( phead != NULL);
p = phead->next;
fp = fopen("file.txt","wb");
assert(fp != NULL);
while(p != NULL)
{
fwrite(p,LEN,1,fp);
p = p->next;
}
fclose(fp);
}
//装载文件信息到链表中
void loadfile(pnodelist phead)
{
FILE* file;
nodelist p;
assert(phead != NULL);
//p = phead;
file = fopen("file.txt","rb");
//assert(file != NULL);
if (file == NULL)
{
return ;
}
while(fread(&p,LEN,1,file) == 1)
{
phead->next = (pnodelist)malloc(LEN);
assert(phead->next != NULL);
*(phead->next) = p;
phead = phead->next;
}
fclose(file);
}
//寻找链表中平均成绩最大值
pnodelist foundmax(pnodelist phead )
{
pnodelist max = NULL;
pnodelist s = NULL;
pnodelist p = NULL;
assert(phead != NULL);
if(phead->next == NULL)
{
return NULL;
}
max = phead;
p = phead;
while(p->next != NULL)
{
if( p->next->score_avg > max->next->score_avg )
{
max = p;
}
p = p->next;
}
s = max->next;
max->next = max->next->next;
return s;
}
//对平均值进行排序
pnodelist sortstu_avg(pnodelist phead)
{
pnodelist phead1 = NULL;
pnodelist s = NULL;
pnodelist p = NULL;
assert( init_list(&phead1) != 0 );
p = phead1;
assert(phead != NULL);
while( ( s = foundmax(phead) ) != NULL )
{
p->next = (pnodelist)malloc(LEN);
*(p->next)= *s;
p = p->next;
p->next = NULL;
}
savefile(phead1);
printf("sort ok!
Successfully saved!
input enter to menu!
");
return phead1;
}
//寻找链表中学号最小值
pnodelist foundmin(pnodelist phead )
{
pnodelist min = NULL;
pnodelist s = NULL;
pnodelist p = NULL;
assert(phead != NULL);
if(phead->next == NULL)
{
return NULL;
}
min = phead;
p = phead;
while(p->next != NULL)
{
if( p->next->num < min->next->num )
{
min = p;
}
p = p->next;
}
s = min->next;
min->next = min->next->next;
return s;
}
//对学号进行排序
pnodelist sortstu_num(pnodelist phead)
{
pnodelist phead1 = NULL;
pnodelist s = NULL;
pnodelist p = NULL;
assert( init_list(&phead1) != 0 );
p = phead1;
assert(phead != NULL);
while( ( s = foundmin(phead) ) != NULL )
{
p->next = (pnodelist)malloc(LEN);
*(p->next)= *s;
p = p->next;
p->next = NULL;
}
savefile(phead1);
printf("sort ok!
Successfully saved!
input enter to menu!
");
return phead1;
}
//按姓名进行查询
void select_name(pnodelist phead, pnodelist val )
{
pnodelist p = NULL;
if(phead->next == NULL)
{
printf("no record!
");
return;
}
p = phead->next;
while(p != NULL)
{
if( 0 == strcmp(p->name,val->name) )
{
printf("num classnum name c english math avg
");
printf(FORMAT, DATA);
return;
}
p = p->next;
if(p == NULL)
{
printf("no such record!
");
return;
}
}
}
//按学号进行查询
void select_num(pnodelist phead, pnodelist val )
{
pnodelist p = NULL;
if(phead->next == NULL)
{
printf("no record!
");
return;
}
p = phead->next;
while(p != NULL)
{
if( p->num == val->num )
{
printf("num classnum name c english math avg
");
printf(FORMAT, DATA);
return;
}
p = p->next;
if(p == NULL)
{
printf("no such record!
");
return;
}
}
}
#include<stdio.h>
typedef struct node
{
int No;
int c1;
int c2;
int c3;
int sum;
double aver;
}node;
int main()
{
node stu[5],*p=stu;
int i;
for(i=0;i<5;i++)
{
scanf("%d %d %d",&(p+i)->c1,&(p+i)->c2,&(p+i)->c3);
(p+i)->No=i;
(p+i)->sum=(p+i)->c1+(p+i)->c2+(p+i)->c3;
(p+i)->aver=(p+i)->sum*1.0/3;
}
printf("学号 课程1 课程2 课程3 平均分
");
for(i=0;i<5;i++)
{
printf("%-6d%-7d%-7d%-7d%.2lf
",(p+i)->No,(p+i)->c1,(p+i)->c2,(p+i)->c3,(p+i)->aver);
}
return 0;
}
// 刚编出来的,没加太多功能,只是最基本的输入、取平均值,很简单。
// 解释一个地方:
// #include<stdlib.h>和下面的fflush(stdin);是清除输入缓冲区,因为里面有字符串的输入。
// 正文如下
#include<stdio.h>
#include<stdlib.h>
#define KeNum 3
struct Student
{
char name[10];
float kecheng[KeNum];
float Ave;
};
void main()
{
int n=0,stunum=0;
Student stu[5],*p;
for(stunum=0,p=stu;stunum<5;stunum++,p++)
{
printf("请输入第%d名学生姓名 %d门课成绩,用空格分开,回车结束\n",stunum+1,KeNum);
scanf("%s",p->name);
for(n=0;n<KeNum;n++)
scanf("%f",&(p->kecheng[n]));
fflush(stdin);
}
for(stunum=0,p=stu;stunum<5;stunum++,p++)
{
p->Ave=0;
for(n=0;n<KeNum;n++)
p->Ave+=p->kecheng[n];
p->Ave/=KeNum;
}
for(stunum=0,p=stu;stunum<5;stunum++,p++)
printf("%s:%f %f %f Average:%f\n",p->name,p->kecheng[0],p->kecheng[1],p->kecheng[2],p->Ave);
}
绛旓細for(idx=0;idx<STUDENTS_MAX;idx++){printf("name:"
绛旓細int sco2;int sco3;}stu;int main(){ int i;stu s[5];FILE *fp;float ave;printf("璇杈撳叆浜涓瀛︾敓鐨勫鍙峰拰涓夐棬鎴愮哗锛歕n");for(i=0;i<5;i++){ scanf("%s%d%d%d",s[i].id,&s[i].sco1,&s[i].sco2,&s[i].sco3);} if((fp=fopen("stud","w"))==NULL){ printf(...
绛旓細s[i].sum += s[i].score[j]; //璁$畻鎴愮哗鎬诲拰 s[i].ave = s[i].sum;} } printf("before sort\n"); // 鎺掑簭鍓嶄俊鎭緭鍑 for(i = 0; i < 5; ++i){ printf("no=%d name=%s ", s[i].no, s[i].name);for(j = 0; j < 3; ++j)printf("%d ", s[...
绛旓細include <stdio.h>#include <stdlib.h>#define M 5#define N 3int main(){int scores[M][N], sum, max[N], min[N], i, j;printf("璇杈撳叆瀛︾敓鎴愮哗锛歕n");for (i = 0; i < M; i++) {for (j = 0; j < N; j++) {scanf("%d", &scores[i][j]);}}printf("\n璇...
绛旓細include <stdio.h>#include <stdlib.h>#include <string.h>struct{char name[50];long num;float degree[3];float avg;}stu[3];int main(){int i;int j;float sum=0.0;FILE *fp;printf("渚濇杈撳叆瀛︾敓淇℃伅锛歕n");for(i=0;i<3;i++){printf("杈撳叆绗%d瀛︾敓鐨勫鍚:\n",i+1);...
绛旓細printf("3闂ㄨ鎬诲钩鍧囨垚缁: %4.2f\n",avertotal) ;printf("鏈楂樺垎鍚屽鏈%d涓: \n",stumax_num) ;printf("濮撳悕 瀛﹀彿 鎴愮哗涓 鎴愮哗浜 鎴愮哗涓 \n") ;for(i=0; i<stumax_num; i++){ printf("%4s %4s %-4.2f %-4.2f %-4.2f\n",stumax[i].name,stumax[i].stunum,stumax...
绛旓細include<stdio.h>int main() {int i, j, temp, sum = 0, total[10], scores[5][3];for (i=0; i<5; i++){printf ("杈撳叆绗 %d 浣嶅悓瀛3闂ㄨ鐨鎴愮哗:", i+1);for (j=0; j<3; j++){scanf ("%d", &scores[i][j]);sum += scores[i][j];}total[i] = sum;}for ...
绛旓細include <stdio.h>double a[11][5]={0};int i,j;void scanfa(double b[11][5]){printf("璇蜂緷娆杈撳叆姣忎綅鍚屽鐨勮鏂囥佹暟瀛︺佽嫳璇殑鎴愮哗:\n");for(i=0;i<5;i++)for(j=0;j<3;j++)scanf("%lf",&b[i][j]);}void SumStu(double b[11][5])//璁$畻杈撳嚭姣忎釜鍚屽鐨勬诲垎{for(i...
绛旓細璁5涓汉3闂ㄨ锛屾眰杈撳嚭鎬鎴愮哗涓庡钩鍧囨垚缁#include <stdio.h> int main(){ float score = 0.0; float score_total = 0.0; float score_average = 0.0; int n1; int n2; for(n1=0;n1<5;n1++) { for(n2=0;n2<3;n2++) { printf("璇杈撳叆绗%d涓汉鐨...
绛旓細int num;char name[20];float sorce[3];}stu[5];//10涓夋墜 int main(int argc, char* argv[]){ for(int i=0;i<5;i++){ printf("璇杈撳叆绗%d涓汉鐨勫鍙凤紝濮撳悕锛涓夐棬璇惧垎鏁\n",i+1);scanf("%d%s%f%f%f",&stu[i].num,&stu[i].name,&stu[i].sorce[0],&stu[i].sorce[...