当前位置:首页 » 编程语言 » 趣味学习c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

趣味学习c语言

发布时间: 2023-07-10 10:12:36

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);
}
希望能解决您的问题。