第4章-全国计算机等级考试二级C语言循环结构程序设计.ppt
4.7 程序举例 void main() { int m,i,k,flag; flag=1; /* 将素数标志flag设置为1 */ do { printf("input a integer:"); /* 输出提示信息 */ scanf("%ld",&m); /* 从键盘输入变量m的值 */ }while(m<=2); /* 若m<=2,则结束do~while循环 */ k=(int)sqrt(m); /* 将sqrt(m)取整后赋值给变量k */ for(i=2;i<=k;i++) if(m%i==0) /*若m不是素数,则将素数标志flag置为0并结束循环*/ { flag=0; break; } if(flag) /* 若素数标志flag=1,则输出该数是素数 */ printf("%d is a prime mumber.\n",m); else /* 若素数标志flag=0,则输出该数不是素数 */ printf("%d is not a prime mumber.\n" ,m); } 4.7 程序举例 程序运行结果: input a integer:35↙ 35 is not a prime mumber. input a integer:19↙ 19 is a prime mumber. 4.7 程序举例 例4.17 把一元钱换成5分,2分,1分的零钱,统计共有多少种换法。 用a、b、c分别表示换的5分、2分、1分的张数,则a、b、c的值应该满足:5*a+2*b+c=100。 4.7 程序举例 #include void main() { int a,b,c,cnt=0; for(a=0;a<=20;a++) /* 本循环表示5分的有多少种换法 */ for(b=0;b<=50;b++) /* 本循环表示2分的有多少种换法 */ for(c=0;c<=100;c++) /* 本循环表示1分的有多少种换法 */ if(5*a+2*b+c==100) cnt++; /* 经过三重循环后,统计出有多少种换法 */ printf("count=%d\n",cnt); /* 输出结果 */ } 程序运行结果: count=541 4.7 程序举例 例4.18 计算用户输入的两个正整数之间的所有整数中0,1,2,…,9数码的个数。例如,101~104之间总共包含四个整数101,102,103,104,其中0的个数为4,1的个数为5,2、3、4的个数为1,其余数码没有出现都为0。 要计算某整数中包含的各个数码的个数,必须对该整数进行分解,求得所包含的各个数码,其方法可以通过每次除以10取余数得到,然后再对商进行同样的处理,直到商为0时为止。对所得到的数码进行计数,可采用switch语句来实现。 4.7 程序举例 #include void main() { int num1,num2,n,s,r; int cnt0=0,cnt1=0,cnt2=0,cnt3=0,cnt4=0; int cnt5=0,cnt6=0,cnt7=0,cnt8=0,cnt9=0; do /* 循环用于从键盘上输入两个正整数 */ { printf("input two integer:"); scanf("%d %d",&num1,&num2); }while(num1<0||num2<0||num1>num2); /*若num1<0或num2<0或num1>num2,则退出循环*/ for(n=num1;n<=num2;n++) /