(33)--5.9 常见问题举例(三)C语言程序设计基础.ppt
-
资源ID:96320648
资源大小:1.22MB
全文页数:19页
- 资源格式: PPT
下载积分:10金币
快捷下载
![游客一键下载](/images/hot.gif)
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
(33)--5.9 常见问题举例(三)C语言程序设计基础.ppt
5.9 5.9 常见问题举例(三)常见问题举例(三)5.9.1 穷举问题穷举问题C语言常见问题举例穷举问题穷举问题 什么是穷举问题对问题的所有对问题的所有可能解一一可能解一一测试测试,直到找到解,直到找到解或将全部或将全部可能解可能解都都测试测试过未找到的相关问题过未找到的相关问题如:求水仙花数问题;搬砖问题;百元买百鸡问题;找满足条件的数。C语言常见问题举例穷举问题穷举问题 怎么求解穷举问题用循环找出问题中所有可能解变化的范围;找出最终解需满足的条件;在在问题所有可所有可能解中一个一能解中一个一个找个找满足足问题条件的解条件的解案例1:找出三位整数中所有的水仙花数;案例2:找出1-1000之间满足条件的数。循环条件循环体内语句C语言常见问题举例穷举问题找出问题中所有可能解变化的范围;找出最终解需满足的条件;案例1:找出三位整数中所有的水仙花数分析:所有的三位整数,即100999;三位整数每位数字的立方和等于它本身;个位=n%10十位=n/10%10;百位=n/100 for(n=100;n=999;n+)i=n%10;j=n/10%10;k=n/100;if(i*i*i+j*j*j+k*k*k)=n)printf(%d是水仙花数n,n);案例1:找出三位整数中所有的水仙花数(用单层循环求解)求出n每位上的数字#include int main()int n,i,j,k;问题最最终解解满足的足的条件条件可能解的范围return 0;for(i=1;i=9;i+)for(j=0;j=9;j+)for(k=0;k=9;k+)if(i*i*i+j*j*j+k*k*k)=i*100+j*10+k)printf(%d是水仙花数n,i*100+j*10+k);案例1:找出三位整数中所有的水仙花数(用三层循环求解)#include int main()int i,j,k;问题最最终解解满足的足的条件条件组成所有的三位整数return 0;分别表示组成三位整数百位、十位、个位上的数字C语言常见问题举例穷举问题案例2:找出1-1000之间能被7或11整除,但不能同时被7和11整除的所有整数分析:可能解范围1-1000;能被7或11整除,但不能同时被7和11整除;n%7=0|n%11=0n%7!=0&n%11!=0找出问题中所有可能解变化的范围;找出最终解需满足的条件;循环条件 for(n=1;n1000;n+)if(n%7=0)|(n%11=0)&(n%77!=0)printf(%5d,n);k+;if(k%10=0)printf(“n”);/*m每行输出10个数*/#include int main()int n,k=0;/*k统计满足条件的整数个数*/问题最最终解解满足的足的条件条件可能解的范围return 0;案例2:找出1-1000之间能被7或11整除,但不能同时被7和11整除的所有整数为什么用什么用这个条件?个条件?5.9 5.9 常见问题举例(三)常见问题举例(三)5.9.2 图形问题图形问题C语言常见问题举例图形问题图形问题 什么是图形问题由字符、特殊符号或数字组成的各种形状的图形问题如:输出由指定字符组成的正三角形或倒三角形;输出由数字组成的砖石形;输出由指定符号组成的菱形等各种形状C语言常见问题举例图形问题图形问题 怎么求解图形问题用循环确定输出图形的行数和每行上的列数;确定每行第一个字符前输出的空格数;找出每行上字符变化的规律。输出多行多出多行多列相同或不列相同或不同符号同符号案例3:输出一个正三角形;案例4:输出一个菱形。外外层循循环条件条件内内层循循环条件条件内内层循循环条件,即先条件,即先输出每行上的空格数,出每行上的空格数,再再输出每行上的字符出每行上的字符C语言常见问题举例图形问题案例3:输出一个如图所示的正三角形 11 2 31 2 3 4 51 2 3 4 5 6 71 2 3 4 5 6 7 8 9图形输出常用模板for(i=1;i=行数;i+)for(j=1;j=第i行前导空格数;j+)printf();for(k=1;k=第i行字符数;k+)printf(第i行、第j列字符);printf(n);12345i行号行号43210j=5-i13579k=2*i-1与行号与行号有关有关每行每行输出完要有出完要有一个一个换行,接着行,接着输出下一行出下一行案例3:输出一个如图所示的正三角形 11 2 31 2 3 4 51 2 3 4 5 6 71 2 3 4 5 6 7 8 9#include int main()int i,j,k;for(i=1;i=5;i+)for(j=1;j=5-i;j+)printf();for(k=1;k=2*i-1;k+)printf(%d,k);printf(n);return 0;12345行号行号43210j=5-i13579k=2*i-15不唯一,可以是其他数字10-iC语言常见问题举例图形问题案例4:输出如图所示的菱形*图形输出常用模板for(i=1;i=行数;i+)for(j=1;j=第i行前导空格数;j+)printf();for(k=1;k=第i行字符数;k+)printf(第i行、第j列字符);printf(n);1234567行号行号43212j=5-i13575k=2*i-13431案例4:输出如图所示的菱形*上半部分输出语句for(i=1;i=4;i+)for(j=1;j=5-i;j+)printf();for(k=1;k=2*i-1;k+)printf(*);printf(n);1234567行号行号43212j=5-i13575k=2*i-13431C语言常见问题举例图形问题案例4:输出如图所示的菱形*下半部分输出语句for(i=1;i=3;i+)for(j=1;j=i+1;j+)printf();for(k=1;k=7-2*i;k+)printf(*);printf(n);1234567行号行号43212j=i+113575k=7-2*i3431案例4:输出如图所示的菱形*常见问题举例穷举问题找出三位整数中所有的水仙花数找出满足条件的数找出问题中所有可能解变化的范围,找出最终解需满足的条件图形问题输出正三角形输出菱形确定输出图形的行数和每行上的列数,确定每行第一个字符前输出的空格数,找出每行上字符变化的规律。