1樓:匿名使用者
#include
void main()
j++;}
}for(k=1;k<=j;k++)
printf("%d\n",pp[k-1]);}}}
2樓:匿名使用者
問題是出現在*pp,*t;兩個指標上
你這樣做是很危險的。如果指向系統的記憶體空間,改變系統記憶體的資料,容易造成系統的崩潰
所以在c中講解指標的時候,這個是重點強調過的所以這兩個指標最好申請成比較大的陣列
邏輯上還有一點錯誤
if(i%2!=0)
t[j]=i;
j++;
這個j++應該包涵在if的作用域中的,所以要多一個花括號也可以這麼寫
if(i%2!=0)
t[++j]=i;
for(k=1;k<=j;k++)這個迴圈沒看懂是什麼作用,不好下結論
3樓:匿名使用者
額,前面兩個都是個半罐子,對不起不是有意要攻擊他們的,進入正題吧,你都這麼努力,大清早的都在程式設計,沒有理由不幫你呀。
首先來說上面兩個的錯誤哈 !
1樓的:int i,j=0,k;這個恐怕是沒問題的吧,自己去跑一下便知。
2樓的:scanf("%d",&x)為什麼要去掉取地址符號!?我很震驚。x並不是一個指標變數,而是以整型的變數!
現在看你的錯誤了,其實你應該學會調程式的,我知道你初學,但是要培養。在你用printf列印出x的值時是應該沒有問題的。
在for迴圈裡面出現了問題,因為你在前面定義了一個整型的指標變數t,你並沒有初始化它,拿過來直接就當陣列的首地址用了,這個是不行的。後面的一個for迴圈是一樣的錯誤,你乾脆將那兩個指標變數換成兩個陣列就可以了哈。如果題目要求你用指標解決,你就先定義兩個陣列,然後將兩個陣列的首地址賦值給兩個指標就可以做你的後續操作了吧!
或者直接用陣列名來操作,應為陣列名本身就是陣列的首地址。
4樓:召走刀文
問題出在*pp,*t;的使用上。
雖然你宣告瞭它們,但是你並沒有對其賦值,它們就是野指標。所以類似pp[k-1]=t[k-1];的對記憶體的操作都會出錯。
解決方法
將pp和t定義成比較大的陣列或者用malloc動態申請記憶體,大小分別為x和j
問題的關鍵點是,lz對指標和記憶體的理解還不夠,lz加油
5樓:周生
指標沒有指向有效記憶體導致的
就像你喊了一個人的名字讓他幹一件事,但是這個名字沒有對應的人
6樓:匿名使用者
*pp 和 *t 是int 型別指標,並沒有為其分配空間,也沒有初始化,而在程式中卻使用了t[j],即程式訪問了未定義的記憶體地址,導致出錯。
7樓:
scanf("%d",&x);這句的&應該去掉吧。
正用手機,不方便除錯,見諒哦
8樓:倫悅宜
*pp,*t;指標沒有指向有效記憶體導致的
9樓:匿名使用者
程式,int i,j=0,k;應該是有錯誤的。
求一道c語言題,我是初學者,希望越詳細越好
10樓:
首先在執行int k=011這一步抄的時候實際賦值是9
因為在c語言中支援三種整數,十進位制的就直接寫,16進位制的前面加0x,8進位制的前面加0,這題屬於第三種,而對於下一步中實際是k++和++k的理解,其中k++是每次必須把當前需要k的操作用k的原值進行結束後才能自己+1,如果是++k則是k先自己+1然後再把得到的新k值用來進行當前操作,具體到這個題目裡,也就是這一步要把k值輸出,所以需要k先把原值輸出出去,然後再加1,所以輸出的是9,不理解的話可以繼續提問!
11樓:匿名使用者
k是以八進位制的形式輸入!011就是9,然後輸出時實行k++即自加運算相當於 k=k+1;但是k++的結果是9,但是此時k已變成10 輸出事k++所以是9
一道簡單的C語言選擇題為什麼選B
m a b先算,比 優先順序高,先算a b,結果為假,用0表示,所以m 0,所以 m a b 這個表示式值為0,0和任何值進行 運算結果都為0,因此編譯器會對運算過程進行優化,右邊的表示式不再計算,所以n的值沒有變. 洪羿 這是個與運算問題,只要有一個為0就是0,所以當m a b這個式子執行之後,整...
一道簡單的c語言題目,一道簡單的C語言題目
s 2 是一個指標陣列,指向兩個字串 s 0 s 1 while s 1 0 迴圈,條件為 s 1 0 字串的最後一個值是 0 這裡遍歷s 1 字串,一共會遍歷4次。 寒鐵礦 你定義了一個指標陣列,s 0 指向的是第一個 字串的起始地址,s 1 指向的是第二個 字串的起始地址。while s 1 0...
一道很簡單的C語言題
include include void main sum sum max min score sum n 2 printf 2f n score 太多了,看到就累! sum應在while迴圈中初始化,也就是說每次輸入前sum都必須清0 include include void main sum s...