|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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吗?
本帖最后由 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]) ;
- }
复制代码
|
|