A. c語言:老師給十個小孩分發糖果,第一個和第二個小孩各分一塊糖
#include;#include;float;GetSweets(int;seqNum){;;;;if(seqNum;
B. c語言編程,10個小朋友圍成一圈分糖果。
#include<stdio.h>
voidrerange(intx[])
{
inttemp=x[0]/2,l,m;
l=temp;
for(inti=1;i<10;i++)
{
m=x[i]/2;
x[i]=m+temp;
temp=m;
}
x[0]=temp+l;
for(inti=0;i<10;i++)
{
printf("%d",x[i]);
if(x[i]%2)
{
x[i]+=1;
}
}
printf(" ");
}
intmain()
{
inta[10]={12,2,8,22,16,4,10,6,14,20};
intn=5;
for(inti=0;i<n;i++)
{
printf("第%d次調整: ",i+1);
rerange(a);
}
return0;
}//解決請採納
C. C語言 10人分糖
所有小孩同時把自己的糖果分一半給右邊的小孩。注意這里是同時,並不是第一個小孩把糖給第二個小孩以後,第二個小孩再把他現有糖的一半給下一個小孩。
#include<stdio.h>
intmain()
{
intA[]={12,2,8,22,16,4,10,6,14,20},
N=sizeof(A)/sizeof(int),
steps;
inti,prev,temp;
for(steps=0;;steps++)
{
//判斷是否全部相等
for(i=1;i<N;i++)
if(A[i]!=A[0])break;
if(i==N)break;
//模擬
prev=A[N-1]/2;//記錄前一個小孩糖數的一半
for(i=0;i<N;i++)
{
temp=A[i]/2;
A[i]=temp+prev;
A[i]+=A[i]&1;
prev=temp;
}
}
printf("Value:%d Steps:%d",A[0],steps);
}
//Output
Value:18
Steps:16
D. :[藍橋杯][2014年第五屆真題]分糖果c語言
過不了顯示是什麼意思?編譯錯誤?
E. c語言編程:分糖果
都已經回復過了,怎麼還在重復發貼啊~~
#include<stdio.h>
int
equal(int
child[])//判斷每個小孩手上的糖是否相等
{
int
i;
for(i=1;i<10;i++)
if(child[i]!=child[i-1])
return
1;
return
0;
}
void
main()
{
int
child[10]={10,2,8,22,16,4,10,6,14,20};
int
i,
tmp0,
tmp,
sum=0,
count=1;
while(equal(child))
{
tmp0=
child[0];
for(i=1;i<10;i++)
{//循環分糖
if(child[i]%2)
child[i]++;
tmp
=
child[i];
child[i-1]=child[i-1]/2+tmp/2;//分糖後
}
if(tmp0%2)
tmp0++;
child[9]=child[9]/2+tmp0/2;
count++;
}
printf("經過%d次後,大家手上都有%d塊糖.\n",
count,
child[0]);
}
F. C語言分糖果,1處應該填什麼
count //來做計數的。
但是這樣寫得話,估計編譯器會報錯,因為是通過i=10,來做停止循環的關鍵數。因為如果全部相等,會做完全部循環,不然就會break.
G. C語言編程題:分糖果,如圖。沒有思路T^T ,求大神
只有一個簡單的思路,一起討論一下:
第1個小孩給他一個(誰讓他搶在前面呢:)
後面的小孩依次按規矩來,看應該給幾個,可愛值高呢,就加一塊,否則就減一塊。
如果發現減到零了,那就倒回去,前面的人補一塊。當然,不是全部補,只要補發到可愛值較高的地方就可以了。實際只需要計算一個總數,所以可以預先算好,直接加到總數中就行了。
開始時,第1個小孩1塊糖,待補發的數量=0
第2個小孩先給2塊糖,由於可愛值開始變高,待補發的數量=1
每3個小孩先給1塊糖,由於可愛值變低,待補發的數量+1。
第4個小孩可愛值變低,待補發總數+1,照說應該給0塊糖,當然不行,補發一塊,前面的也都補一塊,補3塊。這個待補發數量還不能歸零。當前第4個小孩的糖數應該修正成1。
第5個小孩給2塊糖,由於可愛值開始變高,補發數量歸零=1。
1+2+1+0+(3)+2=9
大體的思路應該就是這個樣子。
H. c語言出錯分糖果
#include<stdio.h>
void print(int s[]);
int judge(int c[]);
int j=0;
main()
{
int sweet[10]={10,2,8,22,16,4,10,6,14,20};
int i,t[10],l;
printf("child 1 2 3 4 5 6 7 8 9 10 ");
printf("............................................ ");
printf("time ");
print(sweet);
while(judge(sweet))
{
for(i=0;i<10;i++)
if(sweet[i]%2==0)
t[i]=sweet[i]=sweet[i]/2;
else
t[i]=sweet[i]=(sweet[i]+1)/2;
for(l=0;l<9;l++)
sweet[l+1]=sweet[l+1]+t[l];
sweet[0]+=t[9];
print(sweet);
}
}
int judge(int c[])
{
int i;
for(i=0;i<10;i++)
if(c[0]!=c[i])
return 1;
return 0;
}
void print(int s[])
{
int k;
printf(" %2d ",j++);
for(k=0;k<10;k++)
printf("%4d",s[k]);
printf(" ");
}