_Phoebe__ 2021-12-18 23:39 采纳率: 96.9%
浏览 43
已结题

输入有问题 不知道该怎么改

写一个程序,让用户输入 n 句话,并计算出最长和最短的两句。
使用 1 个二维数组存储用户输入的 n句话。


```c
#include<stdio.h>
#include<string.h>
int main(){
    int n;
    printf("请输入句子数: "); 
    scanf("%d",&n);
    char str[n][100];
    int min,max;
    for(int i=0;i<n;i++){
        for(int j=0;(ch=getchar())!='\n';j++){
            str[i][j]=ch;
        }
        str[i][j]='\0';
    }
    min=0;
    max=min;
    printf("你输入了下面这几句话");
    for(int i=0;i<n;i++){
        scanf("%s\n",str[i]);
        temp=strlen(str[i]);
        min = temp < strlen(str[min]) ? i : min;
        max = temp > strlen(str[max]) ? i : max;
    }
     printf("其中最长的是:%s\n", str[max]);
     printf("其中最短的是:%s\n", str[min]);
     return 0;
    
}

```

  • 写回答

2条回答 默认 最新

  • 关注

    你题目的解答代码如下:

    #include<stdio.h>
    #include<string.h>
    int main(){
        int n;
        printf("请输入句子数: ");
        scanf("%d",&n);
        getchar();
        char str[n][100];
        int min,max;
        for(int i=0;i<n;i++){
            gets(str[i]);
        }
        min=0;
        max=min;
        printf("你输入了下面这几句话");
        for(int i=0;i<n;i++){
            printf("%s\n",str[i]);
            int temp=strlen(str[i]);
            min = temp < strlen(str[min]) ? i : min;
            max = temp > strlen(str[max]) ? i : max;
        }
         printf("其中最长的是:%s\n", str[max]);
         printf("其中最短的是:%s\n", str[min]);
         return 0;
    }
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 12月18日