c語言第一次出現得bug 陷阱

2021-06-22 00:18:14 字數 1201 閱讀 5775

/***5、模擬n個人參加選舉的過程,並輸出選舉結果:假設候選人有四人,分別用a、b、c、d表示,當選某候選人時,直接輸入其編號(編號由計算機隨機產生),

若輸入的不是a、b、c、d則視為無效票,選舉結束後按得票數從高到低輸出候選人編號和所得票數。

*/#if 1

main();

int personaddr[5] = ;

int n = 0;

int temp = 0;

// int a = 0, b = 0, c = 0, d = 0, e = 0;

printf("輸入n,n為投票人數");

scanf("%d", &n);

// 投票

for (int i = 0; i < n; i ++) else if ('b' == temp) else if ('c' == temp) else if ('d' == temp) else

}// 得票人座標

for (int i = 0; i < 5 ; i ++)

printf("\n");

// test

for (int i = 0 ; i < 5; i ++)

printf("\n");

// 排序 隻變位址

for (int i = 0; i < 5 - 1; i ++) }}

// 輸出

for (int i = 0; i < 5; i ++)

printf("\n");

for (int i = 0; i < 5; i ++)

}
概述:定義倆個陣列,person來存放每個人獲得得票數,personaddr來儲存每個人得座標,票數是隨機獲得得,其他部分都沒問題,只看排序迴圈處,思路是每次比較票數之後,將他們得位址交換位置,最後按照位址尋得哪個人得多少票,表面上看起來沒有問題,但是陷阱就在這裡,看**標記處,運用氣泡排序,比較票數之後,交換位置得是位址,但是問題就出在這裡,當第一次迴圈之後,位址是交換了,可是person得值沒有交換位置,由此導致第二次迴圈得時候,比較person值得時候,依然要交換已經交換過得位置,所以,這裡應該是錯誤得。

解決方案: 再增加一組陣列,來儲存票數,其值應該跟person得值一樣,最後根據位址再臨時得陣列裡尋找對應得abcd。

致 第一次線上bug

2020年01月13日 下午1點03分 午休還未睡醒,聽到了老大的呼喚。老大 xx,群裡反饋有問題,你查一下啊。我 好的!立刻,瞬間清醒,看群裡的問題截圖。開始查問題,看日誌,後發現因為 同事w寫 合同過期時間判斷有誤,使用了過期的合同,進而無法進行簽署,前端沒繫結錯誤碼描述異常,進而直接提示恐怖的...

第一次出現一次的字元

題目 在字串中找出第乙個出現一次的字元。如輸入 abaccdeff 則輸出 b 分析 最直觀的解法從頭掃瞄這個字串中的每乙個字元。當訪問到某個字元的時候拿這個字元和後面的字元相比較,如果在後面沒有發現重複的字元,那該字元就是只出現一次的字元。如果字串有n個字元,每乙個字元可能與後面的o n 個字元比...

第一次寫C語言

第一次自己嘗試寫c語言經典的 hello world 方法如下 先建立新建文字文件並在文字中寫入自己想寫的內容,我寫的就是經典的 c programme language 中的hello world,如下所示,include int main void 其中特別要注意輸入時要用半形,每行注意是否需要...