计算机程序设计员程序设计实例Word格式.docx
- 文档编号:19350289
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:10
- 大小:210.50KB
计算机程序设计员程序设计实例Word格式.docx
《计算机程序设计员程序设计实例Word格式.docx》由会员分享,可在线阅读,更多相关《计算机程序设计员程序设计实例Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
printf("
%5d\n%5d\n"
u,v);
k=3;
do{
if(k%2==0)
w=v-u;
else
w=v+u;
%12d\n"
w);
u=v;
v=w;
k=k+1;
}while(k<
=50);
}
解2:
该问题生成一项时,可以不用分支判断,而采用标志单元的方法,这种方法在程序设计中是经常使用的。
用这种方法PAD图如图4.31。
intflag;
flag=-1;
do}
w=v+flag*u;
flag=-flag;
%5d\n"
【例4.13】编程序,输入两个正整数u、v,采用欧几里德辗转相除算法求它们的最大公因数并输出。
解:
欧几里德辗转相除算法求u、v最大公因数的计算过程是:
u%v→R1
v%R1→R2
R1%R2→R3
R2%R3→R4
…………
Rn-1%Rn→Rn+1=0
到此余数Rn+1为"
0"
,计算过程结束。
Rn为正整数u、v的最大公因数。
此计算过程用PAD描述成图4.32。
编出程序如下。
intu,v,r;
printf("
pleaceinputu、v:
"
);
scanf("
%d%d"
&
u,%v);
r=v;
while(r!
=0){
r=u%v;
u=v;
v=r;
}
gcd(u,v)=%5d\n"
u);
【例4.14】编程序,输入正整数N,计算r1!
+r2!
+...+rn!
并输出。
其中,N=r1r2...rn。
该程序是一个计算若干数据项之和的程序。
本章已经编写过多个求和的程序,现在总结一下求和程序模式。
所有计算和的程序都使用一个和单元,有类似图4.33的模式。
这里用后判断条件的循环,当然也可以采用先判断条件的循环。
其中:
S是和单元;
开始进入循环之前和单元S必须清"
;
在循环体内,每循环一次给和单元加上一项;
最后循环结束,和单元中的值即为所求之和。
具体落实到本题,求和算法如图4.34的PAD所示。
下边求精图4.32中的计算r!
。
阶乘是一个连乘积。
r!
=1*2*3*…*r
所有计算连乘积的程序都使用一个积单元,有类似图4.35的程序模式。
这里用后判断条件的
循环,当然也可以采用先判断条件的循环。
P是积单元;
开始进入循环之前积单元P必须置"
1"
在循环体内,每循环一次向积单元乘入一项;
最后循环结束,积单元中的值即为所求之积。
具体落实到本问题计算r!
,得如图4.36的PAD。
综合图4.34和图4.36得图4.37的最终算法PAD。
程序如下:
intN,S,P,u,r;
pleaceinputN:
%d"
N);
S=0;
while(N!
r=N%10;
N=N/10;
P=1;
u=1;
while(u<
=r){
P=P*u;
u=u+1;
S=S+P;
r1!
=%5d\n"
S);
【例4.15】我国古代有一道著名难题"
百钱百鸡"
问题:
"
鸡翁一,值钱五;
鸡母一,值钱三;
鸡雏三,值钱一。
百钱买百鸡,问鸡翁、母、雏各几何。
编程序,解该题。
这是一个著名的问题,也是一类典型的问题。
设买x只公鸡,买y只母鸡,买z只鸡雏,根据条件可以列出方程如下:
5x+3y+z/3=100/*百钱*/
x+y+z=100/*百鸡*/
只能列出这两个方程,原题目变成求该方程组的整数解问题。
三个未知数,两个方程,这是一个不定方程组。
解该类问
题的思路是枚举x、y、z的所有可能,选出满足条件的哪些x、y、z组合。
按这种思想,得到PAD如图4.38。
intx,y,z;
for(x=1;
x<
=20;
x++)
for(y=1;
y<
=33;
y++)
for(z=3;
z<
=99;
z=z+3)
if(x+y+z==100&
&
5*x+3*y+z/3==100)
result=%5d%5d%5d\n"
x,y,z);
这是一个三重循环程序。
可以省掉最内层第三重循环,用x,y直接计算z。
y<
y++){
z=100-x-y;
//求鸡雏数z,百鸡
if(5*x+3*y+z/3==100&
z%3==0)//百钱
【例4.16】编程序,用循环语句控制打印图4.39的字符图形。
在本题目以下的分析中,以白方块"
□"
表示空格字符。
分析该图形一共11行,上下相对于第6行对称。
应该先打印上半部分第一到第六行,它们的规律是一样的;
再打印下半部分第七到第十一行,它们的规律也是一样的。
得图4.40的PAD。
打印前六行,应该一行行的打印,用一个循环控制,得图4.41的PAD。
打印第x行,每行都分三段,应该一段段的打印,得图4.42的PAD。
打印第x行前段。
首先打印字母从x到'
I'
,然后再打印字母从'
A'
到x-1。
每个字母的形式是:
一个空格,加字母本身。
得图4.43的PAD。
打印第x行中段。
分析这段特性,应该首先打印(5-(x-'
))*2个空格;
再打印2*(x-'
)+1组"
□x"
再打印(5-(x-'
))*2个空格。
得图4.44的PAD。
在图4.44的PAD中,每个框都是一个循环,不再求精。
打印第x行后段。
首先打印字母从x+1到'
到x,最后换行。
一个空格,加字母本身。
得图4.45的PAD。
至此,找到了打印前六行的算法。
下边求精打印后五行。
打印后五行,也应该一行行的打印,用一个循环控制,得图4.46的PAD。
打印后五行的第x行与打印前六行的第x行的算法是一样的,可以完全使用上述算法。
至此,找到了打印图4.39字符图形的全部算法,综合上述图4.40到4.46得图4.47。
charx,y;
inti;
for(x='
;
x<
='
F'
x++){//前六行
for(y=x;
y++)printf("
□%c"
y);
//打印第x行前段
for(y='
x;
y++)printf("
for(i=1;
i<
=(5-(x-'
))*2);
i++)printf("
//打印第x行中段
=2*(x-'
)+1;
i++)printf("
x);
for(y=x+1;
//打印第x行后段
=x;
\n"
//回车换行
E'
x>
x--){//后五行
=x-1;
y++)printf("
在本例中,使用字符类型变量做循环控制变量,并且在字符类型数据上进行了若干算术运算,这是允许的。
前边第二章已经介绍过,在C中把字符类型作为整数类型看待,其整数值就是与字符相对应的代码值(ASCII码值)。
可施与整数类型上的一切运算都可在字符类型上进行。
事实上,在C中字符类型就是整数类型。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 程序设计员 程序设计 实例
![提示](https://static.bdocx.com/images/bang_tan.gif)