C语言程序设计 纠错

程序的功能是:有五个学生,每个学生的数据包括学号、姓名(最长19字节)、三门课的成绩,从键盘输入五个学生的数据,计算每个学生的平均成绩并按平均成绩由高到低排序,并将排序结... 程序的功能是:有五个学生,每个学生的数据包括学号、姓名(最长19字节)、三门课的成绩,从键盘输入五个学生的数据,计算每个学生的平均成绩并按平均成绩由高到低排序,并将排序结果显示。要求用结构体编程,变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。编程可用素材:printf("Please input info of students:No Name Math English Computer\n")...。
  程序的运行效果应类似地如图1所示,图1中的:
    2001 wanghai 78 83 90
    2003 zhangzhong 82 80 98
    2005 liumei 95 81 90
    2006 sunqian 70 77 90
    2009 jiansansa 63 87 90

#include <stdio.h>
#include <stdlib.h>

/* User Code Begin(考生可在本行后添加代码,行数不限) */

typedef struct
{
int num;
char name[20];
int math, english, computer;
float average;
} STUDENT;

void stu(STUDENT *ss, int n);

/* User Code End(考生添加代码结束) */

int main(void)
{
STUDENT myclass[5], *pStu = myclass;
int i;
const int N = 5;

/* User Code Begin(考生可在本行后添加代码,行数不限) */
printf("Please input info of students:No Name Math English Computer\n");
for (i = 0; i < N; i ++)
{
(pStu + i)->average = (float)(pStu + i)->english + (pStu + i)->computer + (pStu + i) -> math;
printf("%d: ", i + 1);
scanf("%d %s %f", &(pStu + i)->num, (pStu + i)->name,
&(pStu + i)->average);
}
stu (myclass, 5);

/* User Code End(考生添加代码结束) */

printf("\nResult of sort:\n");
printf("Num Name Math English Computer Average\n");
for (i=0; i<N; i++)
{
printf("%-5d %-20s %-8d %-8d %-8d %-.2f\n", (pStu+i)->num, (pStu+i)->name,
(pStu+i)->math, (pStu+i)->english, (pStu+i)->computer, (pStu+i)->average);
}

return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,行数不限) */

void stu(STUDENT *ss, int n)
{
int i, j;
STUDENT tmp;

for (i = 0; i < n - 1; i ++)
{
for ( j = i + 1; j < n ; j ++)
{
if (*(ss + i) ->average < *(ss + j) -> average)
{
tmp = *(ss + i) ->average;
*(ss + i) -> average = *(ss + j) -> average;
*(ss + j) -> average = tmp;
}
}
}
}
展开
 我来答
手机用户28675
2014-07-01 · 超过68用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:163万
展开全部
while(scanf("%d",&n)!=EOF) { if(n==0)break; a=sg(n); if(a>=10) a=sg(a); printf("%d\n",a); }
这个循环出错了,如果按你这个代码来执行的话,每次读入一个n的值,循环里都是只计算一次a的值,a的值要么是sg(n),要么是sg(a),然后继续读入新的n的值。
要想满足“如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。”这个要求的话,在循环里还得加上一个循环,反复计算a的值,直到其为一位数。
请采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式