这个代码我没看懂,为啥他能把字符串倒序
# include <stdio.h># define M 100
int main()
{ int i,j;
char a;
printf("请输入一列字符串:\n");
for(i=0;i<M;i++)
{scanf("%c",&a);
if(a=='\n')
break;
}
printf("则该列字符串倒序输出为:");
for(j=i;j>=0;j--)
printf("%c",a);
printf("\n");
return 0;
}
一开始的宏定义M是100,输入一个长度小于等于100的字符串(黑框里为啥不用加大括号了,为啥写代码的时候给数组赋值需要大括号),i=0;i<M;i++与j=i;j>=0;j--知道是啥意思但是放在for后面从0到M循环跟我输入的字符串又有啥联系啊(我随便输入一串字符串 他是怎么跟我输入的字符串一个字符一个字符对应上的 明明也不连着啊),,最没看懂的是终止循环 if(a=='\n') break。。。。。if括号里啥意思 之前有个让从n个数中挑出奇数/偶数的时候好像用过==跟!= ??????
谢谢大家
M等价于100,就是i<100。因为你可能不会输入那么多数,所以用里面的if来退出循环,'\n'就是换行,就是enter键,输入enter就break退出循环 ==是比较运算符,把a与换行符对比,是就break,=是赋值运算符。emmm 1初始化的时候需要用大括号,单独对某一个元素赋值当然不用
2输入的一一对应是通过scanf来实现的,因为scanf中指定了每次从输入流中拿一个字符放到数组中
3 if判断条件是因为在你输入完后会回车结束输入,而该回车也就是'\n'被存放在数组中有效字符的最后一个位置,通过它就能判断字符串的结束位置
/N也读到A里面去了?scanf不会读入/n吧!应该是/0吧 懂啦 谢谢 Marth 发表于 2017-12-7 20:08
M等价于100,就是i
谢谢你哦
页:
[1]