|
5鱼币
本帖最后由 zw8519807 于 2020-3-26 01:06 编辑
#include<stdio.h>
#include<string.h>
#define NUM 5
int main()
{
char slogn[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++)
{
slogn[i][j] = ch;
}
slogn[i][j] = '\0';
}
min = 0;
max = min;
printf("你输入了下面%d句话\n",NUM);
for(i = 0;i<NUM;i++)
{
printf("%s\n",slogn[i]);
temp = strlen(slogn[i]);
min = temp < strlen(slogn[min])?i:min;
max = temp > strlen(slogn[max])?i:max;
}
printf("其中最大的是:%s\n", slogn[max]);
printf(" 其中最小的是:%s\n",slogn[min]);
return 0;
}
不是定义了整形么
但是输出的句子之后就会乱码?????
????新手求助帖
两个问题:
1、运算符优先级问题,for循环的条件中 ch = getchar()应该加括号,赋值运算符'='要低于不等于运算符 '!=' ,这个是导致你的程序乱码的原因。
2、ch应该定义为char类型,否则会有一个warning
- #include<stdio.h>
- #include<string.h>
- #define NUM 5
- int main()
- {
- char slogn[NUM][100],ch;
- int i ,j ,min ,max,temp;
- for(i=0;i<NUM;i++)
- {
- printf("请输入%d句话:",i+1);
- for(j = 0; (ch = getchar())!='\n'; j++)
- {
- slogn[i][j] = ch;
- }
- slogn[i][j] = '\0';
- }
- min = 0;
- max = min;
- printf("你输入了下面%d句话\n",NUM);
- for(i = 0;i<NUM;i++)
- {
- printf("%s\n",slogn[i]);
- temp = strlen(slogn[i]);
- min = temp < strlen(slogn[min])?i:min;
- max = temp > strlen(slogn[max])?i:max;
- }
- printf("其中最大的是:%s\n", slogn[max]);
- printf(" 其中最小的是:%s\n",slogn[min]);
- return 0;
- }
复制代码
|
最佳答案
查看完整内容
两个问题:
1、运算符优先级问题,for循环的条件中 ch = getchar()应该加括号,赋值运算符'='要低于不等于运算符 '!=' ,这个是导致你的程序乱码的原因。
2、ch应该定义为char类型,否则会有一个warning
|