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

  • C璇█缂栫▼棰:鏈5涓瀛︾敓,姣忎釜瀛︾敓鏈3闂ㄨ鎴愮哗,浠庨敭鐩樹笂杈撳叆浠ヤ笂鏁版嵁(鍖 ...
    绛旓細for(idx=0;idx<STUDENTS_MAX;idx++){printf("name:"
  • ...浠庨敭鐩杈撳叆瀛︾敓鏁版嵁(鍖呮嫭瀛﹀彿,濮撳悕,3闂ㄨ绋嬫垚缁),璁$畻鍑哄钩鍧囨垚缁鐧 ...
    绛旓細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(...
  • ...鍖呮嫭瀛︾敓瀛﹀彿(瀛楃鍨)銆佸鍚(瀛楃鍨)鍜3闂ㄨ鎴愮哗(鏁村瀷)
    绛旓細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[...
  • c璇█缂栫▼ 瀹氫箟涓涓5琛3鍒楃殑浜岀淮鏁扮粍鏉ヤ繚瀛5涓悓瀛︾殑3闂ㄨ鎴愮哗銆
    绛旓細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);...
  • 鐢C璇█缂栧啓绋嬪簭,瀹屾垚浠ヤ笅鍔熻兘: (1) 鏈5涓瀛︾敓,姣忎釜瀛︾敓鐨勬暟鎹寘鎷鍙...
    绛旓細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...
  • c璇█浠庨敭鐩杈撳叆5浣嶅悓瀛3闂ㄦ垚缁骞跺鎬诲拰鎺掑簭
    绛旓細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 ...
  • c璇█缂栫▼:杈撳叆5涓瀛︾敓3闂ㄨ鐨勬垚缁╄鏂,鏁板,鑻辫,a鍚屽涓夐棬鎴愮哗80,90...
    绛旓細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...
  • C璇█:5涓汉3闂ㄨ,姹傝緭鍑烘鎴愮哗,骞冲潎鎴愮哗
    绛旓細璁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涓汉鐨...
  • C璇█缂栫▼:缂栧啓绋嬪簭瀹炵幇,5涓瀛︾敓,姣忎釜瀛︾敓鐨勬暟鎹寘鎷鍙枫佸鍚嶃3闂ㄨ...
    绛旓細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[...
  • 扩展阅读:c++语言入门自学 ... 少儿编程课程免费平台 ... c十十编程要学多久 ... c十十编程知识点 ... 少儿编程免费培训班 ... 初学者c语言的软件 ... c++编程适合几岁学 ... c++入门程序代码 ... c十十入门编程课程视频 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网