可是运行时老是输入一堆“烫”
难道我很烫吗??答案当然是否定的```
那是为什么呢``???
请高手门指点下```
我的代码是这样的:
#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++;
}
}
帮忙看看```
错误很多..
#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编辑过]
我的代码是这样的:
#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++;/* 不知道有什么用?? 麻烦你解释一下 */
}
}
帮忙看看```
小毛病很多..自己再改下吧..以后自己多细心检查下..
#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;
}
}
完美````
哈啊 ``
谢谢``
#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;
}
}
这样???