❶ c語言趣味問題求代碼和解法!3Q了
#include<stdio.h>intmain(){inti=6,num=1;for(i=6;i>=1;i--){printf("第%d天,桃子數為%d ",i,num);num=(num+1)*2;}return0;}
❷ c語言趣味題目 求代碼和答案 謝謝 !
將四人用1, 2, 3, 4 編號,用枚舉法解決
變數x 表示做好事者的編號序號,則x 從1到4,四個人所說的話分別寫成:
a 說:x != 1
b 說:x == 3
c 說:x == 4
d 說:x != 4
當這4 個邏輯式值相加等於3 時,即為解答
#include <stdio.h>
int main( )
{
int x;
for (x = 1; x <= 4; ++ x)
if ((x != 1) + (x == 3) + (x == 4) + (x != 4) == 3)
printf("Is %c\n.", (char)(64 + x));
}
❸ 一道C語言趣味小題
#include<stdio.h>
typedef struct GOODTHINGS
{
int trueIndex; //做好事的號碼 -1 代表沒有指示誰做了好事
int falseIndex; //沒做好事的號碼 -1代表沒有指示誰沒做好事
GOODTHINGS()
{
trueIndex = -1;
falseIndex = -1;
}
} GoodThings, *pGoodThings;
bool isOK(const pGoodThings pA, int nSizeofA);
void main()
{
GoodThings a[4];
GoodThings temp;
a[0].falseIndex = 0; //A指示自己沒做好事
a[1].trueIndex = 2; //B說是C
a[2].trueIndex = 3; //C說是D
a[3].falseIndex = 3; //D說C說謊,即D指示自己沒做好事
int trueCount = 0;
for(int i = 0; i < 4; i++)
{
temp.falseIndex = a[i].falseIndex;
temp.trueIndex = a[i].trueIndex;
if(i == 0 || i == 3)
{
a[i].trueIndex = i; //a[i] tell lies
a[i].falseIndex = -1;
}
else
{
a[i].falseIndex = a[i].trueIndex;
a[i].trueIndex = -1; //a[i] tell lies
}
if(isOK(a, 4) == true)
return;
a[i].falseIndex = temp.falseIndex;
a[i].trueIndex = temp.trueIndex;
}
}
bool isOK(const pGoodThings pA, int nSizeofA)
{
int trueIndex = -1; //沒有指示
for(int i = 0; i < nSizeofA; i++)
{
if(pA[i].trueIndex != -1 && trueIndex == -1) //首次指示pA中誰做了好事
trueIndex = pA[i].trueIndex;
if(pA[i].trueIndex != -1 && pA[i].trueIndex != trueIndex) //與公共指示誰做好事不同,則互斥退出
return false;
}
if(trueIndex == -1)
{
printf("Can't specify the index...\r\n");
return true;
}
for(i = 0; i < nSizeofA; i++)
{
if(pA[i].falseIndex == trueIndex && pA[i].falseIndex != -1) //指示trueIndex沒做好事,又指示trueIndex做了好事,互斥退出
return false;
}
printf("result index: %d\r\n", trueIndex);
return true;
}
❹ c語言趣味編程:話說有一隻狗熊到玉米地里掰玉米,一邊掰,一邊吃,第一天吃了一半,又拿走一個回去喂小狗
#include<stdio.h>
void main()
{
int day, x1, x2;
printf("狗熊到玉米地吃了包穀");
printf("第一天吃了一半又拿走一個回去喂小狗熊。\n");
printf("第二天又去吃了剩下的一半,走是任然帶一個回去。/n");
printf("以後每天都吃前一天剩下的一半,拿走一個。/n");
printf("到了第十天時,地里只剩下一個包穀。求並陪地里一共有多少包穀。/絕慧蠢n");
day=10;
x2=1;
while (day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("碧運包穀總數=%d\n",x1);
}
❺ C語言趣味題
#include<stdio.h>
#include<stdlib.h>
int saving,*save;
void check(int i,int first,int N,int total,int *num)
{ int j,k;
save[saving]=i;
saving++;
for(j=i+1;j<N;j++)
{ check(j,first+num[j],N,total,num);//遞歸check
//若經過排序這里如果first+num[j]>total的話就可以return了
if(first+num[j]==total)
{ for(k=0;k<saving;k++)
printf("%d ",num[save[k]]);
printf("%d\n",num[j]);
}
}
saving--;
}
void main()
{int N,total,i=0,j,temp;
int *num;
saving=0;
printf("input N:");
scanf("%d",&N);
num=(int *)malloc(sizeof(int)*(N+1));
save=(int *)malloc(sizeof(int)*(N+1));
printf("input %d num:",N);
for(i=0;i<N;i++)
scanf("%d",&num[i]);//對這N個數排序可提高效率^^
printf("input total:");
scanf("%d",&total);
for(i=0;i<N;i++)//演算法從這里正式開始!!!
check(i,num[i],N,total,num);
}
希望能解決您的問題。