亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么我上下兩段同樣的代碼輸出結果不一樣啊

/*

#include <stdio.h>

int main()

{

? ? int i,j,k;

? ? for(i=1; i<5; i++)

? ? {

? ? ? ?for(j=1;j<5;j++) ?

? ? ? ? {

? ? ? ? ? ? ?printf(" "); ??

? ? ? ? }

? ? ? ?for(k=0;k<2*i-1;k++)?

? ? ? ? {

? ? ? ? ? ? printf("*"); ??

? ? ? ? }

? ? ? ? printf("\n"); ? ??

? ? }

? ? return 0;

}

?*/?

#include <stdio.h>

int main()

{

? ? int i,j,k;

? ? for(i=1; i<5; i++)

? ? {

? ? ? ? for(j=i; j<5; j++)

? ? ? ? {

? ? ? ? ? ? printf(" ");

? ? ? ? }

? ? ? ? for(k=0; k<2*i-1; k++)

? ? ? ? {

? ? ? ? ? ? printf("*");

? ? ? ? }

? ? ? ? printf("\n");

? ? }

? ? return 0;

}

第一段結果http://img1.sycdn.imooc.com//56de355000013a1801630113.jpg

第二段結果http://img1.sycdn.imooc.com//56de355a00014ea601560111.jpg

正在回答

2 回答

第一段和第二段代碼輸出空格的數量不一樣,具體在第一段代碼“?for(j=1;j<5;j++)?”,j的初值為1,是常量,因此功能是每次都輸出5個空格,第二段代碼“?for(j=i; j<5; j++)”,j的初值為i,是個變量,加上每次i循環都自加1,所以每次都比上一行少一個空格,不知道我的解釋清楚了沒?

1 回復 有任何疑惑可以回復我~
#1

慕用8117474 提問者

非常感謝!
2016-03-08 回復 有任何疑惑可以回復我~
//問題出在j的初始值上,第一段j的初始值為1,第二段j的初始值為i。詳見下面的代碼的注釋說明。
/*
#include?<stdio.h>
int?main()
{
????int?i,j,k;
????for(i=1;?i<5;?i++)
????{
???????for(j=1;j<5;j++)?/*此處的j初始值為數字1,這意味著每次進入該循環后,j都會先初始為1,這導致程序的執行結果為每一行第一個*號前的空格數目與行數i無關都為4個*/
????????{
?????????????printf("?");???
????????}
???????for(k=0;k<2*i-1;k++)?
????????{
????????????printf("*");???
????????}
????????printf("\n");?????
????}
????return?0;
}
?*/?
#include?<stdio.h>
int?main()
{
????int?i,j,k;
????for(i=1;?i<5;?i
????{
????????for(j=i;?j<5;?j++)++)/*?此處的j初始值為字母i的值,這意味著每次進入該循環后,j都會先初始為字母i的值,與第一段代碼中不同的是,i的值是從1到4依次累加的,所以每次進入該循環后j的初始值也是從1到4依次累加的,進而導致程序的執行結果為第i行的第一個*號前的空格數目為(5-i)個*/
????????{
????????????printf("?");
????????}
????????for(k=0;?k<2*i-1;?k++)
????????{
????????????printf("*");
????????}
????????printf("\n");
????}
????return?0;
}


2 回復 有任何疑惑可以回復我~
#1

慕用8117474 提問者

也感謝你的用心回復,謝謝
2016-03-08 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么我上下兩段同樣的代碼輸出結果不一樣啊

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號