北京航空航天大学C语言e2第五讲 第一阶段综合训练.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
case 4: price=3.5;
default: price=0.0;
}
price=?
表达式的值=常量表达式 1 的值
语句段1
表达式的值=常量表达式 2 的值
表
语句段2
达
式 表达式的值=常量表达式 n 的值
语句段n
其他
语句段n+1
3、在switch的某些语句段中使用 break
例 输入10个字符,分别统计出其中空 格或回车、数字和其他字符的个数。
switch语句
处理多分支选择问题,3种情况:
1、在switch语句的每个语句段中都使用break 语句
switch(表达式) { case 常量表达式1:语句段1 break; case 常量表达式2:语句段2 break;
....…
case 常量表达式n:语句段n break;
default :
for (k=1;k<=8-i;k++) printf(" "); //输出空格
for (j=1;j<=2*i-1;j++) printf("* "); //输出*
printf("\n "); }
}
理解三重循环
for (i=1;i<=3;i++) for (j=1;j<=4;j++) for (k=1;k<=5;k++) { … }
第三层:求阶乘,k循环
itemk=itemk*k; itemj=itemj*itemk;
1*2*3*……j
}
sum=sum+itemj;
}
C程序设计
习题讲解
第六讲 数组
练习6.11 用迭代法求 a 。求平方根的迭代公式
为
xn 1
1 2
( xn
a) xn
,要求前后两次求出的x的差的
绝对值小于10-5。
练习6.13 用二分法求下面方程在(-10,10) 之间的根。2x3-4x2+3x-6=0
解题分析:首先要求理解什么叫二分法?
▼ x2,f(x2)
x=(x1+x2)/2
x
x1,f(x1) ▲
▲
x,f(x)
C程序设计
第六讲 数组
习题讲解
练习6.13 用二分法求下面方程在(-10,10) 之间的根。2x3-4x2+3x-6=0
printf("men=%4dwomen=%4dchild=%4d\n",men,
women, child);
}
目的:
第三次 上机实验
熟练掌握 for 、 while 、 do-while语句的使用和
break,continue的使用。
内容:
基本:Page 129: 6.5, 6.7, 6.8, 6.14
思考:求1! + 1!*2! + …… + 1!*2!*……*100!
sum=0
for (i=1;i<=n;i++)
第一层:求和, i循环 {
x1+x2+…+xi+……xn
itemj=1; for (j=1;j<=i;j++)
第二层:求积,j循环 y1*y2*y3*……yi
{ itemk=1; for (k=1;k<=j;k++)
{
for (k=1;k<=8-i;k++) 输出空格;
for (j=1;j<=(2*i-1);j++)
输出*;
*********** ************* ***************
15列
}
void main() {
int i=1,j,k; for (i=1;i<9;i++) { //8层金字塔
...
9×1=9
9×2=18
9×3=27 ... 9×9=81
方法一:
for (men = 0; men <= 45; men++) for (women = 0; women <= 45; women++) for (child = 0; child <= 45; child++)
if ((men+women+child==45) && (men*3+women*2+child*0.5==45)) printf("men=%-4dwomen=%-4dchild=%-4d\n",men,women,
如果f(x)*f(x1)<0说明 [x1,x] 有根; 4,调整[x1,x2]反复运算,直到fabs(f(x))<1.0e-6为止.
C程序设计
float x,y,x1,x2,y1;
第六讲 数组
x1=-10; x2=10; do {
x=(x1+x2)/2.0f; y=2*x*x*x-4*x*x+3*x-6; y1=2*x1*x1*x1-4*x1*x1+3*x1-6; if (y1*y>0) x1=x; else x2=x; } while (fabs(y)>1.0E-6);
child);
for (men = 0; men <= 15; men++) for (women = 0; women <= 22; women++)
方法二:
{
child = 45 – women – men;
if (men * 3 + women * 2 + child * 0.5 == 45)
printf("The root is %5.2f\n",x);
课堂练习1, 打印乘法九九表; 课堂练习2, 古典算术问题:搬砖头。
某地需要搬运砖块,已知男人一人搬3块, 女人一人搬2块,小孩两人搬一块。 问用45人正好搬45块砖,有多少种搬法?
1×1=1 2×1=2
2×2=4
要求:清晰写出思路或 关键程序段。
语句段n+1 break;
}
switch (choice) {
分段计价问题: case 1: price=2.0; break;
case 2: price=2.5; break; case 3: price=3.0; break; case 4: price=3.5; break; default: price=0.0; break;
switch (表达式)
{
case 常量表达式1:语句段1
case 常量表达式2:语句段2
....…
case 常量表达式n:语句段n
default :
语句段n+1
}
switch (choice) {
case 1: price=2.0;
case 2: price=2.5;
case 3: price=3.0;
{
快速代码整理方法:
doube a,x1,x2; 选中目标,再按
scanf("%lf",&a); x1=1.0;
Alt+F8
do
{
x2=x1;
x1=1.0/2.0*(x1+a/x1);
}
while (fabs(x1-x2)>1.0e-5);
printf("%f\n",x1);
}
C程序设计
习题讲解
第六讲 数组
解题步骤: 1, 已知 -10x1, 10x2 ,[x1,x2]有根, 2,二分法:x=(x1+x2)/2,
将求解域分为两个,[x1,x]和[x,x2] 3,关键点:寻找根在[x1,x]还是在[x,x2]区间?
如果f(x)*f(x1)>0 说明[x1,x] f()的值符号相同,即不 过0, 无根,并且[x,x2] 有根;
int blank, dicghit,=i, gotehtecrh; ar(); char ch; switch (ch) blank = digi{t = other = 0; printf("Enter 10 chcaarsaecte' r's:: "); for (i = 1; i <= 10; ic+a+s) e//通'\n常':用bi,jl,akn作k循+环+控; b制re变a量k; { //begin of for case '0' : case '1' : case '2' : case '3' :
分析:
例:打印金字塔图形。
➢ 行的控制i: 1~8;
➢ 列的控制:
1) ‘*’的个数j与当前行的关系:
*
j=2*i-1;
***
2)‘*’前面的空格k与行的关系: 开始时,第一行有7个空格,
*****
*******
8行
***பைடு நூலகம்*****
每多一行,少一个空格,k=8-i。 for (i=1;i<9;i++)
提高: 1, 要将一张 100 元的大钞票,换成等值的 10元、
5 元、 2 元、1 元一张的小钞票。要求每次换成 40 张 小钞票,每种至少一种。编程输出所有可能的换法。
2, 阶段总结报告: 归纳所学的内容,总结习题完 成情况 ,讲述学习中遇到的难点及今后的教与学中应
注意的问题。
要求:与第三次上机相同.
分析: 设统计变量 blank , digital , other
情况 一:‘ ’ , ‘\n’ blank++; 情况二: ‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’ digital++; 其它: other ++;
int main(void)
{ //begin of main()
用else-if表示: }
if (choice==1) price=2.0;
else if (choice==2) price=2.5;
else if (choice==3) price=3.0;
else if (choice==4) price=3.5;
else price=0;
2、在switch中不使用break
case '4' :case '5' : case '6' : case '7' : case '8' : case '9' : Enter 10 charadcigteitrs+:+R; beoreldak1;23? default: other ++; } //end o}bf lfaonr k=1, digit=3, other=6 printf("blank=%d, digit=%d, other=%d\n", blank, digit, other); return 0; } // end of main()
解题步骤:首先要求理解什么叫迭代法?
1)给x 一个大于0的初值;
2)用迭代公式求x1的值,
1 x1 2 ( x
a);
x
3)如果|x1-x|>1e-5,更新x, 即x=x1, 循环执行
2) ~ 3),否则执行4);
4)输出x。
C程序设计
第六讲 数组
#include "math.h"
void main()