C语言一些较重要的例题Word文件下载.docx
- 文档编号:15288027
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:26
- 大小:39.22KB
C语言一些较重要的例题Word文件下载.docx
《C语言一些较重要的例题Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言一些较重要的例题Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。
一位聪明的宰相指着8×
8共64格的象棋盘说:
陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。
舍罕王让人扛来一袋麦子,他要兑现他的许诺。
国王能兑现他的许诺吗?
试编程计算舍罕王共要多少麦子赏赐他的宰相,这些麦子合多少立方米?
(已知1立方米麦子约1.42e8粒)
总粒数为:
sum=1+2+20+23+…+263
方法1:
#defineCONST1.42e8
math.h>
main()
{
intn;
doubleterm,sum=0;
/*累加求和变量赋初值*/
for(n=1;
n<
=64;
n++)
{
term=pow(2,n-1);
/*根据累加项的规律计算累加项*/
sum=sum+term;
/*作累加运算*/
sum=%e\n"
sum);
/*打印总麦粒数*/
volum=%e\n"
sum/CONST);
/*打印折合的总麦粒体积数*/
方法2:
#defineCONST1.42e8/*定义符号常量CONST值为1.42e8*/
doubleterm=1,sum=1;
/*累乘求积、累加求和变量赋初值*/
for(n=2;
n++)
term=term*2;
/*根据后项总是前项的2倍计算累加项*/
/*打印折合的总麦粒体积数*/
例6.5输出以下4*6的矩阵。
12346
246810
3691216
48121620
可以用循环的嵌套来处理此问题。
用外循环来输出一行数据。
用内循环来输出一列数据。
按矩阵的格式(每行5个数据)输出。
{inti,j,n=0;
for(i=1;
i<
=4;
i++)
for(j=1;
j<
=5;
j++,n++)
{if(n%5==0)printf(“\n”);
printf("
%d\t"
i*j);
}
\n"
);
}
例6.4在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
编程思路:
循环次数不确定,但最多循环1000次
在循环体中累计捐款总数
用if语句检查是否达到10万元
如果达到就不再继续执行循环,终止累加
计算人均捐款数
变量amount,用来存放捐款数
变量total,用来存放累加后的总捐款数
变量aver,用来存放人均捐款数
定义符号常量SUM代表100000
#defineSUM100000
{floatamount,aver,total;
inti;
for(i=1,total=0;
=1000;
{printf("
pleaseenteramount:
"
scanf("
%f"
&
amount);
total=total+amount;
if(total>
=SUM)break;
aver=total/i;
printf(“num=%d\naver=%10.2f\n”,i,aver);
例6.6要求输出100~200之间的不能被3整除的数。
对100到200之间的每一个整数进行检查
如果不能被3整除,输出,否则不输出
无论是否输出此数,都要接着检查下一个数(直到200为止)。
循环体如下:
for(n=100;
n<
=200;
n++)
{if(n%3==0)
continue;
%d"
n);
例6.7用公式求的近似值,直到发现某一项的绝对值小于10-6为止(该项不累计加)。
求π近似值的方法很多,本题是一种
每项的分子都是1
后一项的分母是前一项的分母加2
第1项的符号为正,从第2项起,每一项的符号与前一项的符号相反。
数据分析
累加和存入pi
累加项为t
分母为n
符号为s
{intsign=1;
doublepi=0,n=1,term=1;
while(fabs(term)>
=1e-6)
{pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
pi=pi*4;
pi=%10.8f\n"
pi);
例6.8求费波那西(Fibonacci)数列的前40个数。
这个数列有如下特点:
第1、2两个数为1、1。
从第3个数开始,该数是其前面两个数之和。
即:
{intf1=1,f2=1,f3;
%12d\n%12d\n"
f1,f2);
for(i=1;
i<
=38;
i++)
{f3=f1+f2;
%12d\n"
f3);
f1=f2;
f2=f3;
改进后的代码:
{intf1=1,f2=1;
=20;
%12d%12d"
if(i%2==0)printf("
f1=f1+f2;
f2=f2+f1;
马克思手稿中有一道趣味数学题:
有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?
解方程组
穷举法
intx,y,z;
Man\tWomen\tChildern\n"
for(x=0;
x<
=30;
x++)
for(y=0;
y<
y++)
for(z=0;
z<
z++)
if(x+y+z==30&
&
3*x+2*y+z==50)
%3d\t%5d\t%8d\n"
x,y,z);
改进型:
=16;
=25;
z=30–x-y;
if(3*x+2*y+z==50)
例6.9输入一个大于3的整数n,判定它是否素数(prime,又称质数)。
让n被i整除(i的值从2变到n-1)
如果n能被2~(n-1)之中任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环
注意:
此时i的值必然小于n
{intn,i;
printf(“n=?
%d"
n);
for(i=2;
=n-1;
i++)
if(n%i==0)break;
if(i<
n)printf("
%disnot\n"
elseprintf("
%dis\n"
例6.10求100~200间的全部素数。
使用例6.9的算法
在例6.9程序中只要增加一个外循环,先后对100~200间的全部整数一一进行判定即可
……
for(n=101;
n=n+2)
{k=sqrt(n);
=k;
if(n%i==0)break;
if(i>
=k+1)
m=m+1;
if(m%10==0)printf(“\n”);
例7.1对10个数组元素依次赋值为0,1,
2,3,4,5,6,7,8,9,要求按逆序输出。
定义一个长度为10的数组,数组定义为整型
要赋的值是从0到9,可以用循环来赋值
用循环按下标从大到小输出这10个元素
{inti,a[10];
for(i=0;
=9;
a[i]=i;
for(i=9;
i>
=0;
i--)
a[i]);
例7.2用数组处理求Fibonacci数列问题
例6.8中用简单变量处理的,缺点不能在内存中保存这些数。
假如想直接输出数列中第25个数,是很困难的。
如果用数组处理,每一个数组元素代表数列中的一个数,依次求出各数并存放在相应的数组元素中
{inti;
intf[20]={1,1};
for(i=2;
20;
f[i]=f[i-2]+f[i-1];
for(i=0;
{if(i%5==0)printf(“\n”);
printf(“%12d”,f[i]);
例7.3有10个地区的面积,要求对它们按由小到大的顺序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 一些 重要 例题
![提示](https://static.bdocx.com/images/bang_tan.gif)