教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 资格考试 >

精通C程序设计第四章基本程序设计技术_07[1].1_

来源:网络收集 时间:2026-09-04
导读: 第四章基本程序设计技术 本章内容提要:4.1 计数(统计)问题 4.2 求最大值与最小值4.3 递推迭代 4.4 字符图形4.5 搜索(穷举)求解 4.6 数论有关问题 作业Ch4-1 4.1 统计(计数)问题方法:计数变量c的初值为0, 每输入一个数据,进行 必要判断后,若输入的数据满

第四章基本程序设计技术

本章内容提要:4.1 计数(统计)问题

4.2 求最大值与最小值4.3 递推迭代

4.4 字符图形4.5 搜索(穷举)求解 4.6 数论有关问题 作业Ch4-1

4.1 统计(计数)问题方法:计数变量c的初值为0, 每输入一个数据,进行 必要判断后,若输入的数据满足统计条件,则计数 变量c自加1,这样当对所有输入进行判断后,计数 变量c的值就是统计的结果。

例1(教材例4.2):输入若干非0实数,直到输入0时停 止,要求输入的实数最多不超过20个,统计其中正 数的个数,负数的个数。 分析:设三个计数变量: n-统计输入的数据总个数(为什么有必要?) posn-统计正数的数目 negn-统计负数的数目Ch4-2

4.1 统计(计数)问题(续1)#include "stdio.h" void main() { int n,posn,negn;double a; n=posn=0; printf("Input real numbers:\n"); while(1) /*典型循环结构(一)*/ { scanf("%lf",&a); if(!a) break; if(a>0) posn++; n++; if(n>=20) break; } negn=n posn; printf("posn=%d,negn=%d\n",posn,negn); }Ch4-3

4.1 统计(计数)问题(续2)典型循环结构(一) 必需break永真条件真

典型循环结构(二) 无需break预输入一个数据是

输入一个数据 到停止吗?否 是

到停止吗?否

统计或其它处理 再输入一个数据

统计或其它处理

Ch4-4

4.1 统计(计数)问题(续3)用典型循环结构(二)改写例1程序 #include "stdio.h" void main() { int n,posn,negn;double a; n=posn=0; printf("Input real numbers:\n"); scanf("%lf",&x); while(a!=0&&n<20) { if(a>0) posn++; n++; if (n<20) scanf(“%lf”,&a); } negn=n-posn; printf(“posn=%d,negn=%d\n”,posn,negn); }Ch4-5

4.1 统计(计数)问题(续4完)例2(教材例4.1):输入一行字符,统计其中的英文字 母个数。提示:即输入若干字符,直到输入'\n'时停 止输入#include “stdio.h” void main() { char ch; int n=0; printf(“Input a string:\n”); while(1) { ch=getchar();if(ch=='\n') break; if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') n++; } printf(“Number of letters is %d.\n”,n); }Ch4-6

4.2 求最大值与最小值方法:设置最大(小)值变量max(min), 其初值为其数 据类型能够表示的最小(大)值,或者一个比待选数据 集合中所有数据都小(大)的值,或者待选数据集合中 的任一个数据。

将待选数据集合中的每一个数据与max(min)比 较, 若大于max(小于min),则该数据存入max(min), 直到所有数据比较结束。 例1(教材例4.3):输入若干long型非0整数,直到输 入0时停止,求输入的非0整数中的最大值。

Ch4-7

4.2 求最大值与最小值(续1)源程序1:/ 预置变量max初值为 2147483648 /#include "stdio.h" void main() { long a,max= 2147483648; printf("Input long integers until input 0:\n"); while(1) /*典型循环结构(一)*/ { scanf("%ld",&a);if(!a) break; if

(a>max) max=a; } printf("max=%ld\n",max); }Ch4-8

4.2 求最大值与最小值(续2完)源程序2:/ 预置变量max初值为第一个输入数据 /#include "stdio.h" void main() { long a,max; printf("Input long integers until input 0:\n"); scanf("%ld",&max); if(!max) { printf("No input.\n");return; } while(1) { scanf("%ld",&a);if(!a) break; if(a>max) max=a; } printf("max=%ld\n",max); }Ch4-9

