高手帮看下面程序有错吗,我感觉怪怪的
输入一行字符存入数组,然后把他们反序存入到同一数组中。
#include stdio.h
main()
{
char c,stmp,array[80];
int i=0,j;
while((c=getchar())!='\n')
array[i++]=c;
array[i]='\0';
for(j=i-1;j>=i/2;j--)
{
stmp=array[j];
array[j]=array[i-1-j];
array[i-1-j]=stmp;
}
for(i=0;array[i]!='\0';i++) printf(%c,array[i]);
printf(\n);
}
C语言反序输出
答案:5 悬赏:0 手机版
解决时间 2021-01-31 08:04
- 提问者网友:浪荡绅士
- 2021-01-30 17:17
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-01-30 18:39
除了第一行没加尖括号之外没什么错误啊。
while((c=getchar())!='\n') :从键盘上取一个字符赋值给c,当c时回车是结束。
那个反斜杠零不可以省,因为字符串应该以它为结束标志,这里不会自动赋,赋初值的时候才自动赋\0。
个人观点,有疑问咱讨论讨论,我也是刚学过。呵呵
while((c=getchar())!='\n') :从键盘上取一个字符赋值给c,当c时回车是结束。
那个反斜杠零不可以省,因为字符串应该以它为结束标志,这里不会自动赋,赋初值的时候才自动赋\0。
个人观点,有疑问咱讨论讨论,我也是刚学过。呵呵
全部回答
- 1楼网友:傲气稳了全场
- 2021-01-30 23:17
从逻辑上没有错,只要注意自己的书写习惯和书写规范就好了
至于第六行,就是用一个字符变量c来接收一个输入字符,只要他不是回车,循环继续。也就是你这个字符串可以包含空格。
第八行的'\0'是认为给这串字符加零结束标志,这是一个字符串必备的,要不只能是一个字符数组。
可以用gets()函数获取字符串输入,strlen()函数获取字符串长度
- 2楼网友:天凉才是好个秋
- 2021-01-30 22:07
突然感觉我学的好水...
- 3楼网友:枭雄戏美人
- 2021-01-30 20:48
你是说*rev与rev[]吧, 在c语言里,当定义char *rev的时候,rev是放在了常量区,值不能修改,因此会出错; 而定义char rev[]的时候,rev数组是放在了栈区,值可以修改,因此用数组不会报错。
- 4楼网友:撞了怀
- 2021-01-30 19:45
第一个先把有键盘输入的值赋给c,然后再判断是不是回车符,为真执行while循环
第二个就是表示在输入完N个字符后添加一个结束符,设置结束条件,因为后面的
for(i=0;array[i]!='\0';i++) printf(%c,array[i]);//遇到结束符就停止执行printf();
如果在本程序中用puts(); 输出字符串,就应该在数组最后一个设置结束条件'\0'
不然就肯定会出现乱码的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