1樓:老魘
第二個迴圈初值應為:a=1。就按你的例子,數列中有兩個0,但你迴圈中卻是a從0~2,迴圈三次,填了三個0。
注意,不能使用a=0;a這個程式其實用不到k,直接利用 j 的值即可,因為當第一迴圈結束時 j 正好指向非0 的下乙個位置,就是用:for( ;j進一步說,第二個迴圈可以不要,只要在移動非0時,將原位置置 0 即可,即在nums[j]=nums[i]之後加上nums[i]=0。
本程式的要點在於迴圈和陣列的邊界處理。這類問題,編譯和執行可能都不會出錯,但在大型系統中將會成為不可再現或難以再現的錯誤現象。
2樓:聽不清啊
沒有問題啊。
#include
void movezeroes(int* nums, int numssize)
for(i=0;i<=k;i++);
movezeroes(a,5);
for(i=0;i<5;i++)
printf("%d ",a[i]);
getch();
return 0;
用c語言程式設計:將整形陣列中的所有元素前移乙個位置,0號元素移到最後
3樓:匿名使用者
用for迴圈逐步移動即可。
#include
// 所有元素前移乙個位置,0號元素移到最後void loopmove(int *dat, int len)void output(int *dat, int len)int main()
, len = 10;
printf("原始資料:62616964757a686964616fe58685e5aeb931333337613836");
output(a, len);
loopmove(a, len);
printf("第一次:");
output(a, len);
loopmove(a, len);
printf("第二次:");
output(a, len);
return 0;}
4樓:匿名使用者
#include
#include
int main()
5樓:匿名使用者
儲存0下標 這個元素 , 然後依次實現移位, 最後將儲存元素 賦值給陣列末
6樓:匿名使用者
# include
int main(void)
;long j, k;
k = i[0];
for (j=0; j<7; j++)
i[7] = k;
for (j=0; j<8; j++)
printf("%-5d", i[j]);
putchar('\n');
return 0;}
c語言程式設計:找出乙個數列中的最大值和最小值,然後將最大值和最小值位置交換
7樓:匿名使用者
int main()
;int i, temp, posmax = 0, posmin = 0;
int maxi = marks[0];
int mini = marks[0];
for (i = 1; i != 10; ++i)if(maxi < marks[i])
}temp = marks[posmax];
marks[posmax] = marks[posmin];
marks[posmin] = temp;
for (i = 0; i < 10; i++)return 0;}
8樓:孤獨一客人
#include
void main()
int h;
h=max;
max=min;
min=h;}
9樓:匿名使用者
for(i=0;ia[i+1]?a[i]:a[i+1];
}t=m;m=n;n=t;
C語言if判斷的格式,C語言程式設計中if語句的格式是什麼?
if a b a c a d a e a f a g b c b d b e b f b g c d c e c f c g d e d f d g e f e g f g 上面比較笨的寫法了,執行效率還可以 include stdio.h int a 1,b 2,c 3,d 4,e 5,f 6,g...
C語言程式設計的取餘,C語言程式設計中運算子 (求餘運算子)怎樣使用?
c語言的取餘運算是指兩個整數相除時,運算結果只取商的整數部分,並且沒有四捨五入。那個函式輸出結果是 30 7is2 c語言中要輸出百分號,在printf函式裡必須用兩個百分號做格式控制,因為百分號本身被用作格式控制前導符使用了,屬於編譯系統的保留字元,它已經不能代表它自己了,為了能輸出它,就做了這個...
用C語言程式算sinX的值,c語言程式設計中,sinx怎麼表示?
程式有幾個問題 1.long double型資料輸入輸出都要用 lf,而你都用的是 f。2.if i 1 此處應該為 x 1 3.while pow x,j p 1e 5 此處應該為 pow x,j p 1e 5 目前就發現這麼多錯誤,但是答案貌似不對。你再檢查檢查。c語言程式設計中,sinx怎麼表...