主题:求助解答
我遇到这样一个问题;
从键盘输入班级学生总数,输入前无任何提示语。
顺序输入每个学生的学号和成绩,学号为字符串(长度不超过20),成绩为自然数(范围为[0,100]),学号和成绩之间用空格隔开。
输出前无任何提示语,输出成绩最高的学生的学号和成绩。如果有多人成绩相同且最高,则仅输出第一个最高的即可
标准输入如下:
3
10S00301 87
10S00302 89
10S00303 97
这是我编的程序,我用了二维字符数组,但我们老师没怎么讲这部分,所以求教了。
#include <stdio.h>
#include <string.h>
int main ()
{
int a[41],c,i,max;
char b[5][20],maxchar[20];
scanf("%d\n",&c);
for(i=1;i<=c;i++)
{
scanf("%s",&b[i]);
scanf("%d\n",&a[i]);
}
strcpy(maxchar,b[1]);
max=a[1];
for(i=1;i<=c;i++)
{
if(max<=a[i])
{
max=a[i];
strcpy(maxchar,b[i]);
}
}
printf("%s %d",maxchar,max);
return 0;
}
我觉得我的问题有两个,一个是输入的时候,我想把每一个学生的学号输到每一行二维字符数组中,我用scanf("%s"),是觉得空格刚好可以中断字符输入,把后面的成绩输到整型数组中,不知道这样想对不对。
第二个问题是我用strcpy(maxchar,b[i]),想把第i行的整个字符串复制过去,用b[i]是不是有问题啊?
我是大一的学生,真心求教了。谢谢各位啦!!!
从键盘输入班级学生总数,输入前无任何提示语。
顺序输入每个学生的学号和成绩,学号为字符串(长度不超过20),成绩为自然数(范围为[0,100]),学号和成绩之间用空格隔开。
输出前无任何提示语,输出成绩最高的学生的学号和成绩。如果有多人成绩相同且最高,则仅输出第一个最高的即可
标准输入如下:
3
10S00301 87
10S00302 89
10S00303 97
这是我编的程序,我用了二维字符数组,但我们老师没怎么讲这部分,所以求教了。
#include <stdio.h>
#include <string.h>
int main ()
{
int a[41],c,i,max;
char b[5][20],maxchar[20];
scanf("%d\n",&c);
for(i=1;i<=c;i++)
{
scanf("%s",&b[i]);
scanf("%d\n",&a[i]);
}
strcpy(maxchar,b[1]);
max=a[1];
for(i=1;i<=c;i++)
{
if(max<=a[i])
{
max=a[i];
strcpy(maxchar,b[i]);
}
}
printf("%s %d",maxchar,max);
return 0;
}
我觉得我的问题有两个,一个是输入的时候,我想把每一个学生的学号输到每一行二维字符数组中,我用scanf("%s"),是觉得空格刚好可以中断字符输入,把后面的成绩输到整型数组中,不知道这样想对不对。
第二个问题是我用strcpy(maxchar,b[i]),想把第i行的整个字符串复制过去,用b[i]是不是有问题啊?
我是大一的学生,真心求教了。谢谢各位啦!!!