输出最长的名字

135 阅读1分钟

输出最长的名字

一个班级中有 nn 个学生,每个学生有一个名字。班主任希望知道学生中名字最长(名字中的一个空格长度计为 11)的学生是谁。

输入格式

你的程序接受的输入的第一行是一个整数 n,表示学生的总数。之后的 nn行,每行会接受一个学生的名字(可能有空格)。学生的名字不超过 100个字符。

输出格式

输出 n 位学生中最长的学生名字(如果有多个名字一样长的学生,输出第一个)。

样例输入复制

3
Steve Jobs
Bill Ma
Sunny Fei

样例输出

Steve Jobs

#include <stdio.h>
#include <string.h>
int main() {
    int n;
    scanf("%d\n", &n);
    char arr[n][105], temp[105];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < 105; j++){
            scanf("%c", &arr[i][j]);
            if(arr[i][j] == '\n'){
                arr[i][j] = '\0';//在字符输入结束时,在字符末尾添加'\0';
                break;
            }
        }
    }

    for(int j = 1; j < n; j++){
        if(strlen(arr[0]) < strlen(arr[j])){
            strcpy(temp, arr[j]);//对于字符串的操作
            strcpy(arr[j], arr[0]);
            strcpy(arr[0], temp);
        }
    }
   
    for(int i =0;i<strlen(arr[0]);i++){
        if(arr[0][i] == '\n'){
            break;
        } else{
            printf("%c",arr[0][i]);
        }
    }
    printf("\n");
    return 0;
}

//解法二:
#include <stdio.h>
#include <string.h>
int main() {
    int n, mark = 0;
    scanf("%d\n", &n);
    char arr[n][105], temp[105];
    for(int i = 0; i < n; i++){
        //scanf("%s", arr[i]);
        fgets(arr[i], 105, stdin);
    }

    for(int j = 1; j < n; j++){
        if(strlen(arr[mark]) < strlen(arr[j])){
            // strcpy(temp, arr[j]);//对于字符串的操作
            // strcpy(arr[j], arr[0]);
            // strcpy(arr[0], temp);
            mark = j;
        }
    }
    printf("%s",arr[mark]);
    return 0;
}