4.3 递推迭代4.3.1 数列求和/求积的累加/累乘法

记数列前n项为a0, a1, … , an 1。1. 累加法求数列前n项和

数学算式: s

ai 0

n 1

i

程序算法:s=0; for(i=0;i<n;i++) s+=ai; 2. 累乘法求数列前n项积数学算式: p

i 0

n 1

ai

程序算法:p=1; for(i=0;i<n;i++) p =ai;Ch4-10

4.3 递推迭代(续1)4.3.2 计算数列通项的算法 1. 直接用通项公式计算 局限性: (1) 通项公式可能不存在; (2) 通项公式比较复杂时,算法效率低。 2. 用递推迭代法计算通项a0 (已知) i=0 i>0

数学算式:ai=f(i)·i 1 a

程序算法:a=a0; /*初始化*/ a=f(i) a; /* i从1循环到n 1 */ 迭代Ch4-11

4.3 递推迭代(续2)优越性: 当通项ai含有与项号i有关的 阶(累)乘或者 指数运算时,源代码简捷,效率高。 4.3.2 综合举例 例1(教材例4.5)利用下面的公式计算 的近似值,要 求计算到最后一项的绝对值小于10 6时停止计算。 4 1 1 3 1 5 1 7

算法设计:正负交叉项的实现方法一般是采用一个 符号变量s,初值为1,每循环一次,执行语句 s s;显然这样s变量的值就会产生正负交叉的序列 1, 1, 1, 1, 1, 1, …。Ch4-12

4.3 递推迭代(续3)通项的绝对值直接由项号计算(无需迭代法),即 1 ai i=1, 3, 5, 7, …i

#include "stdio.h" #include "math.h" /*为什么需要这一行?*/ void main() { double a,pi;int i,s; a=1.0;pi=0;s=1;i=1; while(fabs(a)>1e 6) /* 注意计算精度控制方法 */ { pi+=s a; i+=2; a=1.0/i; s= s; } pi=pi 4;printf("pi=%f\n",pi); } Ch4-13

4.3 递推迭代(续4)例2(教材例4.6)计算下面的级数,直到最后一项的绝 对值小于10-6时停止计算,输出计算结果。s ex

1

x 1!

x

2

x

3

x

4

2!

3!

4!

算法设计:适合迭代法,不适合直接计算通项 1 ak=x k a k 1

k=0

k=1, 2, 3, …

通项迭代表达式: a =x/k; //k从1起循环Ch4-14

4.3 递推迭代(续5)#include "stdio.h" #include "math.h" void main() { double x,s,a;int k; printf("Input x=");scanf("%lf",&x); a=1;s=0;k=0; while(fabs(a)>1e 6) { s+=a; k++; a =x/k; } printf("s=%g\n",s); } 程序运行情况: 问题与思考: Input x=0.5 k初值为1,程序怎样修改? s=1.64872Ch4-15

4.3 递推迭代(续6)例3(教材例4.7) 输入x的值,用下面的公式计算cos x。 要求计算到最后一项绝对值小于10-6时停止计算,输 出计算结果。cos x 1

x2

x

4

x

6

x

8

x

10

2!

4!

6!

8!

10 !

算法设计:适合迭代法 1 k=0 ak=x2

k ( k 1)

ak 2

k=2, 4, 6, …

通项迭代表达式: a =x x/k/(k 1); //k从2起加2循环Ch4-16

4.3 递推迭代(续7)#include "stdio.h" #include "math.h" void main() { double x,s,a;int k; printf("Input x=");scanf("%lf",&x); a=1;s=0;k=0; while(fabs(a)>1e 6) { s+=a; k+=2; a = x x/k/(k 1); } printf("s=%g\n",s); } 程序的运行情况: Input x=1.047 s=0.500172Ch4-17

4.3 递推迭代(续8)例4(教材例4.8) 输入n, m …… 此处隐藏:2697字,全部文档内容请下载后查看。喜欢就下载吧 ……

精通C程序设计第四章基本程序设计技术_07[1].1_.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/95875.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)