當前位置:首頁 » 編程語言 » c語言五個水手
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言五個水手

發布時間: 2022-11-15 14:39:34

c語言編程水手分椰子問題,我自己寫了一段程序,答案不對

這道題我也想了很久,看了網上很多方法都是直接給出公式算,我自己找了下這個問題的規律,用迭代和逆向遞推的方法解決了這個問題,具體代碼如下:(程序附有注釋,建議大家動筆畫畫圖,看看不同水手個數的情況是怎麼樣的,這樣就可以理解了)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

main()
{
intn;//水手個數

printf("Inputn(1<n<=5): ");
scanf("%d",&n);

//增加程序的健壯性
if(n>1&&n<=5)
printf("y=%d ",Coconu(n));
else
printf("Error! ");

system("pause");
}

intCoconu(intn)
{
inti;//內層循環變數
intj=1;//外層循環變數,
ints;//原來椰子的個數
intr;//迭代變數

do//第一層循環:增加最後一名水手平均分完之後的每一份椰子數,從1開始(1最小)
{
r=j*n+1;//最後一名水手總的椰子數

//第二層循環:利用迭代及反向遞推的方法求出原先的椰子數
for(i=n-1;i>0;i--)
{
//在迭代過程中,如果逆向遞推出現不能整除的情況,則跳出循環。(因為椰子必須是整個的)
if(r%(n-1)!=0)
break;
//迭代
s=(r/(n-1))*n+1;
r=s;
}

j++;
}while(i!=0);//i=0則表示完成了循環,整個循環完成s才是最終的原先的椰子個數

returns;
}

❷ 我想問一下五個水手分椰子的問題,不說c語言,現在我覺得3121也是答案,能解釋一下嗎

問題只說一半,我看了你的提問,首先是去網路了你問的是什麼。。。。
如果我搜索的不錯,你問的問題是不是:
水手分椰子問題。五個水手發現了一堆椰子,第一個水手把椰子分成5等分,多出一個給了猴子自己藏起了一堆;第二個水手把剩下的椰子混合再分,又分為5等分,多出1個給了猴子,自己藏起1堆,第三,四個水手也同樣來分第五個水手把椰子分為5等分後,正好多出1個給猴子,問這堆椰子有多少個?
如果是這個,C代碼我就不寫,因為我網路搜索問題的時候,也在網路文庫看到了代碼= =
至於你說的
3121
跟著邏輯走一遍就知道是不是了
第一水手 (float)(3121-1)/5 =624 拿走624 留下2496(624*4)
第二水手 (float)(2496-1)/5=499 拿走499 留下1996(499 *4)
第三水手 (float)(1996-1)/5=399 拿走399 留下1596(399 *4)
第四水手 (float)(1596-1)/5=319 拿走319 留下1276(319 *4)
第四水手 (float)(1276-1)/5=255 拿走255 留下1020(255*4)

❸ c語言 如何一行輸入五個數

輸入五個數的時候就實現換行。。先記住你所輸入的數字個數,當達到5的時候就換行。
do
{scanf("%d",&t);
i++;
}whlie(i!=5);
或者for(i=0;i<=4;i++)scanf("%d",&t);printf("\n");
主要的思想就是對輸入的數進行計數,以五個為一行。。

❹ 用C語言寫程序輸出要求控制每行輸出五個數,怎麼控制

在C語言寫程序輸出時,要控制每行輸出數據的個數,可以通過自定義計數器來完成。
如:
// 輸出自然數1-30,每5個數為一行
main()
{ int i;
int cnt=0; // 定義cnt用作輸出數據的計數器,初始為0
for( i=1;i<=30;i++ ) // 循環30次
{ printf("%5d",i); // 輸出數據值
cnt++; // 每輸出一個值,計數器加一次
if( cnt%5==0 ) // 假設每行輸出5個(如果計數器與5取余為0,則換行)
printf("\n"); // 輸出換行
}
}
定義一個計數器,然後每次就自加,當%5==0的時候就printf("\n");看例子,希望能幫到你。
#include
void
main()
{
int
count=0;
int
i;
for(i=1;i<=20;i++)
{
printf("%d\t",i);
count++;
if(count%5==0)
printf("\n");
}
}

❺ C語言輸入五個學生的信息,並交其輸出

#include "stdio.h"
struct student
{
int num;
char name[20];
float score[3];
}stu[5];
main()
{
int i,j,k,n=1;
for(i=0;i<5;i++)
{
printf("第%d個學生的信息:\n",n);
scanf("%d",&stu[i].num);
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
float score;
scanf("%f",score);
stu[i].score[j]=score;
}
n++;
}
for(k=0;k<5;k++)
{

printf("%d %s %f %f %f",stu[k].num,stu[k].name,stu[k].score[0],stu[k].score[1],stu[k].score[2]);
printf("\n");
}
}

❻ C語言有五個學生每個學生有4門課程的成績要求在用戶輸入學生序號後輸出該學生的全部成績用指針函數實現

int main()
{
int a[5][4]={{0,10,20,30},{20,30,40,50},{30,40,50,60},{40,50,60,70},{60,70,80,90}};

int number;
printf("請輸入序號(1--5):");
scanf("%d",&number);
printf("四門課的成績是:");
for (int i=0;i<4;i++)
printf("%d ",*(a[number-1]+i));
return 0;
}

❼ 關於c語言的問題

e是以10為底數的意思
數學裡面科學計數法經常用的10的多少次方
+002則是10的正2次方
好比
0.1
如果用e就是
1e-1
1乘以10的負1次方
10e-2
10乘以10的負2次方
這兩個數都等於0.1,而c語言默認都是小數點前面1位數
所以你的123.456當然等於1.23456
x
10的2次方
即1.23456e+002

❽ C語言設計「有五個數,去掉一個最大數和一個最小數,求剩下三個數的平均數」

先求5個數的總和啊,然後用比較找出最大的數和最小的數,分別保存。
然後從5個數中減去最大的數和最小的數,除以3

平均數。

❾ c語言程序設計

//經過測試了,答案是正確的!答案是 19531

# include<iostream.h>
int main()
{
int fruit=7,rest,round=0;
rest=fruit;
while(1)
{
if((rest%5)!=1)
{
round=0;
fruit++;
rest=fruit;
continue;
}
rest=(rest-1)/5;
round++;
if(rest==1 && round==6) break;
if(rest==1 && round!=6)
{
round=0;
fruit++;
rest=fruit;
continue;
}
if(rest!=1 && round==6)
{
round=0;
fruit++;
rest=fruit;
continue;
}
}
cout<<"這堆椰子有: "<<fruit<<" 個!"<<endl;
return 0;
}

❿ C語言 五個數排序

#include<stdio.h>

void sort(int a[])

{int i,j,t;

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

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

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

{t=a[i];a[i]=a[j];a[j]=t;}

}

int main()

{int i,j,a[6][5];

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

{ for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

sort(a[i]);

}

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

{printf("Case %d:",i);

for(j=0;j<5;j++)

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

printf(" ");

}

return 0;

}