#include
void main()
{
float maxscore,minscore,minnum,maxnum;
int i,n;
printf("请输入8位同学的学号num:\n");
scanf("%d",&n);
printf("输入8名同学的英语成绩score:\n");
for(i=0;i scanf("%d",&num[i],&score[i]);
maxscore = score[0];minsore= score[0];
maxnum = num[0];minnum= num[0];
for(i=0;i {
if(score[i]>maxscore)
{
maxscore=score[i];
maxnum=num[i];
}
else if (score[i]<minscore)
{
minscore = score[i];
minnum = num[i];
}
}
printf("maxscore=%f,maxnum=%d\n",maxscore,maxnum);
printf("minscore=%f,minnum=%d\n",maxscore,minnum);
}
for(i=201201;i<201209;i++)
for的执行语句是空的
是不是要用二维数组······
if哪里要用等于两个等于号
if(i==0),for()里面错误
int i,a[8],max=0,min=100;//这里不需要用到Grade这个变量
printf("请输入8个同学的成绩=\n");
for(i=0;i {scanf("%d",&a[i]);}
max=a[0];//假设第一个最大,每一次都跟最大的比较
min=a[0];//假设第一个最小,每一次都跟最小的比较
for(i=1;i {
if (max if (min>a[i])min=a[i];//如果后面的数有比min小的就更新min
}
printf("最高分同学的学号i=%d和成绩max%f\n",i,max);
printf("最低分同学的学号i=%d和成绩min%f\n",i,min);
#include
#include
//定义有多少个学生
#define MAX_LENGTH 8
void main()
{
int iArrayNo[MAX_LENGTH];
int iMaxNo = 0;
int iMinNo = 0;
float fArrayValue[MAX_LENGTH];
float fMaxValue = 0.0;
float fMinValue = 100.0;
int i = 0;
for(i=0; i<MAX_LENGTH; i++)//初始化两个数组
{
iArrayNo[i] = 0;
fArrayValue[i] = 0.0;
}
printf("请输入%d个同学的成绩:\n", MAX_LENGTH);
for(i=0; i<MAX_LENGTH; i++)
{
printf("请输入第%d位同学的学号:\n",i+1);
scanf("%d", &iArrayNo[i]);
getchar();//清除回车 linux系统
printf("请输入第%d位同学的成绩:\n",i+1);
scanf("%f",&fArrayValue[i]);
getchar();//清除回车 linux系统
}
fMaxValue=fArrayValue[i];//这一行不需要,你的程序中有,我就没有删除
for(i=0; i<MAX_LENGTH; i++)
{
if( fMinValue >= fArrayValue[i])//判断最低分
{
fMinValue = fArrayValue[i];
iMinNo = iArrayNo[i];
}
if( fMaxValue <= fArrayValue[i] )//判断最高分
{
fMaxValue = fArrayValue[i];
iMaxNo = iArrayNo[i];
}
}
printf("最高分同学的学号是%d和成绩是%.1f\n", iMaxNo, fMaxValue);
printf("最低分同学的学号是%d和成绩是%.1f\n", iMinNo, fMinValue);
/* 说明一下:
* 这种排序方式会出现会将比较成功的数据作为输出的成绩
*/
return ;
}
在Linux系统下测试成功,你看一看
#include <stdlib.h>
#include <stdio.h>
//定义有多少个学生
#define MAX_LENGTH 8
void main()
{
int iArrayNo[MAX_LENGTH];
int iMaxNo = 0;
int iMinNo = 0;
float fArrayValue[MAX_LENGTH];
float fMaxValue = 0.0;
float fMinValue = 100.0;
int i = 0;
for(i=0; i<MAX_LENGTH; i++)//初始化两个数组
{
iArrayNo[i] = 0;
fArrayValue[i] = 0.0;
}
printf("请输入%d个同学的成绩:\n", MAX_LENGTH);
for(i=0; i<MAX_LENGTH; i++)
{
printf("请输入第%d位同学的学号:\n",i+1);
scanf("%d", &iArrayNo[i]);
getchar();//清除回车 linux系统
printf("请输入第%d位同学的成绩:\n",i+1);
scanf("%f",&fArrayValue[i]);
getchar();//清除回车 linux系统
}
fMaxValue=fArrayValue[i];//这一行不需要,你的程序中有,我就没有删除
for(i=0; i<MAX_LENGTH; i++)
{
if( fMinValue >= fArrayValue[i])//判断最低分
{
fMinValue = fArrayValue[i];
iMinNo = iArrayNo[i];
}
if( fMaxValue <= fArrayValue[i] )//判断最高分
{
fMaxValue = fArrayValue[i];
iMaxNo = iArrayNo[i];
}
}
printf("最高分同学的学号是%d和成绩是%.1f\n", iMaxNo, fMaxValue);
printf("最低分同学的学号是%d和成绩是%.1f\n", iMinNo, fMinValue);
/* 说明一下:
* 这种排序方式会出现会将比较成功的数据作为输出的成绩
*/
return ;
}
我在你的基础上写的,你试试!
#include
int main()
{
int i,j,k,a[8],max=0,min=100;
printf("请输入8个同学的成绩=\n");
for(i=0;i<8;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i {
if(max {
max=a[i];
j=i;
}
}
for(i=0;i {
if(min>a[i])
{
min=a[i];
k=i;
}
}
printf("最高分同学的学号i=%d和成绩max=%d\n",j,max);
printf("最低分同学的学号i=%d和成绩min=%d\n",k,min);
return 0;
}
#include
int main()
{
int i,j,k,a[8],max=0,min=100;
printf("请输入8个同学的成绩=\n");
for(i=0;i<8;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i {
if(max {
max=a[i];
j=i;
}
}
for(i=0;i {
if(min>a[i])
{
min=a[i];
k=i;
}
}
printf("最高分同学的学号i=%d和成绩max=%d\n",j,max);
printf("最低分同学的学号i=%d和成绩min=%d\n",k,min);
return 0;
}
回答后效果变了,再发一次
题目要求输出要得到最高分和最低分的同学的学号(201201-201208)和成绩
你粘贴的代码不全,for循环缺表达式缺括号
而且数据类型定义有点混乱,
还有输入输出的指定格式要按你定义的数据类型去指定,分数定义了float就要用%f, 学号定义了int就要用%d
最后一行输出最小的分数变量却用maxscore代替了。
#include <stdio.h>
void main()
{
//定义最大成绩,最小成绩,8位同学成绩存储变量
float maxscore, minscore, score[8];
//定义循环变量,最大分数对应的序号,最小分数对应的学号
int i, num[8], maxnum, minnum;
printf("输入8名个学号和对应的英语成绩,\n");
printf("学号在和英语成绩之间以空格隔开(如1001 90),\n");
printf("每输入完一组学号和成绩,按Enter键换行:\n");
//输入8个学号及8个对应的英语成绩
for(i=0;i<8;i++)
{
scanf("%d %f", &num[i], &score[i]);
}
//设定初始最大值及最小值
maxscore = score[0];
minscore= score[0];
maxnum = num[0];
minnum= num[0];
//真正开始比较,寻找最大值,最小值
for(i=0;i<8;i++)
{
if(score[i]>maxscore)
{
maxscore = score[i];
maxnum = num[i];
}
else if (score[i]<minscore)
{
minscore = score[i];
minnum = num[i];
}
}
//输出结果
printf("maxscore=%f, maxnum=%d\n", maxscore, maxnum);
printf("minscore=%f, minnum=%d\n", minscore, minnum);
}
你题意的要求是什么,如果仅仅输出最高分,最低分,冒泡排序就行了,如果要输出最高分最低分的同时要输出对应的学生的信息,这个时候最好用结构体,定义结构体变量来做,这样信息量大很多
for(i=0;i scanf("%d",&num[i],&score[i]);这句话是什么