| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 931 人关注过本帖
标题:为什么输入一排“烫”●奇怪???
只看楼主 加入收藏
え元元え
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-4-7
收藏
 问题点数:0 回复次数:10 
为什么输入一排“烫”●奇怪???
今天编程做个学生成绩统计的小程序

可是运行时老是输入一堆“烫”
难道我很烫吗??答案当然是否定的```
那是为什么呢``???
请高手门指点下```
搜索更多相关主题的帖子: 输入 
2006-04-08 10:40
え元元え
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-4-7
收藏
得分:0 

我的代码是这样的:
#include<stdio.h>
#include<stdlib.h>

char flag='y';

struct info
{
char name[20];
int grade1;
int grade2;
int grade3;
float avg;
};

int input(struct info stu[])
{
int count=1;

while(flag=='y'||flag=='Y')
{
printf("\n请输入第%d个学生的信息:\n",count);
printf("全输入学生的名字:");
fflush(stdin);
gets(stu[count].name);
printf("第一门成绩是:\n");
scanf("%d",&stu[count].grade1);
printf("第二门成绩是:\n");
scanf("%d",&stu[count].grade2);
printf("第三门成绩是:\n");
scanf("%d",&stu[count].grade3);
count++;
printf("要继续吗?(y/n)");
scanf("%1s",&flag);
}
return count;
}

void arrange(struct info stu[],int count)
{
struct info temp;
for(int a=0;a<count-1;a++)
{
for(int b=1;b<count;b++)
{
if(stu[a].avg<=stu[b].avg)
{
temp=stu[a];
stu[b]=temp;
stu[a]=temp;
}
}
}
}

void display(struct info stu[],int count)
{
printf("学生成绩如下:\n");
for(int a=0;a<count;a++)
{
stu[a].avg=(float)((stu[a].grade1+stu[a].grade2+stu[a].grade3)/3.0);
printf("姓名\t\t平均成绩\n");
printf("%s\t\t%3f",stu[a].name,stu[a].avg);
}
}

void main()
{
int num=0;
struct info stu[50];
char flag1='y';
while(flag1=='y'||flag1=='Y')
{
num=input(stu);
if(flag=='n'||flag=='N')
{
display(stu,num);
arrange(stu,num);
display(stu,num);
}
printf("要继续吗?(y/n)");
scanf("%1s",&flag1);
if(flag1=='n'||flag1=='N')
break;
num++;
}

}
帮忙看看```


2006-04-08 10:40
え元元え
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-4-7
收藏
得分:0 
真诚帖 啊``
没人帮我啊``
好失望```

2006-04-08 10:52
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

错误很多..

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

char flag='y';

struct info
{
char name[20];
int grade1;
int grade2;
int grade3;
float avg;
};

int input(struct info stu[])
{
int count=1;

while(flag=='y'||flag=='Y')
{
printf("\n请输入第%d个学生的信息:\n",count);
printf("全输入学生的名字:");

gets(stu[count-1].name);
printf("第一门成绩是:\n");
scanf("%d",&stu[count-1].grade1);
getchar();
printf("第二门成绩是:\n");
getchar();
scanf("%d",&stu[count-1].grade2);
getchar();
printf("第三门成绩是:\n");
scanf("%d",&stu[count-1].grade3);
getchar();

printf("要继续吗?(y/n)");
scanf("%1s",&flag);
getchar();
if (flag=='y'||flag=='Y')
count++;

}
return count;
}

void arrange(struct info stu[],int count)
{
struct info temp;
for(int a=0;a<count-2;a++)
for(int b=a+1;b<count-1;b++)
if(stu[a].avg<stu[b].avg)
{
temp=stu[a];
stu[a]=stu[b];
stu[b]=temp;
}


}

void display(struct info stu[],int count)
{ int a;

for( a=0;a<count;a++)
{
stu[a].avg=(float)((stu[a].grade1+stu[a].grade2+stu[a].grade3)/3.0);
printf("姓名\t\t平均成绩\n");
printf("%s\t\t%.3f\n",stu[a].name,stu[a].avg);

}
}

