#include
struct student
{
char name[20];
float sum, average;
int kemu[10];
};
void main()
{
struct student stu[45];
int a,b,i;
printf("请输入学生的人数,科目门数\n");
scanf("%d%d", &a,&b);
for (i= 0; i<a; i++)
{
printf("请依次输入第%d个学生的姓名:", i++);
scanf("%s", &stu[i].name);
for (i = 0; i < =b; i++)
{
printf("请依次输入各科目分数\n");
scanf("%d", &stu[i].kemu);
}
stu[i].sum = 0;
for (i = 0; i < b; i++)
{
stu[i].sum = stu[i].kemu[i] + stu[i].sum;
}
stu[i].average = stu[i].sum / b;
}
printf("姓名 总成绩 平均成绩\n");
for (i = 0; i<a; i++)
printf("%s %f %f\n",stu[i].name,stu[i].sum,stu[i].average);
}
建议: 1.添加科目名称,English, Math ... ,方便阅读。
2.以学号为唯一标识比用姓名好,有些同班还有同名的呢。
3.真正的系统是需要数据保存的,且不说使用数据库,但可以使用文本记录这些分数。
4.可以考虑支持纠错,就是万一输入错了,想要更改,怎么更改。这个稍微难点,有时间兴趣可以试试。
scanf("%s", &stu[i].name); 这句, 改为scanf("%s", stu[i].name);
c语言你要这样写,就看看结构体和链表那一块吧
#include
struct student
{
char name[20];
float average;
int sum,kemu[10];
};
struct student stu[45];
int a, b, i, j;
int sum(int kemu[10]);
struct student stu[45];
void main()
{
printf("请输入学生的人数,科目门数\n");
scanf("%d%d", &a,&b);
for (i = 1; i < a + 1; i++)
{
printf("请输入第%d个学生的姓名:", i);
scanf("%s", stu[i].name);
for (j = 1; j < b + 1; j++)
{
printf("请依次输入科目分数\n");
scanf("%d", &stu[i].kemu[i]);
}
}
for (i = 1; i < a + 1; i++)
{
stu[i].sum = sum(stu[i].kemu);
stu[i].average = stu[i].sum / b;
}
printf("姓名 总成绩 平均成绩\n");
for (i = 1; i < a+1; i++)
{
printf("%s %d %f\n", stu[i].name, stu[i].sum, stu[i].average);
}
}
int sum(int kemu[10])
{
int sum = 0;
for (i = 0; i<b; i++)
{
sum =kemu[i]+sum;
}
return sum;
}
为什么出不来我想要的结果?
#include<stdio.h>
struct stu{
char stuName[100];
int stuNumber[100];
double projectScore[100];
double averScoer[100];
}stu;
void main(){
double total =0;
static struct stu info[100];
printf("请输入学生人数和科目数\n");
int stuN,proN;
scanf("%d %d",&stuN,&proN);
for(int i =0;i<stuN;i++){
printf("请输入学生名称\n");
scanf("%s",&info[i].stuName[i]);
for(int j =0;j<proN;j++){
printf("请输入第%d科科目的成绩\n",j);
scanf("%lf",&info[i].projectScore[j]);
}
}
for(int k=0;k<stuN;k++){
for(int m=0;m<proN;m++){
total=total+info[k].projectScore[m];
}
info[k].averScoer[k]=total/proN;
total=0;
}
for(int x=0;x<stuN;x++ ){
printf("同学姓名为:");
putchar(info[x].stuName[x]);
printf("\n");
for(int y=0;y<proN;y++){
printf("第%d科目的成绩为 %lf \n",y,info[x].projectScore[y]);
}
printf("平均成绩为:%lf",info[x].averScoer[x]);
}
}
按照你写的意思来的,不过还是存在很大问题,如果我定义的人数超过100呢,所以说这种方法还是不够好的。我仅仅是按照你代码的意思写的。