实验编号: C05200C04 实验名称:循环结构程序设计 实验日期: 201 8.10 实验地址:格致 4 楼 实验教师: C 语言课题组 实验内容提要:循环结构语句的使用,循环嵌套 具体内容: (1) : P82, 实验 2 ( 2 )( 3 )( 4 ) (2) 运行下列程序,分析运行结果 # include
main( ) {int y=10; do {y--;}while(--y); printf("%d\n",y--); } (3) 运行下列程序,分析运行结果 # include
main ( ) {int x,i; for (i=1;i<=100;i++) {x=i; if (++x%2= =0) if (++x%3= =0) if (++x%7= =0) printf ("%d\n",x); } } (4) 运行下列程序,分析运行结果 #include
main( ) {int i,j,x=0; for (i=0;i<2;i++) {x++; for (j=0;j<=3;j++) {if (j%2) continue; x++; } x++; } printf("x=%d\n",x); } (2) : P85 填空( 2 )( 5 ) (2) 下列程序的功能是计算: s=1+12+123+1234+12345 ,试填空。 main( ) { int t=0,s=0,i; for(i=1;i<=5;i+ +} { t=i+ _________ ; s=s+t; } printf("s=%d\n",s); } (5)#include
main() {int c=0,k; for(k=1;k<3;k++) switch(k) {default:c+=k; case 2: c++;break; case 4: c+=2;break; } printf{“%d\n”,c}; } 程序运行后的输出结果是 _____________ ( 3 ):程序填空:以下程序读入 20 个整数,统计非负数个数,并计算非负数之和。 main() {int i,a,s=0,count=0; for(i=0;i<20;i++) {scanf(“%d”, ); if(a<0) ; s+=a; ; } printf(“s=%d,count=%d”,s,count); } ( 4 ):程序填空:已知能被 4 整除而不能被 100 整除的,或者能被 400 整除的年份是闰年,则判断某一年是否是闰年的程序如下,请填空。 main() { int year,leap; scanf(“%d”,&year); if( ) leap=1; else leap=0; if( ) printf(“ 是闰年 ”); else printf(“ 不是闰年 ”); } (5) 编程:计算并输出给定整数 m 的所有因子(不包括 1 与自身)之和。规定 m 的值不大于 1000 。 (6) 编程:从键盘上输入一个整数,求该数为几位数。例:输入 145369 ,输出 6 。 (7) 1 、 2 、 3 、 4 四个数字,能组成多少个互不相同且无重复的三位数?它们是哪些显示输出。 ( 8 )编程:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? 程序分析:在 10 万以内判断,先将该数加上 100 后再开方,再将该数加上 268 后再开方,如果开方后的结果满足如下条件,即是结果。 程序源代码: for (i=1;i<100000;i++) { x=sqrt(i+100); /*x 为加上 100 后开方后的结果 */ y=sqrt(i+268); /*y 为再加上 168 后开方后的结果 */ if(x*x==i+100&&y*y==i+268)/* 如果一个数的平方根的平方等于该数,这说明此数是完全平方数 */ 输出即可 } ( 9 )编程:打印出所有的 “ 水仙花数 ” ,所谓 “ 水仙花数 ” 是指一个三位数,其各位数字立方和等于该数本身。例如: 153 是一个 “ 水仙花数 ” ,因为 153=1 的三次方+ 5 的三次方+ 3 的三次方。 程序分析:利用 for 循环控制 100-999 个数,每个数分解出个位,十位,百位。 提示: for(n=100;n<1000;n++) {i=n/100;/* 分解出百位 */ j=n/10%10;/* 分解出十位 */ k=n%10;/* 分解出个位 */ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) 输出即可 } ( 10 )编程:输入两个正整数 m 和 n ,求其最大公约数和最小公倍数。 程序分析:利用辗除法。 提示: while(b!=0)/* 辗转取余算法 */ { r=a%b; a=b; b=r; } ( 11 )判断 101-200 之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt( 这个数 ) ,如果能被整除,则表明此数不是素数,反之是素数。 提示: for(m=101;m<=200;m=m+2) /* 限定了 m 的取值范围是从 100~200 之间的所有奇数 */ {k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) printf(“%d”,m); /* 打印找到的素数 */ } ( 12 ) 用 公式,求 π 的近似值。 (13) 求 100-1000 之间有多少个数,其各个数字之和是 5 , ( 例如 203) 请将这些数显示输出。 (14)计算1!+2!+3!+。。。。+10! (15)公鸡8元一只,母鸡5元一只,小鸡1元一只,求100100只鸡,三种鸡各多少只。