大家幫我找找錯(簡單C)

2025-03-19 19:40:17 字數 3589 閱讀 4813

1樓:鬼火狼煙

錯誤有2個地方:1是判斷列用行計數了,2是continue的用法是不對的呵呵。已經改成下面的了:

lz的continue,語法和結果上都是沒問題的,但是出於效率的考慮那裡使用break要比continue好的多,在那裡continue會繼續下面這個迴圈:

for (d=0;da[d][k])

flag=0;continue;}

而實際情況是:如果max>a[d][k]的條件一成立,就沒有必要再繼續判斷d自增加以後的情況了,因為只要有比它小的,它就可以被排除是鞍點的可能了。所以使用break直接終止列判斷迴圈要比繼續判斷下去效率高的多。

#include

#define m 4

#define n 5

main()

int a[m][n],flag,max,i,j,k,d;

printf ("please insert date:");

for (i=0;imax)

flag=1;

for (d=0;da[d][k])

if (flag)

printf ("flag=a[%d][%d],%d",i,k,max); break;}

if (!flag)

printf ("not flag!");

另外就是lz這個程式只能計算1個鞍點,如果lz把最後printf後面的break去掉,這個程式就可以計算1個矩陣中所有的鞍點了呵呵。

2樓:網友

你用以下程式試試看:

鞍點是不是就是在所處的行中最大。

而在所處的列中最小的元素?

我重新改了一下,你試試看:我改過了,剛才試了一下,對了的啊。

#include

#define m 4

#define n 5

main()

int a[m][n],flag,max,i,j,k,d;

printf ("please insert date a[4][5]:");

for (i=0;imax)

printf("max=[%d]",max);

max=a[i][j];k=j;

flag=1;

for(d=0;da[d][k])

printf("max=[%d],max>a[%d][%d]=[%d]",max,d,k,a[d][k]);

flag=0;

break;

if(flag)

printf("flag=a[%d][%d],%d",i,k,max);

if(!flag)

printf("not flag!");

3樓:匿名使用者

還有疑問,比如:

有幾個鞍點?

c語言疑難 .. 會的幫幫忙 .. 謝謝 .. 幫幫忙幫幫忙.. 幫幫忙 ..幫幫忙..

4樓:網友

1. 你對if的條件測試起初的分析沒有錯,x-- 5是先將5代入x將x與5作比較再將x遞減1,所以x的值變成了4。注意這個遞減操作是在執行跳到else分支之前完成的。

當執行else分支的 printf("%d", x++)x++的值就是4。這裡運算子優先順序並不是起決定作用的。起決定作用的是與右邊那個5進行比較的值是x遞減1之前的值,也就是5,而將x遞減1這個***必須在退出條件測試這一單元(就是離開包圍測試條件的圓括弧)之前生效。

2. 是p[0]的位址加7,char *p = b;相當於char *p = b[0];,因為陣列名課看作乙個常數,指代的是陣列的第乙個元素的位址。

3. 那個do while (-y);相當於do while (y -=2);,所以你的分析是對的,當y ==2時,不再迴圈,但是注意在迴圈退出前,y已經被減了2了,更準確地說是當y ==2時,y先被減2,變成0,再測試迴圈條件,發現是0,所以退出迴圈,執行下面的printf。作為乙個思考題,你可以可考慮一下當y的初始值是9而不是10的時候,程式的運**況。

從你對1,3題的問題反映出你對if,while,do ..while和for結構裡的測試條件的理解不太全面,這四類結構的測試條件裡的表示式如果帶有***的話,***是在控制流離開測試條件前生效。c語言裡面乙個很晦澀的概念,叫順序點。

這四類結構的條件測試之後都有乙個順序點。

字串的輸入一般你要先分配乙個字串陣列,參見下面的例子:

#include

intmain(void)

char name[16];

puts("what's your name?")

scanf("%s", name);

printf("hello, %s", name);

return 0;

5樓:樸蘿旺斯吃串串