main()
{
int num=0;
float *a,b;
a=&b;
struct info stu[50];
char flag1='y';

while(flag1=='y'||flag1=='Y')
{
num=input(stu);
if(flag=='n'||flag=='N')
{
display(stu,num);
arrange(stu,num);
display(stu,num);
}
printf("\n要继续吗?(y/n)");
scanf("%c",&flag1);
getchar();
if(flag1=='n'||flag1=='N')
break;
}

}

有些小的细节 我也没改 总之我这样在C-FREE下可以正常运行.输入..输出..我着急要走

等回来再给你看

[此贴子已经被作者于2006-4-8 12:34:36编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-08 12:10
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用え元元え在2006-4-8 10:40:00的发言:

我的代码是这样的:
#include<stdio.h>
#include<stdlib.h>

char flag='y';

struct info
{
char name[20];
int grade1;
int grade2;
int grade3;
float avg;
};

int input(struct info stu[])
{
int count=1;

while(flag=='y'||flag=='Y')
{
printf("\n请输入第%d个学生的信息:\n",count);
printf("全输入学生的名字:");
fflush(stdin);
gets(stu[count].name);
printf("第一门成绩是:\n");
scanf("%d",&stu[count].grade1);/* 严重马虎 count-1 数组下标起始地址为0 */
printf("第二门成绩是:\n");
scanf("%d",&stu[count].grade2);
printf("第三门成绩是:\n");
scanf("%d",&stu[count].grade3);
count++; /* 这的应该加个 判断语句.要不就不正常多加1了嘛 */
printf("要继续吗?(y/n)");
scanf("%1s",&flag);/* 才看见.这里写 %c就可以啦..为什么要写1S */
}
return count;
}

void arrange(struct info stu[],int count)
{
struct info temp;
for(int a=0;a<count-1;a++)
{
for(int b=1;b<count;b++)/* 循环的不对 */
{
if(stu[a].avg<=stu[b].avg)
{
temp=stu[a];/* 排序错误 */
stu[b]=temp;
stu[a]=temp;
}
}
}
}

void display(struct info stu[],int count)
{
printf("学生成绩如下:\n");
for(int a=0;a<count;a++)
{
stu[a].avg=(float)((stu[a].grade1+stu[a].grade2+stu[a].grade3)/3.0);
printf("姓名\t\t平均成绩\n");
printf("%s\t\t%3f",stu[a].name,stu[a].avg);
}
}

void main()
{
int num=0;
struct info stu[50];
char flag1='y';
while(flag1=='y'||flag1=='Y')
{
num=input(stu);
if(flag=='n'||flag=='N')
{
display(stu,num);/* 最迷糊就这..居然先打印出来然后再 排序.再打印.那样多乱.中间连点东西都不加 自己改吧 */
arrange(stu,num);
display(stu,num);
}
printf("要继续吗?(y/n)");
scanf("%1s",&flag1);/* 这的问题和上面一样 */
if(flag1=='n'||flag1=='N')
break;
num++;/* 不知道有什么用?? 麻烦你解释一下 */
}

}
帮忙看看```

小毛病很多..自己再改下吧..以后自己多细心检查下..


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-08 12:19
等待
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2005-12-1
收藏
得分:0 
在for的括号里面好象不允许定义

2006-04-08 13:00
え元元え
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-4-7
收藏
得分:0 

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

char flag='y';

struct info
{
char name[20];
int grade1;
int grade2;
int grade3;
float avg;
};

int input(struct info stu[])
{
int count=1;
while(flag=='y'||flag=='Y')
{
printf("\n请输入第%d个学生的信息:\n",count);
printf("全输入学生的名字:");
fflush(stdin);
gets(stu[count-1].name);
printf("第一门成绩是:\n");
scanf("%d",&stu[count-1].grade1);
printf("第二门成绩是:\n");
scanf("%d",&stu[count-1].grade2);
printf("第三门成绩是:\n");
scanf("%d",&stu[count-1].grade3);
printf("要继续吗?(y/n)");
scanf("%1s",&flag);
if(flag=='y'||flag=='Y')
{
count++;
}
else
break;
}
return count;
}

void arrange(struct info stu[],int count)
{
struct info temp;
for(int a=0;a<count-1;a++)
{
for(int b=1;b<count;b++)
{
if(stu[a].avg<=stu[b].avg)
{
stu[a]=stu[b];
stu[b]=temp;
temp=stu[a];
}
}
}
}

void display(struct info stu[],int count)
{
printf("学生成绩如下:\n");
for(int a=0;a<count;a++)
{
stu[a].avg=(float)((stu[a].grade1+stu[a].grade2+stu[a].grade3)/3.0);
printf("姓名\t\t平均成绩\n");
printf("%s\t\t%3f",stu[a].name,stu[a].avg);
}
}

void main()
{
int num=0;
struct info stu[50];
char flag1='y';
while(flag1=='y'||flag1=='Y')
{
num=input(stu);
if(flag=='n'||flag=='N')
{
printf("***********************************************\n");
display(stu,num);
arrange(stu,num);
printf("\n***********************************************\n");
display(stu,num);
printf("\n***********************************************\n");
}
printf("要继续吗?(y/n)");
scanf("%1s",&flag1);
if(flag1=='n'||flag1=='N')
break;
}

}

完美````
哈啊 ``
谢谢``


2006-04-08 14:16
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 
赞元元和sunshining

此人已消失
2006-04-08 14:33
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
stu[a]=stu[b];
stu[b]=temp;
temp=stu[a];

~~别的我没看..你这里能对吗???

你把 temp=stu[a] 放到另外俩个的上面!~~迷糊~~


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-08 16:08
え元元え
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-4-7
收藏
得分:0 

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

char flag='y';

struct info
{
char name[20];
int grade1;
int grade2;
int grade3;
float avg;
};

int input(struct info stu[])
{
int count=1;
while(flag=='y'||flag=='Y')
{
printf("\n请输入第%d个学生的信息:\n",count);
printf("全输入学生的名字:");
fflush(stdin);
gets(stu[count-1].name);
printf("第一门成绩是:\n");
scanf("%d",&stu[count-1].grade1);
printf("第二门成绩是:\n");
scanf("%d",&stu[count-1].grade2);
printf("第三门成绩是:\n");
scanf("%d",&stu[count-1].grade3);
printf("要继续吗?(y/n)");
scanf("%1s",&flag);
if(flag=='y'||flag=='Y')
{
count++;
}
else
break;
}
return count;
}

void arrange(struct info stu[],int count)
{
struct info temp;
for(int a=0;a<count-1;a++)
{
for(int b=1;b<count;b++)
{
if(stu[a].avg<=stu[b].avg)
{
stu[b]=temp;
stu[a]=stu[b];
temp=stu[a];
}
}
}
}

void display(struct info stu[],int count)
{
printf("学生成绩如下:\n");
for(int a=0;a<count;a++)
{
stu[a].avg=(float)((stu[a].grade1+stu[a].grade2+stu[a].grade3)/3.0);
printf("姓名\t\t平均成绩\n");
printf("%s\t\t%3f",stu[a].name,stu[a].avg);
}
}

void main()
{
int num=0;
struct info stu[50];
char flag1='y';
while(flag1=='y'||flag1=='Y')
{
num=input(stu);
if(flag=='n'||flag=='N')
{
printf("***********************************************\n");
display(stu,num);
arrange(stu,num);
printf("\n***********************************************\n");
display(stu,num);
printf("\n***********************************************\n");
}
printf("要继续吗?(y/n)");
scanf("%1s",&flag1);
if(flag1=='n'||flag1=='N')
break;
}

}
这样???


2006-04-08 17:03
快速回复:为什么输入一排“烫”●奇怪???
数据加载中...
 
   



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

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