题目描述
小明的课外班上有 N 个同学,每个同学的名字长度都不一样。请找出班上名字长度最长的同学。
输入
输入第一行为班级同学数量 N。(0≤N≤20)
接下来 N 行每行是一个同学的名字(中间没有空格,长度小于 100)。
输出
输出一行,为名字最长的同学的名字。
样例输入
3
Tom
Gaofei
Lobs
样例输出
Gaofei
数据规模与约定
时间限制:1 s
内存限制:256 M
100% 的数据保证 0≤N≤20 名字长度小于 100
#include<stdio.h>
int main(){
int N;
scanf("%d", &N);
char name[20][100];
int length[20];
for(int i = 0; i < N; i ++){
scanf("%s", name[i]);
length[i] = strlen(name[i]);
//printf("%d", length[i]);
}
int longest = 0, flag = 0;
for(int i = 0; i < N; i ++){
if (longest < length[i]){
longest = length[i];
flag = i;
}
}
printf("%s", name[flag]);
return 0;
}
反面例子:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int n, temp = 0, record = 0;
scanf("%d", &n);
char **name;
name = (char **)malloc(sizeof(char *) * (n + 5));
for(int i = 0; i < n; i ++){
name[i] = (char *)malloc(sizeof(char) * 105);
scanf("%s", name[i]);
//printf("%d", strlen(name[i]));
if (temp < strlen(name[i])){
temp = strlen(name[i]);
record = i;
}
}
printf("%s", name[record]);
free(name);
for(int i = 0; i < n; i ++){
free(name[i]);
}
return 0;
}
后者完成度80%,出现dangerous syscalls提示,先记录一下,以后会了的话回来解答