16个回答
展开全部
主要解释第二张图中的i,其他细节我们先抛开。
要认真读题目的要求,这道编程题有一个考察点是格式化输出printf语句的使用,题目要求结果的输出:空格在数的中间,即:第一个数字的前面没有空格,最后一个数字的后面没有空格。
仔细阅读代码,你所圈出的两个prinf语句其实是不一样的,if中的printf输出格式“%d”,没有任何空格,else中的printf输出格式是“ %d”,注意%d前面是有一个空格的。
说到这,我觉得你应该明白了,整型变量i实际上是控制输出第几个数的,每输出一个数,则i+1,这句控制语句你那个红框遮挡了部分。如果是第一个数,就直接输出数本身即可,否则(后面的数),都要先输出空格,再输出数,从而可以满足题目要求的“空格在数的中间的要求”。
我觉得应该是说清楚了,希望能够帮到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量i是一个计数器,它的初值为0。
在循环中,每找到一个符合条件的倍数,i就加1。
等循环完毕,i就记录符合条件的倍数的个数。
红圈内的if...else...语句是控制输出语句。
if(i==1)是说:如果i的值为1,即对于第一个倍数,执行下一句:
printf("%d",j);
这一句是打印j(倍数)的值。
else,否则,就是除了第一个倍数以外的倍数,执行下面的语句:
printf(" %d",j);
这一句也是打印j的值。
注意两个打印语句的区别:后一个打印语句的%d前面有一个空格,就是先打印一个空格,再打印倍数的值。
所以空格是为了与前面打印的倍数隔开。
而第一个倍数前面是不需要空格的,所以,就出现两个不同的打印语句。
在循环中,每找到一个符合条件的倍数,i就加1。
等循环完毕,i就记录符合条件的倍数的个数。
红圈内的if...else...语句是控制输出语句。
if(i==1)是说:如果i的值为1,即对于第一个倍数,执行下一句:
printf("%d",j);
这一句是打印j(倍数)的值。
else,否则,就是除了第一个倍数以外的倍数,执行下面的语句:
printf(" %d",j);
这一句也是打印j的值。
注意两个打印语句的区别:后一个打印语句的%d前面有一个空格,就是先打印一个空格,再打印倍数的值。
所以空格是为了与前面打印的倍数隔开。
而第一个倍数前面是不需要空格的,所以,就出现两个不同的打印语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
严重怀疑这里的变量是写错了,原本应该是if(i==1)。如果这样写的话,它的功能就可以解释了。就是输出第一个数的时候,前面没有空格,在循环中遇到其他的数,如果满足给定的条件,再次输出时,前面就先输出一个空格,这样输出的各个数字之间就有空格分开,而第一个数字前面是没有空格。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就问这段代码会输出什么?我们先给出答案再进行分析。
答案:未定义,0
分析: main函数中重新声明变量i和j,j的值未初始化,因此用j给本身赋值结果未定义,而if语句中声明k变量,此时k变量的作用域仅到if语句结束。因此,如果开始没有声明全局变量k,编译将不通过,错误原因是k未声明,而此程序开始就声明了全局变量k,后面k默认为全局变量,全局变量未初始化则默认初始化为0,所以k++打印的是0,但k变为1,因此答案为未定义,0。
答案:未定义,0
分析: main函数中重新声明变量i和j,j的值未初始化,因此用j给本身赋值结果未定义,而if语句中声明k变量,此时k变量的作用域仅到if语句结束。因此,如果开始没有声明全局变量k,编译将不通过,错误原因是k未声明,而此程序开始就声明了全局变量k,后面k默认为全局变量,全局变量未初始化则默认初始化为0,所以k++打印的是0,但k变为1,因此答案为未定义,0。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询