#include<stdio.h>
#include<string.h>
struct student{
char num[6];
char name[11];
int a,b,c;
int sum;
};
int main()
{
int n;
int i;
scanf("%d",&n);
struct student stu[n],max;
for(i=0;i<n;i++)
{
scanf("%s %s %d %d %d",stu[i].num,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
stu[i].sum=stu[i].a+stu[i].b+stu[i].c;
if(i==0)
{
max=stu[i];
}
if(stu[i].sum>max.sum)
max=stu[i];
}
printf("%s %s %d",max.name,max.num,max.sum);
return 0;
}
存在的问题:
1.怎么样用第一个是总分最高的学生,输出时候不只能输出最高总分,还能对应学生,小杜 if(i==0){max=stu[i]}很好的解决了我的问题
2.循环中要不要加stu[i].还是知己stu,答案是需要加
想要用stu[i].sum,结构体中就必须要加入sum;
想要用max.name,主函数中定义初始化结构体的时候就需要struct student stu[n],max;想、连同max一起定义
找出最长的字符串
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
char str[80],maxstr[80];
int len=0,maxlen=0;
for(int i=0;i<n;i++)
{
gets(str);
len=strlen(str);
if(len>maxlen)
{
maxlen=len;
strcpy(maxstr,str);
}
}
printf("%s",maxstr);
return 0;
}
小杜写的:
#include <stdio.h>
#include <string.h>
int main()
{
int n;
char p[81],max[81];
scanf("%d",&n);
scanf("%s",p);
strcpy(max,p);
for(int i=1; i<n; i++)
{
scanf("%s",p);
if(strlen(p)>strlen(max))
strcpy(max,p);
}
printf("The longest is: %s",max);
return 0;
}