鱼C论坛

 找回密码
 立即注册
查看: 2115|回复: 3

[已解决]标红中的 j 值比标绿色中的 j 值大1吗?不然是不是会覆盖最后一个值? 标蓝色部分...

[复制链接]
发表于 2022-8-19 11:14:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<string.h>

#define NUM 5

int main()
{
        char slogan[NUM][100];
        int i, j, ch, min, max, temp;
       
        for(i = 0; i < NUM; i++)
        {
                printf("请输入%d句话:", i+1);
                for(j = 0; (ch = getchar()) != '\n'; j++)
                {
                        slogan[i][j] = ch;
                }
                slogan[i][j] = '\0';
        }
               
        min = 0;
        max = min;
       
        printf("你输入了下边%句话:\n", NUM);
       
        //打印每句口号,同时比较长度
        for (i = 0; i < NUM; i++)
        {
                printf("%s\n",slogan[i]);
                temp = strlen(slogan[i]);
                min = temp < strlen(slogan[min]) ? i:min;
                max = temp > strlen(slogan[max]) ? i:max;
        }
        printf("其中最长的是:%s\n",slogan[max]);
        printf("其中最短的是:%s\n",slogan[min]);
       
        return 0;
}
标红中的 j 值比标绿色中的 j 值大1吗?不然是不是会覆盖最后一个值?
标蓝色部分第一次比较是 strlen(slogan[max])和strlen(slogan[min])返回值是0吗?
最佳答案
2022-8-19 11:35:56
本帖最后由 jackz007 于 2022-8-19 11:39 编辑

       为什么不把代码贴入代码框,仔细看看你贴出的代码,后半部分的斜体区域被丢失了很多东西。
#include<stdio.h>
#include<string.h>

#define NUM 5

int main()
{
        char ch , slogan[NUM][100]                                            ;
        int i , j , min , max                                                 ;
        
        for(i = 0 ; i < NUM ; i ++) {
                printf("请输入%d句话:" , i + 1)                              ;
                for(j = 0 ; (ch = getchar()) != '\n'; j ++) slogan[i][j] = ch ;  // ch 不是回车符时把 ch 顺序存入 slogan[i][j]
                slogan[i][j] = '\0'                                           ;  // 由于每次循环会自动 j ++,所以,这个 j 一定比绿色的 j 大 1
        }
        printf("你输入了下边 %d 句话:\n", NUM)                               ;
        
        //打印每句口号,同时比较长度
        printf("%s\n" , slogan[0])                                            ;
        for(min = max = 0 , i = 1 ; i < NUM ; i ++) {
                printf("%s\n" , slogan[i])                                    ;
                if(strlen(slogan[i]) > strlen(slogan[max])) max = i           ; // 第一次执行 strlen(slogan[max]) 返回 slogan[0] 的字符个数
                else if(strlen(slogan[i]) < strlen(slogan[min])) min = i      ; // 第一次执行 strlen(slogan[min]) 返回 slogan[0] 的字符个数
        }
        printf("其中最长的是:%s\n" , slogan[max])                            ;
        printf("其中最短的是:%s\n" , slogan[min])                            ; 
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-19 11:35:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-8-19 11:39 编辑

       为什么不把代码贴入代码框,仔细看看你贴出的代码,后半部分的斜体区域被丢失了很多东西。
#include<stdio.h>
#include<string.h>

#define NUM 5

int main()
{
        char ch , slogan[NUM][100]                                            ;
        int i , j , min , max                                                 ;
        
        for(i = 0 ; i < NUM ; i ++) {
                printf("请输入%d句话:" , i + 1)                              ;
                for(j = 0 ; (ch = getchar()) != '\n'; j ++) slogan[i][j] = ch ;  // ch 不是回车符时把 ch 顺序存入 slogan[i][j]
                slogan[i][j] = '\0'                                           ;  // 由于每次循环会自动 j ++,所以,这个 j 一定比绿色的 j 大 1
        }
        printf("你输入了下边 %d 句话:\n", NUM)                               ;
        
        //打印每句口号,同时比较长度
        printf("%s\n" , slogan[0])                                            ;
        for(min = max = 0 , i = 1 ; i < NUM ; i ++) {
                printf("%s\n" , slogan[i])                                    ;
                if(strlen(slogan[i]) > strlen(slogan[max])) max = i           ; // 第一次执行 strlen(slogan[max]) 返回 slogan[0] 的字符个数
                else if(strlen(slogan[i]) < strlen(slogan[min])) min = i      ; // 第一次执行 strlen(slogan[min]) 返回 slogan[0] 的字符个数
        }
        printf("其中最长的是:%s\n" , slogan[max])                            ;
        printf("其中最短的是:%s\n" , slogan[min])                            ; 
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-19 13:31:49 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-19 15:10:38 | 显示全部楼层
jackz007 发表于 2022-8-19 11:35
为什么不把代码贴入代码框,仔细看看你贴出的代码,后半部分的斜体区域被丢失了很多东西。

不好意思,刚知道如何插入代码
#include<stdio.h>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 09:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表