-
a[i]=a[i]*pow(10,t);
你已經將 a[i] 乘以 10 很多次,以至於你肯定超出了 int 範圍。
如果你能像這樣乘法,你就不需要乙個接乙個地儲存陣列了,對吧?
有幾點建議:
如果您使用的是陣列,則可以考慮在進入時從後到前存放陣列。
很快。 for(i=0;i<=a-1;i++)cin>>a[i];
相反。 for(i=a-1;i>=0;i--)cin>>a[i];
這樣做的優點是 A 和 B 陣列從單個位對齊,這有利於位之間的加法和減法。
您可以考慮為陣列中的元素多新增幾個以上的數字。
例如,從 a[0] 到 a[3],可以單獨儲存 3 的 5 位,這樣可以減少原來五分之一的空間消耗。 以下操作可以稍作修改。
對這個問題可能影響不大,但我們應該培養這種優化演算法的思想,凡事從小事做起,只有慢慢積累,才能成就大事。
也可以使用字串字串來處理這個問題,這也比較簡單。
-
我錯了乙個問題,一旦我寫了以下內容,他們就 cI:
每個人有時都做錯了事,我也做錯了事,但對我來說最難忘的是那一次。
那天,我放學回家,開始寫數學作業,寫完後,我把它扔給媽媽,媽媽開始仔細檢查。 “嘉欣,我在這個問題上犯了乙個錯誤。 媽媽和藹地說。
我不耐煩地說:“嘿,它來了。 看完問題,我不解地問道
**有什麼問題嗎? 媽媽小心翼翼地告訴我這個問題的意思,我卻跺了跺腳,皺著眉頭,不耐煩了,於是大聲喊道:“知道了,明白了!
我這樣大喊大叫,但我媽媽仍然對我微笑。
過了一會兒,弟弟對我說:“你應該主動向媽道歉,媽對你這麼好,你真的不應該這樣對待媽! “我想了想,在這件事上我確實有點過分了,所以我走到我母親身邊,撲進她的懷裡,說:
媽媽,對不起,我不該這樣跟你說話。 媽媽沒有說話,只是笑著擁抱了我。
在這件事上,我非常感謝哥哥叫醒了我,讓我明白自己做錯了,叢琦去向媽媽道歉,從而得到了媽媽的原諒。 同時,我也明白,我們的母親悉心教導和培養我們,我們應該懂得感恩,學會尊重和愛護她!
-
3.誤差:陣列按公升序排列,發現i,j為乙個區間逐漸變窄,每個區間範圍減半,當xa[k]時,即x在a[k]的正確範圍內,下限i=k+1,當a[k]==x時,直接跳出;
找到 a[k] 並刪除它,使 a[k] 後面的數字向前移動,並將 a[9] 設定為 0;
3.輸出乙個新陣列,並在其前面新增輸出原始資料的比較。
#include ""
#include
using namespace std;
int main()
int x, t1, t2, i, j, k;
int a[10] =
printf("請輸入需要刪除的整數");
scanf_s("%d", x);
printf("原始資料為:");
for (i = 0; i < 10; i++)printf("%5d", a[i]);
printf("");
i = 0;
j = 9;
while (i <=j)
k = i + j) /2;
if (a[k] =x)
break;
if (a[k]>x)
j = k - 1;
if (a[k]i = k + 1;
if (i>j)
printf("需要刪除的數字不在陣列中");
else for (i =k; i<10; i++)a[i] =a[i + 1];
a[9] =0;
printf("%5d", a[i]);
for (i = 0; i < 10; i++)printf("%5d", a[i]);
printf("");
system("pause");
return 0;
-
您好,很高興您的問題。
我通讀了你的程式,沒有仔細分析,但是我發現了乙個邏輯錯誤,我猜程式跑到這個地方的時候,不容易跑下來。 就是句子a[k]=x,在C語言中,=代表賦值,就是把右邊的資料值賦給左邊的變數,這句話總是真的,那麼這句話總是真的,所以break語句就執行了。 我想你應該把它改成a[k]==k,那麼就沒有這樣的問題了,你可以試試。
-
<>這是程式出錯的地方,請執行我糾正的操作。
-
1.太陽應該是和,太陽是乙個未定義的變數2,p==n,這裡面的p也沒有宣告,應該是小寫的p,其他邏輯看著它,似乎並不覺得異常。
-
有幾個問題:
1. 如果 n 表示預設的終止條件,則不應在迴圈中分配 n。
2. 當 for 迴圈達到 49 時,int 將出現越界錯誤並變為負數。 而每次 n = a[i],所以 a[i] < = n in while 總是滿足的,而 n 到 50 之後越線變為負數,n < 10000 也滿足,這樣就會形成乙個無限迴圈。
3.修改:第乙個是在for迴圈中,不要給n賦值,加乙個條件,遇到a[i] >= n,break; 緊隨其後的是輸出 i; 不要在外層。
第二種型別如下,空間複雜度為o(1)。
-
修改位置:
1. 在第 4 行中,新增乙個變數 k。 將語句替換為:
int m,n,s,q,k;
2. 在第 8 行中,新增一句話:
q=m;3. 在第 11 行中,新增一句話:
s=n;4. 在第 12 行中,將其替換為以下內容
while(q%s!=0)
5. 在第 14 行中,將其替換為以下內容
k=q%s;
6. 刪除第 16 行;
7. 在第 18 行中,將其替換為以下內容:
q=s;8. 在第 20 行中,將其替換為以下內容:
s=k;9. 將第 20 行中的 n 替換為 s:
printf(“%d”,s);
10. 在第 26 行中,將 m 替換為 m*n s:
printf(“%d”,m*n/s);
進行這些更改後,程式就沒有問題了。 詳見下圖
修改後的程式。
-
您好,很高興您的問題。
使用此程式,您只需要更改迴圈中語句的順序即可。
在迴圈體中,改為:s=m%n;
q=m*n/s;
n=s;m=q;
桑葚(桑葚) 坤氏(紳士) 嗓音沸騰(人聲沸騰) 女人和儒家知道(女人和孩子都知道) 金習 夏名(簽名) 簡明意思(簡明意思) 野獸死亡組(獸項死亡組) 恐慌(猶豫) 點綴(攛掇) 從框架中抓出(抓住眼睛) 消失(消失) 浮水(福水) 噪音 熱量(乾熱) 苦如苦(包括苦澀) 迷失(少數) 迷失(哀悼) 肌肉健康(肌腱) 微笑可以鞠躬(微笑可以被愛) 無與倫比(無與倫比) 悲傷(恍惚) 狩獵(狩獵) 抱怨天空(抱怨天空) 無盡(滔滔不絕) 簽名(欣賞) 噁心的錢(賺錢) 指向高處(雄心勃勃) 疲憊(疲憊) 服務(治療) 甜蜜而安靜(寧靜) 微不足道(微不足道) 令人驚訝的勝利(令人驚訝的勝利)。