2 qq 36710036 qq_36710036 于 2017.01.11 22:28 提问

自学的c语言,编了个程序,很多错误,求解释.

#include
#include
typedef

struct student_st
{
int num;
char name[20];
int score1;
int score2;
int score3;
float average;
};

void createstudent(struct student_st a)
{
int i,j;
float average;
for(i=0;i<3;i++)
{
printf("enter student %d\n",i+1);
printf("学号为:");
scanf("%d",&stu[i].num);
printf("姓名是:");
scanf("%s",&stu[i].name);
printf("第1门成绩是:");
scanf("%d",&stu[i].Score1);
printf("第2门成绩是:");
scanf("%d",&stu[i].Score2);
printf("第3门成绩是:");
scanf("%d",&stu[i].Score3);
printf("\n");
stu[i].average = (stu[i].Score1+stu[i].Score2+stu[i].Score3)/3;

    }

}

void sortstudent(struct student_st b,int c)

{
int i,j,max;
struct student_st temp;
for(i=0;i {
max=i;
for(j=i+1;j {
if(stu[j].average > stu[max].average)
max=j;
}
if(max!=i)
{
temp = stu[j];
stu[j] = stu[i];
stu[i] = temp;
}

    }

}

int main()
{
int i;
struct student_st stu;
struct student_st stu[3];
createstudent(stu);
sortstudent(stu,3);
printf("id\tname\tscore1\tscore2\tscore3\taverage\n");
for(i=0;i<3;i++)
{
printf("%d%s%d%d%d%f",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].average );
printf("\n");
exit(0);
}

3个回答

xianfajushi
xianfajushi   2017.01.12 09:25
已采纳
shen_wei
shen_wei   Ds   Rxr 2017.01.12 15:55
 struct student_st
{
    int num;
    char name[20];
    int score1;
    int score2;
    int score3;
    float average;
};

void createstudent(student_st a[])
{
    int i,j;
    float average;
    for(i=0;i<3;i++)
    {
        printf("enter student %d\n",i+1);
        printf("学号为:");
        scanf("%d",&a[i].num);
        printf("姓名是:");
        scanf("%s",&a[i].name);
        printf("第1门成绩是:");
        scanf("%d",&a[i].score1);
        printf("第2门成绩是:");
        scanf("%d",&a[i].score1);
        printf("第3门成绩是:");
        scanf("%d",&a[i].score1);
        printf("\n");
        a[i].average = (a[i].score1+a[i].score1+a[i].score1)/3;
    }
}

void sortstudent(student_st b[],int c)

{
    int i,j,max;
    struct student_st temp;
    for(i=0;i < c;i ++)
    {
        max=i;
        for(j=i+1;j < c;j++) 
        {
            if(b[j].average > b[max].average)
                max=j;
        }
        if(max!=i)
        {
            temp = b[j];
            b[j] = b[i];
            b[i] = temp;
        }
    }
}

int main()
{
    int i;
    //struct student_st stu;
    struct student_st stu[3];
    createstudent(stu);
    sortstudent(stu,3);
    printf("id\tname\tscore1\tscore2\tscore3\taverage\n");
    for(i=0;i<3;i++)
    {
        printf("%d%s%d%d%d%f",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].average );
        printf("\n");       
    }
    return 0;
}
qq_36710036
qq_36710036 谢谢 已经懂了 我传参知识点没学好
一年多之前 回复
KinoluKaslana
KinoluKaslana   2017.01.12 10:40

下面main里面,变量名称重复
sortstu那个函数的参数应该是一个结构体指针类型

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
又做了一个小程序,修改文件夹图标。
<br /><br />又做了一个小程序,修改文件夹图标。<br /> <br />回家有好几天,每天闲得蛋疼,想动手写点东西。之前学软件换肤的时候,发现这个界面设计呀是很重要的,直接可以影响用户对一款软件的评价。既然是美化那windows需不需要美化呢?文件夹美化,对!给文件夹换个图标。心动不如行动,马上百度了一下如何给文件夹换图标,果然有教程。具体的就是写一个.ini和一个.bat文件。于是马上动手实践了一把,果然成功了。接下来就是编程实现了。前后四五天时间终于搞定了。<br />软件截图:<br />
100盏灯的问题(C语言实现)
有100盏灯,从1~100编上号,开始时所有的灯都是关着的,第一次,把所有编号是1的倍数的灯的开关状态改变一次;第二次,把所有编号是2的倍数的灯的开关状态改变一次;第三次,把所有编号是3的倍数的灯的开关状态改变一次;以此类推,直到把所有编号是100得倍数的灯的开关状态改变一次。问,此时所有开着的灯的编号? //        有100盏灯,从1~100编上号,开始时所有的灯都是关着的,  //
100个房间,100个服务员依次做相反操作,求最后状态
题目描述:宾馆里有一百个房间,从1-100编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”…,以后每个服务员都是如此。当第100个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)问题分析:用a[1],a[2],…,a[n]表示编号为1,2,3,…,n的门是否
我是如何自学C语言的(一个菜鸟的学习路)
首先,本人也是一个菜鸟,目前依然还在学习,当初在我开始自学C语言的时候,走过了好多弯路,如果你看到这篇文章,希望你不要走我走过的弯路,这也是我写这篇文章的目的,我也不想像老头子一样叨叨叨,哪些要做,哪些不要做,好像自己很牛逼一样。我只是把自己觉得是坑,是弯路的地方,结合自己的看法,复述给你听,希望你有自己的理解。 1.  不停的换教程,我总觉得自己正在学的教程没有把我给讲懂,就认为这教程不行,后
【记录】编写用以输出个十百位数的C语言小程序
任务要求:编写程序,输入一个3位整数,打印输出其个位数、十位数和百位数。 开发环境:Visual C++ 6.0 代码如下: #include void main() { int A,a,b,c; printf("请输入一个3位整数:\n"); scanf("%d",&A) a=A/100; b=A/10%10; c=A%100%10; printf("个位数为:%d
C语言:求第N个至M个之间的素数和(包括第N个和第M个)
关于素数的问题是常给初学C语言者所举的例子,下面介绍一个经典的例题。我们认为2是第一个素数,3是第二个素数,5是第三个素数,以此类推。现在,给定两个整数N和M,且0&amp;lt;N&amp;lt;=M&amp;lt;=200,程序需计算出第N个素数到第M个素数之间所有的素数的和,包括第N个素数和第M个素数。输入格式:两个整数,第一个表示N,第二个表示M。输出格式:一个整数。输入样例:2 4输出样例:15下面是正确的程序...
纯C语言求点集的凸包程序(含边界提取)
求取点集凸包的数学原理为最简单的,在网上能够找到。 /******************************************************************************* * 文件名称 : GeoEnvelope.h * 当前版本 : 1.3 * 作 者 : I_am_No3 * 设计日期 : 2017年3月8日 * 内容摘要 :
自学C语言编程第一个/求两个数的和
任务和代码:/* *copyright(c)2016,行者 *All rights reserved. *文件名称:main.c *作者:行者-胤临 *时间;2016年1月20号 *版本号:V1.0 * *问题描述:输入两个整数,求和并输出 *程序输出:求两个数的和 */ #include int main() { int a,b,sum; scanf("%d%d",&a,&b)
求三个数的平均数
题目:输入三个整数,输出他们的平均值。保留3位小数。 #include int main() { int m , n , v ; double avg; scanf("%d%d%d", &m,&n,&v); //C语言中不能中间声明变量,要在程序的开始位置将变量定义。 //double avg = (m + n + v )/3.0; avg = (m + n + v )
用C语言编了个EXE小程序,改他的图标
用C语言编了个EXE小程序,想改他的图标,要怎么做