鱼C论坛

 找回密码
 立即注册
查看: 480|回复: 5

[已解决]这个代码我没看懂,为啥他能把字符串倒序

[复制链接]
最佳答案
0 
发表于 2017-12-7 19:34:22 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
# include <stdio.h>
# define M 100
int main()
{ int i,j;
  char a[M];
  printf("请输入一列字符串:\n");
for(i=0;i<M;i++)
  {scanf("%c",&a[i]);
  if(a[i]=='\n')
  break;
  }
  printf("则该列字符串倒序输出为:");
for(j=i;j>=0;j--)
   printf("%c",a[j]);
  printf("\n");
  return 0;
}

一开始的宏定义M是100,输入一个长度小于等于100的字符串(黑框里为啥不用加大括号了,为啥写代码的时候给数组赋值需要大括号),i=0;i<M;i++与j=i;j>=0;j--知道是啥意思但是放在for后面从0到M循环跟我输入的字符串又有啥联系啊(我随便输入一串字符串 他是怎么跟我输入的字符串一个字符一个字符对应上的 明明也不连着啊),,最没看懂的是终止循环 if(a[i]=='\n') break。。。。。if括号里啥意思        之前有个让从n个数中挑出奇数/偶数的时候好像用过==跟!=     ??????

谢谢大家

最佳答案
2017-12-7 21:04:19
1  初始化的时候需要用大括号,单独对某一个元素赋值当然不用
2  输入的一一对应是通过scanf来实现的,因为scanf中指定了每次从输入流中拿一个字符放到数组中
3 if判断条件是因为在你输入完后会回车结束输入,而该回车也就是'\n'被存放在数组中有效字符的最后一个位置,通过它就能判断字符串的结束位置
最佳答案
0 
发表于 2017-12-7 20:08:55 From FishC Mobile | 显示全部楼层
M等价于100,就是i<100。因为你可能不会输入那么多数,所以用里面的if来退出循环,'\n'就是换行,就是enter键,输入enter就break退出循环 ==是比较运算符,把a[i]与换行符对比,是就break,=是赋值运算符。emmm
最佳答案
1271 
发表于 2017-12-7 21:04:19 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
1  初始化的时候需要用大括号,单独对某一个元素赋值当然不用
2  输入的一一对应是通过scanf来实现的,因为scanf中指定了每次从输入流中拿一个字符放到数组中
3 if判断条件是因为在你输入完后会回车结束输入,而该回车也就是'\n'被存放在数组中有效字符的最后一个位置,通过它就能判断字符串的结束位置
最佳答案
4 
发表于 2017-12-8 00:16:40 From FishC Mobile | 显示全部楼层
/N也读到A[i]里面去了?scanf不会读入/n吧!应该是/0吧
最佳答案
0 
 楼主| 发表于 2017-12-8 11:14:31 From FishC Mobile | 显示全部楼层
懂啦 谢谢
最佳答案
0 
 楼主| 发表于 2017-12-8 11:15:10 From FishC Mobile | 显示全部楼层
Marth 发表于 2017-12-7 20:08
M等价于100,就是i

谢谢你哦  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-8-14 22:09

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表