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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言編程中的一個bug,求大神指教

C語言編程中的一個bug,求大神指教

C
凡人0123 2016-05-10 14:56:47
這是一個打印日歷的代碼,我下面的代碼有一處有一個問題(加粗的那一個部分),我在定義變量的時候,為什么交換了順序以后就變好了,想請問一下這是為什么??#include <stdio.h>#include <math.h>main(){??int a[11];???//定義每個月數組?int z;????//定義判斷月初星期幾的條件?int year,x=0,y;??//定義輸入的年份,總天數x,每年天數y?int i,j;???//定義數組、循環變量?/*?int i,j;???//定義數組、循環變量?int a[11];???//定義每個月數組?int z;????//定義判斷月初星期幾的條件?int year,x=0,y;??//定義輸入的年份,總天數x,每年天數y?這里有一個bug,雖然不是太明白,但是交換一下位置,它就變好了。?*/?printf("請輸入年份\n");?scanf("%d",&year);?//獲取年份?for(i=1;i<year;i++)?//判斷瑞年?{??if((i%4==0)&&(i%100!=0)||(i%400==0))???y=366;??else ???y=365;??x=x+y;???}?x=x+1;????//X表示到本年第一天的總天數?for(i=1;i<=12;i++)?{??printf("\n\n      %d月\n\n",i);??printf("日? 一? 二? 三? 四? 五? 六 \n");??if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)?//確定每個月份的天數???a[i-1]=31;??else if(i==4||i==6||i==9||i==11)???a[i-1]=30;??else if(year%4==0&&year%100!=0||year%400==0)???a[i-1]=29;??else ???a[i-1]=28;??z=x%7;?????//判斷第一天是星期幾??for(j=0;j<z;j++)??//輸出空格???printf("??? ");??for(j=1;j<=a[i-1];j++)?//輸出日歷,??{????printf("%2d",j);???if((z+j)%7==0)??//判斷換行????printf("\n");???else????printf("? ");?????}??x=x+a[i-1];????//加到下一個月?}}?
查看完整描述

3 回答

已采納
?
不偏不易

TA貢獻96條經驗 獲得超118個贊

學一下設置斷點并一步一步走下去,

代碼行前面灰色部分右鍵,有個手的圖標,那個是設置斷點。

F11是運行調試模式,F5是一步步走下去。有時候會出現無法關閉程序的情況,關了VC就行。

先設置在for(j=1;j<=a[i-1];j++) 前面,走一步1個月走到11月,設置在? ?printf("%2d",j);前面,走一步一天,然后一步步看

我說一下我的查錯過程

我看到是在12月31日后,判斷條件

for(j=1;j<=a[i-1];j++) //輸出日歷,

? {?

? ?printf("%2d",j);

? ?if((z+j)%7==0) ?//判斷換行

? ? printf("\n");

? ?else

? ? printf(" ?"); ??

此時j=32,a[i-1]==32,所以會繼續輸出下去,34,35.。。。。。很奇怪,此時a[i-1](a[12-1])應該是31,不變的。

重新走流程走到11月30日,特別關注了一下,走了一步發現a[i-1]=6,i=12,j=6.

至于到底是哪里有問題,你就自己再慢慢查吧。要下班了-。-


另外吐槽一下,感覺賦值每月的天數放在循環外面比較好。

查看完整回答
反對 回復 2016-05-11
?
jfhdibrbfjd

TA貢獻163條經驗 獲得超40個贊

http://img1.sycdn.imooc.com//57348ca90001083109050562.jpg就這個

查看完整回答
反對 回復 2016-05-12
?
NightRaid

TA貢獻1條經驗 獲得超0個贊

1、?if((i%4==0)&&(i%100!=0)||(i%400==0))

2、else if(year%4==0&&year%100!=0||year%400==0)

看看代碼中這2行有問題沒(菜鳥路過)

查看完整回答
反對 回復 2016-05-10
  • 3 回答
  • 0 關注
  • 1706 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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