第二章 程序的灵魂—算法 (答案)
来源:互联网 发布:全时网络视频会议 编辑:程序博客网 时间:2024/05/21 22:34
一个程序应包括:
l 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。
l 对操作的描述。即操作步骤,也就是算法(algorithm)。
数据结构+算法=程序
教材认为:
程序=算法+数据结构+程序设计方法+语言工具和环境
【例2.1】求1+2+3+4+5。
#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int i,n,sum=0;//此处为0printf("请输入n:\n");scanf("%d",&n);for(i=1;i<=n;i++){sum += i;}printf("1+2+3+...+n的和为:%d\n",sum);return 0;}
求1*2*3*4*5。
#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int i,n,sum=1;//此处为1printf("请输入n:\n");scanf("%d",&n);for(i=1;i<=n;i++){sum *= i;}printf("1*2*3*...*n的积为:%d\n",sum);return 0;}
【例2.2】有50个学生,要求将他们之中成绩在80分以上者打印出来。
#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int sz[4],i;for(i=1;i<=3;i++){printf("enter student %d is score:",i);scanf("%d",&sz[i]);}for(i=1;i<=3;i++){if(sz[i]>=80)printf("student %d score:%d\n",i,sz[i]);}return 0; }
【例2.3】判定2000 — 2500年中的每一年是否闰年,将结果输出。
润年的条件:
1) 能被4整除,但不能被100整除的年份;
2) 能被100整除,又能被400整除的年份;
#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){printf("打印出2000-2500年间的闰年\n"); for(int year=2000;year<=2500;year++){ if(year%4==0 && year%100!=0 || year%400==0) {printf("闰年: %d\t",year); } }return 0; }
【例2.4】求1-1/2+1/3-1/4+…+1/99-1/100
算法可表示如下:
S1: sigh=1
S2: sum=1
S3: deno=2
S4: sigh=(-1)×sigh
S5: term= sigh×(1/deno )
S6: term=sum+term
S7: deno= deno +1
S8:若deno≤100,返回S4;否则,结束。
#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int sign=1;float deno=2,sum=1,term;/*while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}*/for(deno=2;deno<=100;deno++){sign=-sign;term=sign/deno;sum=sum+term;}printf("1-1/2+1/3-1/4+…+1/99-1/100 = %f\n",sum); }
【例2.5】对一个大于或等于3的正整数,判断它是不是一个素数。
算法可表示如下:
S1: 输入n的值
S2: i=2
S3: n被i除,得余数r
S4:如果r=0,表示n能被i整除,则打印n“不是素数”,算法结束;否则执行S5
S5: i+1→i
S6:如果i≤n-1,返回S3;否则打印n“是素数”;然后算法结束。
改进:
S6:如果i≤,返回S3;否则打印n“是素数”;然后算法结束。
//我草出题的 MLGBD ,这个是哥德巴赫猜想的一部分吧,有木有。。。。//35 =5*7 是素数不? 尼玛给的公式只能求单双数啊啊啊。。。。//尼玛是陈景润啊啊啊啊//考虑精度毋须太大,费马数即可,留待有空再做。#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int n;printf("输入一个任意自然数 n \n");scanf("%d",&n);if(n<3)return 0;else{if (n%2==0){printf("%d 不是素数 \n",n);}else{printf("%d 是素数 \n",n);}}}
2.3 算法的特性
l 有穷性:一个算法应包含有限的操作步骤而不能是无限的。
l 确定性:算法中每一个步骤应当是确定的,而不能应当是含糊的、模棱两可的。
l 有零个或多个输入。
l 有一个或多个输出。
l 有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。
对于程序设计人员,必须会设计算法,并根据算法写出程序。
【例2.20】求1×2×3×4×5用C语言表示。
#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int i=2,t=1;while(i<=5){t*=i;i=i+1;}printf("%d",t);}
【例2.21】求级数的值。
#include "stdafx.h"main(){int sigh=1;float deno=2.0,sum=1.0,term;while(deno<=100){ sigh= -sigh; term= sigh/ deno;sum=sum+term;deno=deno+1;} printf(“%f”,sum);}
2.5 结构化程序设计方法
l 自顶向下;
l 逐步细化;
l 模块化设计;
l 结构化编码。
- 第二章 程序的灵魂—算法 (答案)
- 第二章:算法-----程序的灵魂
- 第二章算法——程序的灵魂
- C程序设计笔记——第二章 算法-程序的灵魂
- 程序的灵魂--算法
- 程序的灵魂 ---算法
- C语言之第二课:程序的灵魂——算法
- 算法---程序的灵魂,没错就是灵魂!
- 第2章 程序的灵魂-算法
- (谭版)2 程序的灵魂—算法
- 程序的灵魂——算法
- 程序的灵魂——算法
- chapter2 算法——程序的灵魂
- 程序的灵魂——算法
- 程序的灵魂——算法
- 算法——程序的灵魂
- 程序的灵魂--算法(二)
- 程序的灵魂----算法(一)
- 使用 TabActivity 实现滑动翻页(带动画)和标签置底
- 50个c/c++源代码网站
- C++ Primer Plus学习:第十一章 使用类(1)
- AOP execution
- sql游标
- 第二章 程序的灵魂—算法 (答案)
- linux渗透与安全第三节 - 提权
- Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记
- C# Listview控件使用实例
- 终于看到排名了,留个记号
- 大小端
- iphone 文档结构
- hlsl 里saturate 函数对应 glsl 怎么实现
- MYSQL:使用慢查询日志定位效率较低的SQL语句