| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 554 人关注过本帖
标题:这个题目做完后总觉得是个死循环谁能帮把我带出来啊
只看楼主 加入收藏
olifuu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-2
收藏
 问题点数:0 回复次数:3 
这个题目做完后总觉得是个死循环谁能帮把我带出来啊

统计成绩
[问题描述]给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:
(1) 按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;
(2) 按名次列出每个学生的姓名与分数。
[基本要求]学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。
#include <stdio.h>
#define n 10
typedef struct
{char name[8];
int score;
}stu;
stu *R;
main()
{int num,i,j,max,temp;
stu *R;
printf("\n please input score:\n");
for(i=0;i<n;i++)
{printf("name:\n");
scanf("%s",&R[i].name);
scanf("%4d",&R[i].score);
}
num=num-1;
for(i=0;i<n;i++)
{max=i;

for(j=i+1;j<n;j++)
if(R[j].score>R[max].score)
max=j;
if(max!=i)
{temp=R[max].score;
R[max].score=R[i].score;
R[i].score=temp;
}
if((i>0)&&(R[i].score<R[i-1].score))
num=num+1;
printf("%4d%s%4d",num,R[i].name,R[i].score);
}
return 0;
}
这是我做的
他一直提示我输入姓名和成绩

搜索更多相关主题的帖子: please 统计 
2006-12-07 15:14
zzymoon
Rank: 1
等 级:新手上路
帖 子:82
专家分:1
注 册:2006-9-19
收藏
得分:0 
以下是引用olifuu在2006-12-7 15:14:55的发言:

统计成绩
[问题描述]给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:
(1) 按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;
(2) 按名次列出每个学生的姓名与分数。
[基本要求]学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。
#include <stdio.h>
#define n 10
typedef struct
{char name[8];
int score;
}stu;
stu *R;
main()
{int num,i,j,max,temp;
stu *R;
printf("\n please input score:\n");
for(i=0;i<n;i++)
{printf("name:\n");
scanf("%s",&R[i].name);
scanf("%4d",&R[i].score);
}
num=num-1; /*num没有进行初始化*/
for(i=0;i<n;i++)/*用冒泡法的话,不用这样子写,而且你没有考虑name也随着score的移动而移动*/
{max=i;

for(j=i+1;j<n;j++)
if(R[j].score>R[max].score)
max=j;
if(max!=i)
{temp=R[max].score;
R[max].score=R[i].score;
R[i].score=temp;
}
if((i>0)&&(R[i].score<R[i-1].score))
num=num+1;
printf("%4d%s%4d",num,R[i].name,R[i].score);
}
return 0;
}
这是我做的
他一直提示我输入姓名和成绩



程序天下,C的亡魂。 偶``````来自地狱
2006-12-07 15:27
zzymoon
Rank: 1
等 级:新手上路
帖 子:82
专家分:1
注 册:2006-9-19
收藏
得分:0 

#include <stdio.h>
#include<string.h>
#define N 10
typedef struct
{char name[8];
int score;
}stu;
/*stu *R;不要*/
main()
{int num=8,i,j,temp;
char tmp_name[8];
stu R[N];
printf("\n please input score:\n");
for(i=0;i<N;i++)
{printf("Name:");
scanf("%s",&R[i].name);
printf("Score:");
scanf("%4d",&R[i].score); /*输入就不用\n了*/
}
/*num=num-1不要*/
/**************************************************************/
for(i=0;i<N-1;i++)/*循环N-1次*/
for(j=i+1;j<N;j++)
if(R[j].score>R[i].score)/*由大到小冒泡排序*/
/* max=j;不要*/
/*if(max!=i)不要*/
{temp=R[i].score;
R[i].score=R[j].score;
R[j].score=temp;
/******************/
strcpy(tmp_name,R[i].name);
strcpy(R[i].name,R[j].name);
strcpy(R[j].name,tmp_name);
}
/*************************************************************/
/*if((i>0)&&(R[i].score<R[i-1].score))
num=num+1; */
for(i=0,j=1;i<10;i++)
{
if(i>0&&R[i-1].score!=R[i].score)/*从第二个学生开始,如果和前一个学生的成绩一样,则名次也一样*/
j++;
printf("No%2d:%s\t%4d\n",j,R[i].name,R[i].score);

}

getch();
return 0;
}

依你的思路给你做了一点修改``````

程序天下,C的亡魂。 偶``````来自地狱
2006-12-07 16:11
olifuu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-2
收藏
得分:0 

谢谢兄台

2006-12-07 16:25
快速回复:这个题目做完后总觉得是个死循环谁能帮把我带出来啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030217 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved