[求助]解决一个 输入问题!
#include "stdio.h"
#include "stdlib.h"
struct student
{ char name[20];
int num;
float score;
}stu[5];
void input(arr) /*输入*/
struct student arr[];
{ int i;
char temp[20];
for(i=0;i<5;i++)
{printf("please input the information:\n");
gets(arr[i].name);
gets(temp);
arr[i].num=atoi(temp);
gets(temp);
arr[i].score=atof(temp);
}
}
void search(arr) /*查找*/
struct student arr[];
{int i,n;
char temp[20];
printf("please input a num:\n");
gets(temp);
n=atoi(temp);
for(i=0;i<5;i++)
if(n==arr[i].num)
printf("%s%d\n",arr[i].name,arr[i].score);
if(i==4&&arr[i].num)
printf("not exist ");
}
void order(arr) /*排序*/
struct student arr[];
{int i,j,t;
float temp;
int temp1;
for(j=0;j<5;j++)
for(i=0;i<5-j;i++)
if(arr[i].score<arr[i+1].score)
{
temp=arr[i].score;
arr[i].score=arr[i+1].score;
arr[i+1].score=temp;
temp1=arr[i].num;
arr[i].num=arr[i+1].num;
arr[i+1].num=temp1;
}
}
void output(arr) /*输出*/
struct student arr[];
{int i;
for(i=0;i<5;i++)
printf("%-3d %-5f%-6s\n",arr[i].num,arr[i].score,arr[i].name);
}
main()
{int k;
printf(" please input a number:\n");
printf("*******************************\n\n");
printf(" 1--------------------input\n");
printf(" 2--------------------order\n");
printf(" 3--------------------output\n");
printf(" 4--------------------search\n\n");
printf("*******************************\n");
scanf("%d",&k);
switch(k)
{case 1:input(stu);
output(stu);
break;
case 2:order(stu);break;
case 3:output(stu);break;
case 4:search(stu); break;
default : break;
}
getch();
}
为什么第一个人的数据只能输入两个呢? 奇怪。
单独运行又是对的