资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2024/7/301第第第第4 4 4 4章章章章 习题习题习题习题 典型案例分析典型案例分析典型案例分析典型案例分析2024/7/303习题习题习题习题4.24.2 4.2 4.2 选择题选择题选择题选择题(1 1)在下面的条件语句中,只有一个在功能上)在下面的条件语句中,只有一个在功能上)在下面的条件语句中,只有一个在功能上)在下面的条件语句中,只有一个在功能上与其他三个语句不等价,这个不等价的语句是与其他三个语句不等价,这个不等价的语句是与其他三个语句不等价,这个不等价的语句是与其他三个语句不等价,这个不等价的语句是 A A)if (a) s1; else s2;if (a) s1; else s2; B B)if (!a) s2; else s1;if (!a) s2; else s1; C C)if (a != 0) s1; else s2;if (a != 0) s1; else s2; D D)if (a = 0) s1; else s2;if (a = 0) s1; else s2;2024/7/304习题习题习题习题4.24.2 4.2 4.2 (2 2)设有声明语句)设有声明语句)设有声明语句)设有声明语句intint a=1,b=0; a=1,b=0;,则执行以,则执行以,则执行以,则执行以下语句后输出结果为下语句后输出结果为下语句后输出结果为下语句后输出结果为 。 switch (a)switch (a) case 1: case 1: switch (b) switch (b) case 0: case 0: printfprintf(*0*);break;(*0*);break; case 1: case 1: printfprintf(*1*);break;(*1*);break; case 2: case 2: printfprintf(*2*);break;(*2*);break; A A)*0* 0* B B)*0*2* 0*2* C C)*0*1*2* 0*1*2* D D)有语法错误)有语法错误)有语法错误)有语法错误2024/7/305习题习题习题习题4.24.2(3 3)在)在)在)在while (x)while (x)语句中的语句中的语句中的语句中的x x与下面条件表达式等价的是与下面条件表达式等价的是与下面条件表达式等价的是与下面条件表达式等价的是 A A)x = 0 x = 0 B B) x = 1 x = 1 C C)x != 1 x != 1 D D) x != 0x != 0(4 4)若有语句)若有语句)若有语句)若有语句intint x; x;,下面程序段的输出结果为,下面程序段的输出结果为,下面程序段的输出结果为,下面程序段的输出结果为 for (x=3; x6; x+)for (x=3; x6; x+) printf(x%2) ? *%d : #% printf(x%2) ? *%d : #%dndn, x);, x); A A)*3 3 B B)#3 #3 C C)#3 D#3 D)*3#43#4 #4 *4 *4#5 #4 *4 *4#5 *5*5 *5 #5 *5 #5 2024/7/306典型习题:习题典型习题:习题典型习题:习题典型习题:习题4.18,4.204.254.18,4.204.25 利用穷举法求解的趣味智力题利用穷举法求解的趣味智力题利用穷举法求解的趣味智力题利用穷举法求解的趣味智力题 习题习题习题习题4.204.20韩信点兵韩信点兵韩信点兵韩信点兵(习题(习题(习题(习题4.214.21爱因斯坦数学题与此类似)爱因斯坦数学题与此类似)爱因斯坦数学题与此类似)爱因斯坦数学题与此类似) 韩信有一队兵,他想知道有多少人,便让士兵排队韩信有一队兵,他想知道有多少人,便让士兵排队韩信有一队兵,他想知道有多少人,便让士兵排队韩信有一队兵,他想知道有多少人,便让士兵排队报数。按从报数。按从报数。按从报数。按从1 1至至至至5 5报数,最末一个士兵报的数为报数,最末一个士兵报的数为报数,最末一个士兵报的数为报数,最末一个士兵报的数为1 1;按;按;按;按从从从从1 1至至至至6 6报数,最末一个士兵报的数为报数,最末一个士兵报的数为报数,最末一个士兵报的数为报数,最末一个士兵报的数为5 5;按从;按从;按从;按从1 1至至至至7 7报报报报数,最末一个士兵报的数为数,最末一个士兵报的数为数,最末一个士兵报的数为数,最末一个士兵报的数为4 4;最后再按从;最后再按从;最后再按从;最后再按从1 1至至至至1111报报报报数,最末一个士兵报的数为数,最末一个士兵报的数为数,最末一个士兵报的数为数,最末一个士兵报的数为1010。你知道韩信至少有。你知道韩信至少有。你知道韩信至少有。你知道韩信至少有多少兵吗?多少兵吗?多少兵吗?多少兵吗?设兵数为设兵数为设兵数为设兵数为x x,则按题意,则按题意,则按题意,则按题意x x应满足下述关系式:应满足下述关系式:应满足下述关系式:应满足下述关系式:x x%5 = 1 & %5 = 1 & x x%6 = 5 & %6 = 5 & x x%7 = 4 & %7 = 4 & x x%11 = 10%11 = 10采用穷举法对采用穷举法对采用穷举法对采用穷举法对x x从从从从1 1开始试验,可得到韩信至少有多少兵开始试验,可得到韩信至少有多少兵开始试验,可得到韩信至少有多少兵开始试验,可得到韩信至少有多少兵2024/7/307错误案例错误案例错误案例错误案例# #includeinclude main()main() intint x; x; forfor (x=1; (x=1; x 5000x 5000 ;x+) ;x+) ifif (x%5=1 & x%6=5 & x%7=4 & x%11=10) (x%5=1 & x%6=5 & x%7=4 & x%11=10) printf( x = %dn, x); printf( x = %dn, x); /*/*属于属于属于属于“ “瞎猫碰死耗子瞎猫碰死耗子瞎猫碰死耗子瞎猫碰死耗子” ”的做法的做法的做法的做法* */ /2024/7/308错误案例错误案例错误案例错误案例# #includeinclude main()main() intint x; x; forfor (x=1; ;x+) (x=1; ;x+) ifif (x%5=1 & x%6=5 & x%7=4 & x%11=10) (x%5=1 & x%6=5 & x%7=4 & x%11=10) printf( x = %dn, x); printf( x = %dn, x); /*/*死循环死循环死循环死循环* */ /2024/7/309死循环死循环死循环死循环 永远不会退出的循环为死循环永远不会退出的循环为死循环永远不会退出的循环为死循环永远不会退出的循环为死循环forfor (;) (;) while while (1) (1) dodo whilewhile (1); (1); 一般情况下,要极力避免死循环一般情况下,要极力避免死循环一般情况下,要极力避免死循环一般情况下,要极力避免死循环绝大多数程序不需要死循环。如果出现,往往都是绝大多数程序不需要死循环。如果出现,往往都是绝大多数程序不需要死循环。如果出现,往往都是绝大多数程序不需要死循环。如果出现,往往都是bugbug时间过长的循环会造成时间过长的循环会造成时间过长的循环会造成时间过长的循环会造成“ “假死假死假死假死” ”效果,也要考虑解决效果,也要考虑解决效果,也要考虑解决效果,也要考虑解决2024/7/3010解决方案解决方案解决方案解决方案1-goto1-goto# #includeinclude main()main() intint x; x; forfor (x=1; ;x+) (x=1; ;x+) ifif (x%5=1 & x%6=5 & x%7=4 & x%11=10) (x%5=1 & x%6=5 & x%7=4 & x%11=10) printf( x = %dn, x); printf( x = %dn, x); gotogoto END;END; END: ;END: ; 2024/7/3011解决方案解决方案解决方案解决方案2-break2-break# #includeinclude main()main() intint x; x; forfor (x=1; ;x+) (x=1; ;x+) ifif (x%5=1 & x%6=5 & x%7=4 & x%11=10) (x%5=1 & x%6=5 & x%7=4 & x%11=10) printf( x = %dn, x); printf( x = %dn, x); break;break; 2024/7/3012解决方案解决方案解决方案解决方案3-3-标志变量标志变量标志变量标志变量# #includeinclude main()main() intint x = 1 x = 1; ; intint find = 0; /*find = 0; /*设置找到标志为假设置找到标志为假设置找到标志为假设置找到标志为假* */ /forfor (x=1; (x=1; !find!find ;x+) ;x+) ifif (x%5=1 & x%6=5 & x%7=4 & x%11=10) (x%5=1 & x%6=5 & x%7=4 & x%11=10) printf( x = %dn, x); printf( x = %dn, x); find = 1;find = 1; 2024/7/3013错误案例错误案例错误案例错误案例- -判断三角形的类型判断三角形的类型判断三角形的类型判断三角形的类型x4-7-1x4-7-1# #includeinclude # #includeinclude main()main() floatfloat a, b, c; a, b, c; printf(Inputprintf(Input the three edge length:); the three edge length:);scanf(%fscanf(%f, %f, %f, &a, &b , &c); , %f, %f, &a, &b , &c); ifif ( (a+ba+bc & c & b+cb+ca & a & a+ca+cb)b)/*/*三角形的基本条件三角形的基本条件三角形的基本条件三角形的基本条件* */ / ifif (a=b | b=c | c=a) (a=b | b=c | c=a)printfprintf(等腰等腰等腰等腰););ifif (a* (a*a+ba+b*b=c*c | a*b=c*c | a*a+ca+c*c=b*b | b*c=b*b | b*b+cb+c*c=a*a)*c=a*a)printfprintf(直角直角直角直角););elseelseprintfprintf(一般一般一般一般););printfprintf(三角形三角形三角形三角形n);n); elseelse printfprintf(不是三角形不是三角形不是三角形不是三角形n);n); 错在哪里?错在哪里?错在哪里?错在哪里?2024/7/3014错误案例分析错误案例分析错误案例分析错误案例分析一般三角形一般三角形一般三角形一般三角形不是三角形不是三角形不是三角形不是三角形等边等边等边等边等腰等腰等腰等腰直角直角直角直角三角形三角形三角形三角形等腰等腰等腰等腰直角直角直角直角有交叉关系的用并列的有交叉关系的用并列的有交叉关系的用并列的有交叉关系的用并列的ifif非此即彼的用非此即彼的用非此即彼的用非此即彼的用ifelseifelse2024/7/3015x4-7-2x4-7-2main()main() floatfloat a, b, c; a, b, c;intint flag = 1; flag = 1;ifif ( (a+ba+bc & c & b+cb+ca & a & a+ca+cb)b)/*/*三角形的基本条件三角形的基本条件三角形的基本条件三角形的基本条件* */ / ifif (a=b | b=c | c=a) (a=b | b=c | c=a) printfprintf(等腰等腰等腰等腰););flag = 0;flag = 0; ifif (a* (a*a+ba+b*b=c*c | a*b=c*c | a*a+ca+c*c=b*b | b*c=b*b | b*b+cb+c*c=a*a)*c=a*a) printfprintf(直角直角直角直角););flag = 0;flag = 0; ifif (flag) (flag) printfprintf(一般一般一般一般);); printfprintf(三角形三角形三角形三角形n);n); elseelse printfprintf(不是三角形不是三角形不是三角形不是三角形n);n); 2024/7/3016错误案例错误案例错误案例错误案例- -x4-7-3x4-7-3main()main() ifif ( (a+ba+bc & c & b+cb+ca & a & a+ca+cb) /*b) /*三角形的基本条件三角形的基本条件三角形的基本条件三角形的基本条件* */ / ifif (a=b & b=c & c=a) (a=b & b=c & c=a) printfprintf(等等等等边边边边););flag = 0;flag = 0; ifif (a=b | b=c | c=a) (a=b | b=c | c=a) printfprintf(等腰等腰等腰等腰););flag = 0;flag = 0; ifif (a* (a*a+ba+b*b=c*c | a*b=c*c | a*a+ca+c*c=b*b | b*c=b*b | b*b+cb+c*c=a*a)*c=a*a) printfprintf(直角直角直角直角););flag = 0;flag = 0; ifif (flag) (flag)printfprintf(一般一般一般一般););printfprintf(三角形三角形三角形三角形n);n); elseelseprintfprintf(不是三角形不是三角形不是三角形不是三角形n);n); 错在哪里?错在哪里?错在哪里?错在哪里?2024/7/3017x4-7-4x4-7-4main()main() ifif ( (a+ba+bc & c & b+cb+ca & a & a+ca+cb) /*b) /*三角形的基本条件三角形的基本条件三角形的基本条件三角形的基本条件* */ / ifif (a=b & b=c & c=a) (a=b & b=c & c=a) printfprintf(等等等等边边边边););flag = 0;flag = 0; else ifelse if (a=b | b=c | c=a) (a=b | b=c | c=a) printfprintf(等腰等腰等腰等腰););flag = 0;flag = 0; ifif (a* (a*a+ba+b*b=c*c | a*b=c*c | a*a+ca+c*c=b*b | b*c=b*b | b*b+cb+c*c=a*a)*c=a*a) printfprintf(直角直角直角直角););flag = 0;flag = 0; ifif (flag) (flag)printfprintf(一般一般一般一般););printfprintf(三角形三角形三角形三角形n);n); elseelseprintfprintf(不是三角形不是三角形不是三角形不是三角形n);n); 2024/7/3018错误案例错误案例错误案例错误案例- -x4-7-5x4-7-5main()main() ifif ( (a+ba+bc & c & b+cb+ca & a & a+ca+cb) /*b) /*三角形的基本条件三角形的基本条件三角形的基本条件三角形的基本条件* */ / ifif (a=b | b=c | c=a) (a=b | b=c | c=a) printfprintf(等腰等腰等腰等腰););flag = 0;flag = 0; else else ifif (a=b & b=c & c=a) (a=b & b=c & c=a) printfprintf(等等等等边边边边););flag = 0;flag = 0; ifif (a* (a*a+ba+b*b=c*c | a*b=c*c | a*a+ca+c*c=b*b | b*c=b*b | b*b+cb+c*c=a*a)*c=a*a) printfprintf(直角直角直角直角););flag = 0;flag = 0; ifif (flag) (flag)printfprintf(一般一般一般一般););printfprintf(三角形三角形三角形三角形n);n); elseelseprintfprintf(不是三角形不是三角形不是三角形不是三角形n);n); 等腰在先等腰在先等腰在先等腰在先等边在后等边在后等边在后等边在后是否可以是否可以是否可以是否可以? ?2024/7/3019错误案例错误案例错误案例错误案例 /*/*等腰三角形的条件等腰三角形的条件等腰三角形的条件等腰三角形的条件* */ /if (a=b | b=c | c=a)if (a=b | b=c | c=a)if (if (fabs(a-bfabs(a-b)=LIMIT | )=LIMIT | fabs(b-cfabs(b-c)=LIMIT )=LIMIT | | fabs(cfabs(c-a)=LIMIT)-a)=LIMIT) /*/*直角三角形的条件直角三角形的条件直角三角形的条件直角三角形的条件 * */ /if (a*if (a*a+ba+b*b=c*c | a*b=c*c | a*a+ca+c*c=b*b *c=b*b | b* | b*b+cb+c*c=a*a)*c=a*a)if (if (fabs(afabs(a* *a+ba+b* *b-cb-c*c)=LIMIT*c)=LIMIT| | fabs(afabs(a* *a+ca+c* *c-bc-b*b)=LIMIT*b)=LIMIT| | fabs(cfabs(c* *c+bc+b*b-a*a)=LIMIT) *b-a*a)=LIMIT) #define LIMIT 1e-7#define LIMIT 1e-72024/7/3020典型习题典型习题典型习题典型习题- -习题习题习题习题4.264.284.264.28 打印图案打印图案打印图案打印图案* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *2024/7/3021典型习题典型习题典型习题典型习题: :习题习题习题习题4.104.174.104.17 累加求和的关键:累加求和的关键:累加求和的关键:累加求和的关键:寻找累加项的构成规律寻找累加项的构成规律寻找累加项的构成规律寻找累加项的构成规律 前后项之间无关,习题前后项之间无关,习题前后项之间无关,习题前后项之间无关,习题4.11,4.14,4.164.11,4.14,4.161*2*3 + 3*4*5 + + 99*100*1011*2*3 + 3*4*5 + + 99*100*101 term = i * (i+1) * (i+2); i = 1,3,99 term = i * (i+1) * (i+2); i = 1,3,99 前前前前100100项之积项之积项之积项之积 term = n * n / (n-1) * (n+1); n = 2,4term = n * n / (n-1) * (n+1); n = 2,4,100 100 1 - 1/2 + 1/3 - 1/4 + + 1/99 - 1/100 + 1 - 1/2 + 1/3 - 1/4 + + 1/99 - 1/100 + 直到最后一项的绝对值小于直到最后一项的绝对值小于直到最后一项的绝对值小于直到最后一项的绝对值小于10-410-4为止为止为止为止 term = sign / n;term = sign / n; 分子分子分子分子sign = -sign; sign = -sign; 初值为初值为初值为初值为1 1 分母分母分母分母n = n + 1; n = n + 1; 初值为初值为初值为初值为1 1 2024/7/3022典型习题典型习题典型习题典型习题: :习题习题习题习题4.104.174.104.17 前后项之间有关前后项之间有关前后项之间有关前后项之间有关, ,习题习题习题习题4.12,4.13,4.15,4.174.12,4.13,4.15,4.17 1!+2!+.+n!1!+2!+.+n! term = term = termterm * i; i = 1,2,10. term * i; i = 1,2,10. term初值为初值为初值为初值为1 1 x x0 0 + x+ x1 1 + x+ x2 2 + x+ x3 3 + + term = term = termterm * x; term * x; term初值为初值为初值为初值为1 1 a + a + aaaa + + aaaaaa + + aaaaaaaa + + aaaaaaaaaa +. +. 例例例例a=2a=2, 2 + 22 + 222 + 2222 +. 2 + 22 + 222 + 2222 +. term = term = termterm * 10 + a; i = 1,2,n. term * 10 + a; i = 1,2,n. term初值为初值为初值为初值为0 0 直到直到直到直到最后一项的绝对值小于最后一项的绝对值小于最后一项的绝对值小于最后一项的绝对值小于1010-5-5 term = term = termterm / n; term / n; term初值为初值为初值为初值为1.01.0 n = n + 1n = n + 1,n n初值为初值为初值为初值为1 1 sin(xsin(x) x - x) x - x3 3/3! + x/3! + x5 5/5! - x/5! - x7 7/7! + x/7! + x9 9/9! - /9! - ,要求,要求,要求,要求最后一项的绝对值小于最后一项的绝对值小于最后一项的绝对值小于最后一项的绝对值小于1010-5-5,并统计出此时累加了多少项,并统计出此时累加了多少项,并统计出此时累加了多少项,并统计出此时累加了多少项 term = - term * x * x / (n+1) * (n+2); termterm = - term * x * x / (n+1) * (n+2); term初值为初值为初值为初值为x x n = n + 2n = n + 2,n n初值为初值为初值为初值为1 1
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号