C数组课后题
本帖最后由 B站在读研究生 于 2021-8-12 18:55 编辑要求 A:定义一个长度为 21 的字符数组,用于存放用户输入的文本;
要求 B:如果用户输入的文本长度超过 20 个字符,且文本中存在空格,则截取至最接近末尾(第 20 个字符串)的空格;
要求 C:如果用户输入的文本长度超过 20 个字符,且文本中不存在空格,则打印前 20 个字符。
#include <stdio.h>
int main()
{
int x = 0, i = 0;
char str;
int ch;
printf("请输入一行文本:");
while((ch = getchar())!='\n')
{
str = ch; //数组赋值
str = '\0';
if (i < 20 && ch == ' ')
{
x = i+1; //记录最后空格位置
}
}
if (strlen(str) < 21) //长度小于21直接输出
{
printf("您输入的文本是:%s", str);
}
else
{
for (i = 0; i < 20; i++)
{
if (str == ' ') //有空格输出到最后一个空格
{
str = '\0';
break;
}
else //没空格输出前20
{
str = '\0';
}
}
printf("您输入的文本是:%s\n", str);
}
return 0;
}
有空格时候也是输出20字符
帮忙检查一下什么问题,感谢感谢感谢!!!{:10_281:} 你这代码不对啊
if (ch < 20 && ch == ' ')
{
ch = x; //记录最后空格位置
}
这是在干什么? 本帖最后由 jhq999 于 2021-8-12 18:36 编辑
int x = 0, i = 0;
char str;
int ch;
printf("请输入一行文本:");
while((ch = getchar())!='\n')
{
str = ch; //数组赋值
str = '\0';
if (i<20&&ch == ' '){:5_102:}
{
x = i; //记录最后空格位置
}
}
if (strlen(str) < 21) //长度小于21直接输出
{
printf("您输入的文本是:%s", str);
}
else
{
for (i = 0; i < 20; i++)
{
if (str == ' ') //有空格输出到最后一个空格
{
str = '\0';
break;
}
else //没空格输出前20
{
str = '\0';
}
}
printf("您输入的文本是:%s\n", str);{:5_102:}
}
getchar();
return 0; jhq999 发表于 2021-8-12 18:32
int x = 0, i = 0;
char str;
int ch;
也是出不来呀
Max472 发表于 2021-8-12 17:52
你这代码不对啊
想的是记录20个元素之内的最后空格位置
然后那个空格元素位置赋给x Max472 发表于 2021-8-12 17:52
你这代码不对啊
i<20 && ch = ' ' #include <stdio.h>
int main()
{
int x = 0, i = 0;
char str;
char ch;
printf("请输入一行文本:");
while((ch = getchar())!='\n')
{
str = ch; //数组赋值
str = '\0';
if (i < 20 && ch == ' ')
{
x = i; //记录最后空格位置
}
}
if (strlen(str) < 21) //长度小于21直接输出
{
printf("您输入的文本是:%s", str);
}
else
{
for (i = 0; i < 20; i++)
{
if (str == ' ') //有空格输出到最后一个空格
{
str = '\0';
break;
}
else //没空格输出前20
{
str = '\0';
}
}
printf("您输入的文本是:%s\n", str);
}
return 0;
}
解决了
页:
[1]