c语言题目 ? 200

红圈里这一块为什么这么写?这个i是定义的什么啊?... 红圈里这一块为什么这么写?这个i是定义的什么啊? 展开
 我来答
格里编程办公技巧
科技发烧友

2021-11-08 · 编程、办公知识分享与学习
格里编程办公技巧
采纳数:434 获赞数:879

向TA提问 私信TA
展开全部

通过观察你这个c语言代码,这个i变量是用来控制首个数前面不要空格的。

如果是第一个数就前面不输出空格,第二个数要输出空格,因为你的题目要求结果每个数字要用空格隔开。

DL随机森林
2021-11-08 · TA获得超过280个赞
知道小有建树答主
回答量:183
采纳率:84%
帮助的人:25.8万
展开全部

主要解释第二张图中的i,其他细节我们先抛开。

  1. 要认真读题目的要求,这道编程题有一个考察点是格式化输出printf语句的使用,题目要求结果的输出:空格在数的中间,即:第一个数字的前面没有空格,最后一个数字的后面没有空格。

  2. 仔细阅读代码,你所圈出的两个prinf语句其实是不一样的,if中的printf输出格式“%d”,没有任何空格,else中的printf输出格式是“ %d”,注意%d前面是有一个空格的。

  3. 说到这,我觉得你应该明白了,整型变量i实际上是控制输出第几个数的,每输出一个数,则i+1,这句控制语句你那个红框遮挡了部分。如果是第一个数,就直接输出数本身即可,否则(后面的数),都要先输出空格,再输出数,从而可以满足题目要求的“空格在数的中间的要求”。

我觉得应该是说清楚了,希望能够帮到你。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Yuqi_Tan

2021-11-09 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3456万
展开全部
变量i是一个计数器,它的初值为0。
在循环中,每找到一个符合条件的倍数,i就加1。
等循环完毕,i就记录符合条件的倍数的个数。
红圈内的if...else...语句是控制输出语句。
if(i==1)是说:如果i的值为1,即对于第一个倍数,执行下一句:
printf("%d",j);
这一句是打印j(倍数)的值。
else,否则,就是除了第一个倍数以外的倍数,执行下面的语句:
printf(" %d",j);
这一句也是打印j的值。
注意两个打印语句的区别:后一个打印语句的%d前面有一个空格,就是先打印一个空格,再打印倍数的值。
所以空格是为了与前面打印的倍数隔开。
而第一个倍数前面是不需要空格的,所以,就出现两个不同的打印语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2021-12-06 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
严重怀疑这里的变量是写错了,原本应该是if(i==1)。如果这样写的话,它的功能就可以解释了。就是输出第一个数的时候,前面没有空格,在循环中遇到其他的数,如果满足给定的条件,再次输出时,前面就先输出一个空格,这样输出的各个数字之间就有空格分开,而第一个数字前面是没有空格。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
万叶爱玩游戏

2021-12-01 · 游戏领域创作者
万叶爱玩游戏
采纳数:448 获赞数:479

向TA提问 私信TA
展开全部
就问这段代码会输出什么?我们先给出答案再进行分析。
答案:未定义,0
分析: main函数中重新声明变量i和j,j的值未初始化,因此用j给本身赋值结果未定义,而if语句中声明k变量,此时k变量的作用域仅到if语句结束。因此,如果开始没有声明全局变量k,编译将不通过,错误原因是k未声明,而此程序开始就声明了全局变量k,后面k默认为全局变量,全局变量未初始化则默认初始化为0,所以k++打印的是0,但k变为1,因此答案为未定义,0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(14)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式