一、c語言中運算時,運算子的先後使用時依據優先順序的先後。--的優先順序在<,所以先計算,再比較。權威的優先順序的排列順序,見課本附錄。

二、b+2=b[2]

位址向下移兩位。*為取該位址中的內容的意思。即使language中的第三位,即吧b[2]

的值, *p=b,定義p為指標,並賦值為b,即*p=b[0]

p=p+7;寫法上未加取位址的符號——*即是位址增加7位,數晚之後為e。

三、本題考查的是y--及--y的用法及區別。

y:表示本句話執行之前即執行y=y-1,即判斷之時,y已經做過遞減的運算了。

針對本題,while括號中的值為0時,迴圈結束。括號中的表示式為--y,所以做完遞減運算後,y=0被while接收。printf的時候,本句執行之時,y--還未做遞減運算,所以值仍然是0.

等輸出0後,再進行遞減運算。若在本程式的最後加上同樣的一句。則輸出的結果則是0 ,-1。。

希望我的能給你帶來幫助!~

簡單的c語言練習,請大神幫我找出錯誤

6樓:網友

6錯了 選b 因為x先自減,x值為-1,y自加為3,y=-1 ||3=1;

7錯了,選擇d

8錯了,選擇b

9錯了 選b

7樓:網友

第六題: 答案是b. 程式首先執行 --x; 那麼 x = -1; 在判斷或運算時, 第乙個運算元為真(非零)時, 省略執行對第而運算元的運算(++y 語句不執行), 結果為真, 所以 y 的被賦值為 1 (布林運算真為 1, 假為 0)

第七題: 答案是 a. 輸入時必須按照 scanf 指定的格式輸入第八題:

答案是 b. int a[5]= 會發生陣列上溢, char a = 'a'; 或者 char a=; char a[5] = "0123"; 字串不能賦值給整形陣列。

第九題: 答案是 b. 相當於 char str[10] = "123457\0"; 當 strlen 遇到認為'\067'是乙個轉義字元, 從ascii 碼錶可以知道是數字 7.

'\067' 是八進位數就是 55).

一道簡單的c語言幫忙看下**錯了

8樓:

把b=initime&100;改成b=initime%100;。

把b+=min&60;改成b+=min%60;。

不過**可以更簡單一點,供參考——

大家幫我找找這是什麼歌 謝謝了,大家幫我找找這個是什麼歌的歌詞 謝謝大家了 100分

什麼歌你沒說阿?強人啊你 你把問問看的太厲害了,以為你在電腦前哼就會找人告訴你歌名 大家幫我找找這個是什麼歌的歌詞 謝謝大家了 100分 額.叮叮點心 要不就查 陽光檸檬茶 叮叮點心 叮叮,好方便 叮叮,好方便 叮叮,有粥又有面 廣告歌 歌詞就這麼多 叮叮粥的廣告歌,叫 叮叮點心 這個是 叮叮點心 ...

我想幫我女兒取名字,希望大家幫我找找

恬雅 沉靜文雅。適用於女孩取名字。出自 資治通鑑 宋孝武帝大明七年 吏部郎江智淵回素恬答雅,漸不會旨。在此也提示一下 寶寶起名也不宜用過於時髦的字。在歷史的任何階段起名,總會湧現出一些極為時髦的字眼兒。如果起名時追逐這樣的字,可能使人覺得家長的文化素質不是很高,而且這樣的名字也容易重複。誠然,名字的...

大家幫我找找小發明的製作方案啊加急,本人急用

創新小發明製作方法1 自製羽毛球 準備材料 空飲料瓶乙隻,泡沫水果網套兩隻,橡皮筋一根,玻璃彈子乙隻。製作過程 1.取250毫公升空飲料瓶乙隻,將瓶子的上半部分剪下 2.將剪下的部分均分為8份,用剪刀剪至瓶頸處,然後,將每乙份剪成大小一致的花瓣形狀 3.將泡沫水果網套套在瓶身外,用橡皮筋固定在瓶口處...