一、实验目的
1. 掌握while,do-while,for循环语句的使用与区别; 2. 掌握循环条件、循环体、循环终止等循环要素; 3. 理解循环执行过程,掌握循环嵌套的执行过程; 4. 熟练使用循环语句编写程序; 5. 掌握break、continue的使用。 二、实验学时数
4学时 三、实验内容与步骤 (一)阅读程序
要求:先自行判断程序的执行结果,再输入并运行下列程序,写出各个程序的运行结果,并理解和分析程序代码。 1. #include int main() { int a=2,b=8; while(b--<0) b-=a ; a++ ; printf(“a=%d,b=%d\\n”,a,b); return 0; } 输出结果:_________________________________。 2. # include int main() { int x=2 ,y=6 , z=3; do y=y-1; while(z-->0&&++x<5) ; printf(“x=%d\y=%d\z=%d\\n”,x,y,z); return 0; } 输出结果:_________________________________。 3. #include int main() { int n=0; while(n<=2) { n++; printf(\"%d\\n\ return 0; } 输出结果:_________________________________。 4. #include int main( ) { int a=0,j; for(j=0;j<4;j++) { switch( j ) { case 0: } } printf(\"%d\\n\return 0; } 输出结果:_________________________________。 5. #include case 3:a+=2;break; case 1: case 2:a+=3;break;; default:a+=5;break; int main( ) { int i; for(i=1;i<6;i++) if(i%2) {printf(\"#\");continue;} printf(\"*\"); { } printf(\"\\n\"); return 0; } 输出结果:_________________________________。 6. #include int main() { int s=0,t,i,j; for(i=1;i<=3;i++) { t=1; for(j=1;j<=2*i-1;j++) t=t*j; s=s+t; } printf(\"%-5d\\n\ return 0; } 输出结果:_________________________________。 7. #include int main() { int y,a; y=2;a=1; while(y--!=-1) { do { a*=y; a++; }while(y--); } printf(\"%d,%d\\n\return 0; } 输出结果:_________________________________。 (二)完成程序 要求:依据题目要求,分析已给出的语句,填写空白。不允许增行或删行,改动程序的结构。 1.以下程序的功能是计算正整数2345的各位数字平方和,即sum=22+32+42+52。 #include n=2345; do { sum = sum + _______ _____; _______________ _______; } while(n) ; printf(\"sum=%d\\n\return 0; } 2.以下程序的功能是计算S=2+4+8+16+…+128。 #include { int a, s, n , count ; a=2, s=0, n=1, count=1; while(count<=7) { _____________________; s = s + n ; _____________________;} printf(“s = %d\\n”, s ); return 0; } 3.一个数如果恰好等于它的因子之和,这个数就称为完数。求100之内的所有完数。 #include for(n=1;n<=____________;n++) { s=___________; for(j=1;j if(______________)printf(\" %d\\n\} return 0; } 4.以下程序的功能是打印以下图形。 #include for(i=1; i<=4;i++) { for(j=1;j<=___________;j++) printf(\" \"); for(j=1;j<=___________;j++) printf(\"*\"); printf(\"\\n\"); } return 0; } 5.以下程序功能是完成用10元人民币换成一角、两角、五角的所有兑换方案。 #include for (j=0;j<=50;j++) { for( __________________ ) if ( ________________ ) { _________________; printf(\" 第%d种: %3d %3d %3d\if(n%3==0)printf (\" \\n \"); } } return 0; } (三)调试程序 要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运行结果。 1.以下程序输出100(包括100)以内的数,每行输出10个。 行号 #include int main() 1 { int k=100; 2 3 while(k=0) { printf( \"%d,\k--; 4 5 if (k%10==0)printf(\"\\n\"); 6 } 7 return 0; 8 } 错 错误在 行 应改为: 调试正确后 的运行结果 输出结果: 2.下面程序的功能是计算n!。 行号 #include int main() 1 { int i,n,s=1; 2 printf(\"Please enter n:\"); 3 scanf(\"%d\4 for(i=1;i 错 错误在 行 应改为: 调试正确后 的运行结果 输入数据分别为: 1 5 9 12 15 输出结果分别为: 3.以下程序输出1---100的数字(包括100)。 行号 #include int main() 1 { int i =100; 2 while( 1 ) 3 { i = i%100+1 ; 5 printf( “ %4d ,“ ,i ) ; 6 if ( i%10==0 ) printf ( “ \\n ”) ; 7 if ( i>100) break ; 8 } 9 return 0; 10 } 错 错误在 行 应改为: 调试正确后 的运行结果 (四)编写程序 1.小明妈妈给他买了若干块巧克力,小明第一天吃了一半,还不过瘾,又多吃了一块,第二天又将剩下的巧克力吃掉一半,又多吃一块,以后每天都吃了前一天剩下的一半零一块。到第10天再想吃时,只剩下一块了。编程计算小明妈妈总共给小明买了多少块巧克力? 2. 一个百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我二分钱,第三天我仍给你十万元,你给我四分钱,…,你每天给我的钱是前一天的两倍,直到满一月(30天),百万富翁很高兴,欣然接受了这个契约。请编写一个程序计算这一个月中陌生人给了百万富翁多少钱?百万富翁给陌生人多少钱? 3.用for语句编程实现打印如下输出形式的九九乘法表。 1 2 3 4 5 6 7 8 9 4 6 8 10 12 14 16 18 9 12 15 18 21 24 27 16 20 24 28 32 36 25 30 35 40 45 36 42 48 54 49 56 63 64 72 81 4. 每个苹果0.8元,第一天买2个,从第二天开始,每天买前一天的2倍,直到当天购买的苹果个数不超过100的最大值为止,编写程序求每天平均花多少钱。 5. 求出所有能被3整除,且至少有一位数字是5的所有三位整数,并统计其个数。(输出显示时,每行显示10个数字) 输出结果为: 四、分析整理运行结果,写出实验报告 五、思考题 1.记下在调试过程中所发现的错误,系统给出的出错信息和对策。分析讨论对策成功或失败的原因。 2.简述循环语句嵌套时需注意的事项。 3.while循环、do~while循环和for循环各有何特点,三者有何异同? 因篇幅问题不能全部显示,请点此查看更多更全内容