① 用C语言编程求出猴子头天摘了多少果子
#include <stdio.h>
void main ()
{
int i=1,j;
for(j=0;j<10;j++)
{
i=(i+1)*2;
}
printf("猴子摘的果子数为:%d\n",i);
}
多读书,多做题自然就会了。
② C语言的题目
描述的不是很清楚,第4个果子掉到第3个果子位置上,那第五个掉第四个的位置上?
③ 初中C语言经典例题
1、求1+2+3+4+5+......+n
2、求1*2*3*4*5*......*n
3、求菲波拉契数列第n项(菲波拉契数列满足:A1 = 1;A2 = 1;An = An-1 + An-2(n>=3);
4、判断一个数能否分成两个合数的积
5、求两个数的最大公约数;
6、这是高中信息学奥林匹克竞赛2004年的复赛第一题,不过蛮简单的,推介做一下:
津津的储蓄计划
(save.c)
【问题描述】
津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
【输入文件】
输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
【输出文件】
输出文件save.out包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
【样例输入1】
290
230
280
200
300
170
340
50
90
80
200
60
【样例输出1】
-7
【样例输入2】
290
230
280
200
300
170
330
50
90
80
200
60
【样例输出2】
1580
数列基本:
1、找最大数:
找一组数中的最大数;
2、排序:
将N个数从小到大排列;
3、搜索:
在一个数列中找到一个数,并将其删除。
字符串处理相关:
1、解一元一次方程(该方程被直接作为字符串读入):
-x+3x-18-9x+37-9x-1=2x+3-x
综合:
这里也同样给出一道题,尽可能优化程序效率:
合并果子
(fruit.c)
【问题描述】
在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。
每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。
因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。
例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。
【输入文件】
输入文件fruit.in包括两行,第一行是一个整数n(1<=n<=10000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。
【输出文件】
输出文件fruit.out包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于231。
【样例输入】
3
1 2 9
【样例输出】
15
【数据规模】
对于30%的数据,保证有n<=1000:
对于50%的数据,保证有n<=5000;
对于全部的数据,保证有n<=10000。
④ C语言 合并果子(类哈夫曼树)问题
这段代码恐怕达不到目的。有如下问题,看注释:
for(j=num;j>=0;j--){ //要改成j>0,因为j从num开始,到1就够数儿了
bubble_sort(a,n);
b[j-1]=a[j-1]+=a[j];//要改成b[j-1]=a[j-2]+=a[j-1],因为j=num开始
n=n-1;
}
for(j=num;j>=0;j--){//改成j=num-1;j>0;j--。num就越界了,而b[0]还没有赋值,是随机的
total+=b[j];
}
//final=total-temp; 这句没有必要了
printf("%d",final);//改成printf("%d",total);
}
另:函数bubble_sort改成void型吧,无需返回值,实现中也没有……
以上意见仅供参考……
⑤ 合并果子 C语言编程
先排序,然后从小到大合并,可以用贪心证明这是最优解
⑥ 一堆果子,三个一分多2个,5个一分多1个,7个一分多3个,问这堆果子至少有多少个
由题意得3x+2=5y+1=7Z+3
解得x=13,y=6,Z=4,所以至少有3×13+2=31个。
⑦ 果实累累a b c c是怎么写
硕果累累。
⑧ C语言 合并果子问题
其他都写得不错但是算法出了点问题
正确的顺序应该是:排序-最小的两项相加-排序-最小的两项相加-排序-最小的两项相加-排序-最小的两项相加..........
而不是:排序-最小的两项相加-依次往后相加-........
给你一段我写的
#include<stdio.h>
#defineN100
intcount[N];
intmain()
{
intkind,i;
doublesum=0;
voidcompare(intm);
scanf("%d",&kind);
for(i=0;i<kind;i++)
scanf("%d",&count[i]);
for(i=0;i<kind-1;i++)
{
compare(kind);
sum+=count[0]+count[1];
count[0]=sum;
count[1]=count[kind-1]+1;
}
printf("%lf",sum);
return0;
}
voidcompare(intm)
{
inti,j;
for(i=0;i<m-1;i++)
for(j=i;j<m-i-1;j++)
if(count[j]>count[j+1])
{
count[j]=count[j]+count[j+1];
count[j+1]=count[j]-count[j+1];
count[j]=count[j]-count[j+1];
}
}
⑨ C程序编写求助
#include <iostream>
using namespace std;
void main()
{
int fruit=0;
for (int i=0;i<4;i++)
{
fruit=(fruit+1)*2;
}
cout<<"一共有"<<fruit<<"个水果"<<endl;
}
一共有30个水果