c语言实验买糖果
‘壹’ c语言编程 幼儿园的小朋友分吃一堆糖果,第一天吃了一半,又吃了一颗;
#include <stdio.h>
void main()
{
int n = 1;
int i;
int sum = 0;
for(i = 10;i >= 1;i--)
{
sum += n;
n = (n+1)*2;
}
printf("总共有糖%d颗\n",sum);
}
‘贰’ c语言 每个糖果1元,三张糖果纸换一个糖果,问N元最多能买几个糖果
一、算法设计:
1、首先N元可以买N个糖果,同时产生N个糖纸;
2、然后每三张糖纸可以换一个糖果,同时产生一张新的糖纸;
3、以此循环下去,直到糖纸数不足3张时(不考虑可以借糖果),结束程序。
二、参考代码:
#include<stdio.h>
intmain()
{
intN,tg,tz;
scanf("%d",&N);//输入N值。
tg=tz=N;//初始糖果和糖纸数都是N个。
while(tz>=3)//糖纸数超过三张,还可以继续换糖果,执行循环。
{
intt=tz/3;//t用来存储当前糖纸可以换的糖果数。
tg+=t;//累加到糖果总数上。
tz=tz%3+t;//剩余的糖纸数。
}
printf("%d元共可买%d个糖果 ",N,tg);//输出结果。
return0;
}
‘叁’ 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
大体的思路应该就是这个样子。
‘肆’ c语言分糖果
#include<stdio.h>
#defineN20
intn;
intequal(int[]);
voidmain()
{
intnum=0,count=0,i,t1,t2;
intchild[N];
printf("请输入小孩数:");
scanf("%d",&n);
printf("请输入每个小孩手中的原始糖数:");
for(i=0;i<n;i++)
scanf("%d",&child[i]);
while(!equal(child))
{
for(i=0;i<n;i++)
{
if(child[i]%2!=0)
{
child[i]+=1;
num+=1;
}
}
t1=child[0];
for(i=0;i<n;i++)
{
t2=child[(i+1)%n];
child[(i+1)%n]/=2;
child[(i+1)%n]+=t1/2;
t1=t2;
}
count+=1;
for(i=0;i<n;i++)
printf("%d",child[i]);
printf(" ");
}
printf("经过%d次交换后糖数相 调整过程中新发%d颗糖 糖数是%d颗 ",count,num,child[1]);
}
intequal(intchild[])
{
inti;
for(i=1;i<n;i++)
if(child[i]!=child[i-1])
return0;
return1;
}
不少问题,改了一下,楼主看看。加了一个每次分完后的结果输出。
‘伍’ C语言求助:十个小孩围成一圈分糖果问题
在编程领域,C语言的应用广泛。本文探讨了十个小孩围成一圈分糖果的问题。假设每个小孩开始时手中有不同的糖果数量,我们的目标是找到一个方法,使得每个小孩手中的糖果数量最终相等。为此,我们设计了一个函数,利用数组来表示每个小孩手中的糖果数量。通过一系列操作,我们能够实现糖果的重新分配。
具体来说,我们定义了一个名为fx的函数,接受一个整数数组作为参数。在函数内部,首先创建了一个辅助数组b来存储中间结果。接下来,我们通过循环逐步进行糖果的重新分配。在每一次循环中,首先进行奇数补充动作,即将每个小孩手中的糖果数量为奇数的情况进行处理。随后,我们按照规则进行糖果的分配,将糖果平均分给每个小孩。之后,我们需要对数组进行调整,以确保分配的公平性。最后,通过判断数组中相邻元素是否相等来确定是否满足条件。
为了验证该函数的有效性,我们编写了一个主函数main。在这个函数中,我们定义了一个初始状态下的糖果数组a,表示十个小孩手中的糖果数量。调用fx函数后,将返回值保存在变量cnt中,表示实现分配所需的次数。在最后的输出语句中,我们使用printf函数展示了所需的分配次数以及最终每个小孩手中的糖果数量。
通过上述代码,我们能够清晰地看到如何利用C语言实现糖果的重新分配。这种方法不仅能够解决实际问题,还能帮助我们理解循环、数组和条件判断等C语言的基本概念。
值得注意的是,这个函数的设计基于一定的假设条件,例如初始糖果数量的分配是随机的,且每个小孩手中的糖果数量必须最终相等。在实际应用中,可能需要根据具体情况进行适当的调整。
总结来说,通过这个例子,我们不仅学会了如何使用C语言解决实际问题,还加深了对编程逻辑的理解。希望读者能够通过这个例子,提高自己的编程技能。
‘陆’ 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语言编程 吃糖果的问题 难!!!!
只有在T组糖果中,当任意的某一种糖果的数量 - 剩余T-1种糖果的数量之和 ≥ 2的情况下,才不可能吃完。其他任何情况下都可以吃完。
证明: 设糖果有T种, 每一种有X1,X2,X3,......XT 个。
步骤一: 取X1,X2,X3........XT 中最小值Xmin。(即标准地每种吃一个,直到把最少的那一组吃完)
那么接下来剩余的糖果种类为T - 1。每一种有X1-Xmin1,X2-Xmin1,X3-Xmin1.......XT-Xmin1 个
步骤二:在剩余的T-1种糖果中,找出数量最少的。(即X1-Xmin,X2-Xmin.......XT-Xmin中最少的)
那么剩余的糖果种类为T-2,每一种有X1-Xmin1-Xmin2,X2-Xmin1-Xmin2.......XT-Xmin1-Xmin2个
重复以上步骤直到最后只剩一种糖果,这个糖果的数量为,Xmax - Xmin1- Xmin2 - Xmin3 ....- Xmin(T-1)
当这个糖果的数量为0的情况下,就可以吃完。不为0的情况下就不可以吃完。
考虑最差情况,即每一次只吃最多的一种糖果和最少的一种糖果。(每次吃2种,其他糖果不吃)
那么最后剩余糖果的数量为 Xmax - X1-X2 -X3 ....-XT
当这个值为1时 则可以吃完。大于1时 则吃不完。
接下来编程就非常容易了。
遍历一遍T组糖果中每种糖果的数量,然后算一下就行了。