一道關於陣列的C 問題,為什麼就是出錯呢?

2025-04-03 20:50:19 字數 4891 閱讀 5922

1樓:宦怡乜杉月

笨啊,題目。

都說了。資料範手巨集圍在10-100間,你就拿乙個100的數畢返冊組做標記不就得了。

#include

usingnamespace

std;int

main()

intn,i,t;

intflag[100];

flagarray

memset(flag,0,sizeof(flag));

cin>>n;

for(i=0;i>t;

if0==flag[t])

flag[t]

if0==i)

cout世銷return

2樓:印策勾楚潔

intmain()

intn,i,j;

cin>>n;

inta[n],tmp,cnt=0;

for(i=0;i>tmp;

讀入陣列。for(j=0;jifa[j]==tmp)

continue;//檢查有沒有重複的,有就直接扔掉。

a[cnt++]

tmp;cout

tmp;/輸出。

return

試試這個,應該會快點,但是並不是枯殲最快的,並豎再快可能要沒蔽衝排序了。

為什麼這道c語言的關於字元陣列的題我做錯了?高手幫忙看下~~

3樓:網友

//第一,「n位置的開始處」這個說法很不準確,我的理解是:如果n位置是字元'x',那麼插入字元後為:xbbbb(設"bbbb"為插入的字元)

按照你介紹,加上空格這個字元,'o'前面的位置應該是9

第二,你的字串太小了,如果str1裡的字元為12個,str2裡的字元10個,這樣插入的話很容易就溢位。

第三,插入的方法不對。

#include

int main()

for(i=0;i<100;i++)//計算str2裡的字元數。

還有其他的情況例如字元數過多(str1用了80個,str2有30個)等待情況都可以通過這兩個記錄來進行判斷,就不贅述了。

if(n<=0||n>size1)//判斷條件"n<=0||n>20"也不對,在n=18處插入乙個大小為4的字串是不行的。

我用這個判斷插入點是否在str1的那些字元內,自己定的,好像你沒這個要求。

while(n<=0||n>size1);

* while(str1[i]!=str1[k])

i++;while(str1[i++]=str2[j++]='\0')

puts(str1);

你的這個實現插入的語句有問題,在插入的時候,要先找到插入點,將str1的插入點之後的字元往後挪,以空處size2個長度來存放str2的字元。

for(i=size1+size2-1;i>n;i--)//後挪。

str1[i]=str1[i-size2];//ok

for(i=n;i//ok

puts(str1);

return 0;}

4樓:網友

錯誤在倒數第五行:

while(str1[i++]=str2[j++]='\0')應該為while((str1[i++]=str2[j++]='\0')

請原諒我為了明顯使用了全形括號。

不等號(!=)的優先順序大於賦值號(=),所以你那一句實際上是while(str1[i++]=(str2[j++]='\0'))

str1裡不是1就是0,怎麼可能對。。。

儘量不要再邏輯表示式中使用賦值號(=),很容易出錯,要格外小心。

5樓:網友

有問題先檢查一下,你能告訴我你那個k是什麼麼?沒有賦值過。

6樓:無影之牆

k沒賦值,輸入的n沒用到。

c語言陣列題哪個對那個錯?

7樓:網友

a是對的。陣列中只能儲存同種型別的資料。

b是錯的。如果賦給的資料個數比定義的陣列元素多,就會造成越界錯誤,篡改掉相鄰的資料塊內容。

c是對的。陣列的名稱符號,其含義相當於乙個指標,指向陣列在記憶體中的首址。

d是對的。傳遞陣列給函式後,也就相當於把這個指標給函式了,一旦函式內按照陣列名進行操作,就會直接修改陣列在記憶體中的實際內容。

8樓:匿名使用者

只有b是錯誤的,因為這樣會造成陣列訪問越界,造成陣列外的位址被非法賦值。

a正確,這是陣列的定義。

c正確,陣列名就是首元素的位址,因而陣列名可以當作指標使用d正確,當陣列名作為指標被傳給某函式時,確實可以在子函式中修改陣列內容,因為子函式提到了位址值,通過位址當然可以修改其中內容。

9樓:網友

b不對。陣列空間不能動態擴大。a,c是對的。d如果傳遞給函式的是陣列名,即陣列的首位址,那麼可以在函式中修改陣列元素的值。

10樓:哈哈呵呵你好

a是對的,在c語言中陣列只能存放一種型別的資料。

11樓:網友

b錯 其他全對 我認為。

c語言,陣列輸入遇到問題求大神指教:**錯了,如何改正,為什麼會出現這種情況?

12樓:自我程式設計

scanf的格式加'',含義特殊,不是輸入乙個回車,而是輸入完乙個數字後,必須等待乙個非空格、製表符、回車的輸入,程式才會繼續。

所以你那樣寫,第一次迴圈輸入2回車,不會進入下一次迴圈,而是等待再次輸入,然後你輸入3的時候2被儲存在元素1中,進入下乙個迴圈,已經有3了還要等待輸入,於是你輸入4,實際儲存的是3,所以後面都錯位了,結果就是最後乙個輸入沒有被儲存。

另外所有i迴圈都從0開始,包括氣泡排序。

修改如下:#include

#include

int main()

for(i=0;i<=10;i++)

for(j=i+1;j<=10;j++)

if(a[i]>a[j])

for(i=0;i<=10;i++)

printf("%d ",a[i]);

system("pause");return 0;}

13樓:阿冬

對於c語言來說,陣列下標從0開始,你**中是從1開始,這樣雖然並不會出錯,但浪費了乙個空間。真正有錯誤的地方是輸入函式scanf中,不應該加,該函式會自動根據回車,空格以及tab來分隔輸入的資料。

14樓:網友

#include

#include

int main()

for ( i=0;i<10-1;i++ for ( j=i+1;j<10;j++ if ( a[i]>a[j] )

for ( i=0;i<10;i++ printf("%d ",a[i]);printf("");

system("pause");

return 0;

a[11]多定義乙個a[0],雖然不用但不必非要使用下標從1開始,c語言的for語句非常適合下標從0開始的陣列遍歷,你只需要考慮「請輸入第%d個數」時使用i+1替代i即可。

以上程式有幾個地方修改過。

15樓:東學仔

csharp中陣列的公升序和降序排列:

請輸入6個整數按回車確認每個整數");

int myintarr = new int[6];

for (int i = 0; i < 6; i++)myintarr[i] = ;

你輸入的數字為:");

foreach (int outint in myintarr) +"\t");

**********=降序排列後為:");

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

foreach (int outint in myintarr) +"\t");

**********=公升序排列後為:");

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

foreach (int outint in myintarr) +"\t");;

16樓:網友

1、第三方的軟體屏鎖密碼忘記:由於開機時啟動不是很快,在剛剛開機的那時候軟體還沒有啟動起來。可以利用這一點來解決手機鎖屏密碼忘記的問題,將手機關機重啟,利用剛剛開機的短暫時間將手機上的第三方鎖頻軟體解除安裝,解除安裝後我們的手機就恢復正常了。

c++的問題是有關陣列的。

17樓:

第四題c答案:定義的是2列3行的陣列,所以大括號內是按行給出了的三個值,是對的!

第六題d答案:這個是應該缺少條件的,對於i和j的取值範圍,題目中並沒有給出,如果i和j都等於0的話,也就是a[0][0],題目中就沒有答案。你只需要知道,二維陣列,在記憶體中的位址是按照行來的,即先排滿一行,在排下一行。

c語言關於陣列的乙個問題

18樓:莊政警

c=str+'3';

這個語句有兩處錯誤,一處邏輯錯誤,一處語法錯誤str+'3'就是str+51, str+51從語法上看沒有錯誤,就是返回從str開始偏移51個char單位的位址,但str陣列定義時長度是8,所以str+51是越界的位址,這是邏輯錯誤。

c是個char,而str+51是個char*,是個位址,這是不能給c賦值的,這個是語法錯誤。

19樓:網友

糾正樓上乙個說法,注意此處是個語義錯誤但並不是語法錯誤;實際編譯中編譯器可能會出warning但編譯是可以通過的,因為c是個弱型別語言,指標和char都被視作數值型別,能夠進行各類自動轉換。

關於題主的問題,注意此處加的是'3'而不是3,即ascii碼的偏移51實際造成陣列越界。

一道邏輯題為什麼選a不選d,一道邏輯題,為什麼選d不選a?

在所有的選項中,要想反駁題中的假設,必須提出其它的因素。a項中說,參加創始人培訓班的粉絲中的客戶購買手機量增多,很顯然是參加培訓班起了作用,與 情懷 無關。上面批註說得就很對啊,題目說的是平均,跟總量無關啊 一道邏輯題,為什麼選a不選d?題幹的觀點是第一句 美國大眾文化的歐洲化已經達到了25年前無法...

一道英語閱讀題,為什麼選B不選c

提出兩種觀點,對比的面更大,關於選項c,說的提出相反觀點,文中並沒刻意說出說誰好誰壞,不能說conflicting views,做這種題感覺也很重要,尤其考研英語更是如此。用更極端的例子來和正常的想法做對比吧 用了對比的方法,第一種是減少溫室氣體,第二種是把地球的軌道外移50 這裡沒有矛盾的觀點。英...

一道C語言中的指標問題,一道C語言的指標問題

include void main 第乙個空填char str1,str2 後面如樓上所說。p1 p1 p2 一道c語言的指標問題 a char s 5 abcde bai 字串這樣賦值時,末尾有乙個du預設的zhi串尾符 0,所以字串 abcde 的實際長度是dao 回6,s 5 是儲存不下的,溢...