第五章 循环结构程序设计编程题(参考答案)

合集下载

C语言循环结构练习题带答案

C语言循环结构练习题带答案

第5章循环结构程序设计5.1基本知识点✍while语句的使用格式和注意事项✍do-while语句的使用格式和注意事项✍for语句的使用格式和注意事项✍break和continue语句在循环语句中的应用✍循环结构的嵌套✍使用goto语句实现循环结构✍穷举法程序设计方法✍迭代程序设计方法5.2练习题51.单项选择题(1)语句while(!e);中的条件!e等价于A。

A.e==0B.e!=1C.e!=0D.~e(2)下面有关for循环的正确描述是D。

A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判定表达式C.在for循环中,不能用break语句跳出循环体D.for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。

A.不能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环(4)C语言中while和do-while循环的主要区别是A。

A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句(5)以下程序段C。

intx=-1;do{x=x*x;}while(!x);A.是死循环B.循环执行二次C.循环执行一次D.有语法错误(6)下列语句段中不是死循环的是__C__。

A.i=100;while(1){i=i%100+1;if(i==20)break;}B.for(i=1;;i++)sum=sum+1;C.k=0;do{++k;}while(k<=0);D.s=3379;while(s++%2+3%2)s++;(7)与以下程序段等价的是__A__。

机器人程序设计(C语言)(第2版)章节练习题及参考答案

机器人程序设计(C语言)(第2版)章节练习题及参考答案

第一章一种新的C语言学习方式1.一台能够工作的计算机包括?CPU (Central Processing Unit,中央处理单元,进行运算和控制,包括运算器和控制器等)、存储器(如RAM、ROM等)、输入设备、输出设备(包括串行/并行接口、USB等)。

其中,RAM (RandomAccess Memory,随机存储器)主要用于存储数据,ROM (RcadOnlyMemory, 只读存储器)主要用于存储程序。

2.单片机工作时需要什么?需要稳定的电源、晶振、外部存储器和编程调试接口,就像计算机工作时需要电源、晶振、硬盘或其他大容量外部存储器和操作系统一样。

微控制器是将单片机独立工作所需的电源适配器、晶振、外部存储器和串口转换电路等封装到一个模块上,这样就能直接与计算机连接并进行编程开发,不需任何其他芯片和电路。

3. AT89S52是一种什么样的单片机?是一种高性能、低功耗的8位单片机,内含8 KBISPdn-System Programmable系统在线编程)可反复擦写IOOO次的Flash只读程存器,采用ATMEL公司的高密度非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。

在实际工程应用中,功能强大的AT89S52 已成为许多高性价比嵌入式控制应用系统的解决方案。

4. Progisp是一款什么样的软件?是一款免费下载的ISP软件,不需要专门的安装即可使用,非常方便。

使用该软件,读者可以将C语言程序生成的可执行文件下载到机器人单片机上。

使用时需要1根USBA转B 信号线。

5.简述串口调试工具的特点。

串口调试工具就是串行通信接口调试软件,集数据发送、数据接收、数据监控、数据分析等功能于一身,具有小巧精致、操作简捷、功能强大的特点,可以在串口通信监控、设备通信测试工作中有效提高效率。

6. pr i ntf ()函数称为?称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出显示。

Print ()函数是C语言提供的标准输出函数,定义在C语言的标准函数库中,要使用它,必须包括定义标准函数库的头文件stdio. h o第二章最简单的C程序设计——机器人做算数1. C语言用什么整型变量?C语言用关键字imt定义整型变量。

第五章循环结构程序设计习题解答

第五章循环结构程序设计习题解答

5、设某县2000年工业产值为200亿元,如果该县预计平均 每年工业总产值增长率为4.5%,那么多少年后该县工业总 产值将超过500亿? 算法步骤: 第一步,输入2000年的年生产总值. 第二步,计算下一年的年生产总值. 第三步,判断所得的结果是否大于 500.若是,则输出该年的年份;否则,返 回第二步. (1)确定循环体:设a为某年的年生产 总值,t为年生产总值的年增长量,n为 年份,则循环体为t=0.045a,a=a+t,n=n+1. (2)初始化变量: n=2000, a=200. (3)循环控制条件: a>500
3、从键盘输入一个正整数n,计算该数的各位数字之和并输出。 #include <stdio.h> void main() { long n; int s, i=1,j=10; scanf("%ld",&n); s=n%10; while(n/j!=0) { s=s+n/j%10; j=j*10; i++; } printf("i=%d, s=%d ",i,s); }
11、 九· 九表----1
1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81
2、输入一串字符,直到输入一个星号为止, 统计(输出)其中的字de <stdio.h> void main() { char ch; int char_num=0,int_num=0; ch=getchar(); while(ch!='*') { if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) char_num++; else if(ch>='1'&&ch<='9') int_num++; ch=getchar(); } printf("char_num = %d, int_num = %d\n",char_num,int_num); }

课后题答案-C语言程序设计(第2版)

课后题答案-C语言程序设计(第2版)

《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1. I love China!printf("we are students.\n")2. 6项目实训题参考答案1.编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *I am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf("********************\n");printf(" I am a student!\n ");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。

解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题C B A B A C C二操作题,2,-8,23.000000,2.500000,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。

#define M 5main(){ int n,c;n=2; c=M*n;printf("%d\n",c); }2.编程求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。

第5章 循环结构程序设计习题解答

第5章 循环结构程序设计习题解答

第5章循环结构程序设计习题解答1.输入n个整数,求这n个数之中的偶数平均值,并输出。

#include<stdio.h>void main(){int n,i,x,k=0,s=0;printf("Input a number(n):");scanf("%d",&n);printf("Input %d numbers:",n);for(i=0;i<n;i++){scanf("%d",&x);if(x%2==0){s+=x;k++;}}s/=k;printf("average=%d\n",s);}2.输入一串字符,直到输入一个星号*为止,统计(输出)其中字母个数和数字字符个数。

#include<stdio.h>void main(){int n=0,m=0;char c;printf("Input a string character:");do{scanf("%c",&c);if(c>='0'&&c<='9')n++;else if(c>='A'&&c<='Z'||c>='a'&&c<='z')m++;}while(c!='*');printf("number_char=%d\n",n);printf("letter_char=%d\n",m);}3.从键盘输入一正整数n,计算该数各位数字之和并输出。

例如,输入数是5246,则计算5+2+4+6=17并输出。

#include<stdio.h>void main(){int n,r,m=0,s=0;printf("Input a number(int):");scanf("%d",&n);do{r=n%10;s=s+r;n/=10;if(m==0)printf("%d",r);//加式中的第1项不带“+”elseprintf("+%d",r);m++;}while(n>0);printf("=%d\n",s);}4.输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。

(整理)程序设计基础(人民邮电出版社)答案第5章循环结构程序设计

(整理)程序设计基础(人民邮电出版社)答案第5章循环结构程序设计

一、单选题1.for语句中的表达式可以部分或全部省略,但两个C不可省略。

但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。

A)0 B)1C);D),2.程序段如下int k=-20;while(k=0) k=k+1;则以下说法中正确的是C。

A)while循环执行20次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次3.程序段如下int k=0; while(k++<=2); printf("%d\n",k);则执行结果是D。

A)2 B)3C)4 D)无结果4.在C语言的循环语句for,while,do-while中,用于直接中断循环的语句是C 。

A)swich B)continueC)break D)if5.循环语句中的for语句,其一般形式如下:for(表达式1;表达式2;表达式3)语句其中表示循环条件的是B。

A)表达式1 B)表达式2C)表达式3 D)语句6.以下能正确计算1×2×3×…×10的程序段是C。

A)do {i=1;s=1; s=s*i; i++; } while(i<=10);B)do {i=1;s=0; s=s*i; i++; } while(i<=10);C)i=1;s=1; do {s=s*i; i++; } while(i<=10);D)i=1;s=0; do {s=s*i; i++; } while(i<=10);7.不是无限循环的语句为A。

A)for(y=0,x=1;x>++y;x=i++)i=x; B)for( ; ;x++=i);C)while(1){x++;} D)for(i=10; ;i--) sum+=i;8.有以下程序段int n=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345 && n<3);此处do—while循环的结束条件是D。

C程序设计第五章课后习题答案

C程序设计第五章课后习题答案

循环结构程序设计P115 5.1 用while计算1至100的合.#include<stdio.h>int main(){int i=1,sum=0;while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.{sum=sum+i;i++;}printf("The sum is %d .\n",sum);return 0;}P117 5.2 用do-while来做1至100的合.#include<stdio.h>int main(){int i=1,sum=0;do// do-while可以做的事,用while都可以做到.{ //do-while先做一次执行,再判断条件,而while却是先做一个条件,再执行.sum=sum+i;i++;}while(i<=100);printf("The sum is %d .\n",sum);return 0;}P118 5.3 比较do-while与while的差别.#include<stdio.h>{int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0.while(i<=10){sum=sum+i;i++;}printf("The sum of 1-10 is %d .\n",sum);return 0;}#include<stdio.h>int main(){int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,结果一样.输入11的话,先做操作,所以sum=11.do{sum=sum+i;i++;}while(i<=10); //此重点在于理解二者的差别.printf("The sum of 1-10 is %d .\n",sum);return 0;}P126 5.4 break的例子.#include<stdio.h>int main(){int i,b=0,a,c;for(i=0;i<=1000;i++){printf("Please input amount :"); //循环体内套有输出语句以及跳出语句.scanf("%d",&a);b=b+a;if(b>=100)break; //break是用于跳出循环,对if无效,对while for switch 这一类.}}c=b/i;printf("conut is %d , aver is %d ",i+1,c); //注意%号后的形式,否则可能输出错误.return 0;}P127 5.5 continue的例子.#include<stdio.h>int main(){int i;for(i=1;i<20;i++){if(i%3!=0){continue; //跳过本次I,执行下一个i.}printf("%d ",i);}printf("\n");return 0;}P128 5.6 形成一个4*5的矩阵.#include<stdio.h>int main(){int i,j,a=0; //没有给初值,会出现警告: 使用了未初始化的局部变量“a”.for(i=1;i<=4;i++){for(j=1;j<=5;j++,a++) // a用来控制换行.{if(a%5==0){printf("\n");}printf("%d\t",i*j);}}printf("\n");return 0;}P131 5.7 用一个交错的式子求哌的近似值.#include<stdio.h>#include<math.h>int main() //四分之哌等于(1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11).{float s=1,n=1,m,sum=0,t;for(m=1;;m=m+2) //不确定哪项才会小于等于十的负六次方,所以不指定,无限下去.{ //不指定第二项,执行语句中应该有控制跳出的句子,否则死循环.t=(s)*(n/m); //这是第一项,s是符号,if(fabs(t)<=1e-6) //应该写在这里,题目要求这一项不累加进去.{break;}sum=sum+t; //因为累加项在这里,所以,一旦跳出就不会累加进来了.s=s*(-1); //变号一次.}printf("四分之一哌的值是%f.\n",sum);printf("一个完整哌的值是%f.\n",sum*4);return 0;}//下面这段小代码用来验证关于数值型数据类型的关系.去掉注释,可运行.//如果出现类似值为全1或是全零的话,一般可以考虑数据类型赋值或是定义错了的问题.//#include <stdio.h> //这是关于int float double三者关复杂关系的,乱啊,如果看不懂,可以通过实验自己明白来.////int main() //在C语言中,1.0认为是实数,即是double型,所以,如果你把它用float输出的话,会有警告:警告 1 warning C4305: “=”: 从“double”到“float”截断.//{// float m,a,b,c; //一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,不能变成int型啦.而且后面的赋值会跟着它变成相应的类型.比如下面的m=1,其实得到的是m=1.0.// int d,e,f;// m=1;// a=1.0/3;// b=1/3;// c=m/3;// d=1.0;// e=1/4;// f=1.0/4;// printf("%lf(float用double的%lf来输出是可以的.)\n%f\n%f\n%f\n",m,a,b,c); //不管上面定义什么,这边写的输出类型是什么,就按相应的类型输出,有可能会出错,所以建议按定义的类型来输出.当然扩展的是不会错的,截断的是会错的,比如float可以用%lf来输出,而不能用%d来输出.// printf("%d\n%d\n%d\n",d,e,f); //但是,不相应的int型不可以用%f来输出的.因为int float就不同种类,一个是整数,一个是小数,float double同样是有小数点的!!!!// return 0;//}#include<stdio.h>int main() //这个就是著名的Fibonacci(费波那契数列问题){int f1=1,f2=1,f3,i;printf("%12d\n%12d\n",f1,f2);for(i=1;i<=38;i++) //注意,这是个基础问题,(i=1;i<=5;i++)这里其实进行了次运算,因为有f1,f2,要求有个,所以要有个.要么写<=38,要么写<39,边界问题一定要注意,不可以太随意!!!!{f3=f1+f2;printf("%12d\n",f3); //这个问题同样适用于"一对兔子一个月生一对"的问题.,f1=f2; //f1=f1+f2;此时它们各是,所以,现在的f1是.f2=f3; //f2=f2+f1;此时的f1已经是最先二者之和了.可以不用到f3.}return 0;}#include<stdio.h>#include<math.h>int main(){double num;int i;printf("Please input a number :");scanf("%lf",&num); //因为sqrt要求是浮点型,那就给它浮点型,需要时再强制转换.for(i=2;i<=sqrt(num);i++) //这边是<=号没错.{if((int)num%i==0) //如果在这期间有任何一个可以为零的话,则不是素数.{break; //当然跳出.}} //执行到这里的时候,i=5,已经变成了!!if(i<=sqrt(num)){printf("Not %d",(int)num);}else//如上所述,i=5,超出了求根的值,所以是素数.{printf("Yes %d",(int)num);}return 0;}P137 5.10 求100至200间的素数.#include<stdio.h>//不解释,HOHO>>>>...#include<math.h>int main(){double j;int i,k=0;for(j=100;j<=200;j++){for(i=2;i<=sqrt(j);i++){if((int)j%i==0){break;}}k=k+1; //这里是布局的开头.学习一下,有助逻辑.if(i<=sqrt(j)){printf("Not %d ",(int)j);if(k%5==0) //5个换一次行.{printf("\n");}}else{printf("Yes %d ",(int)j);if(k%5==0){printf("\n");}}}return 0;}P139 5.11 密码转换.#include<stdio.h>int main(){char c;c=getchar();while(c!='\n') //这也可以用数组来实现.{if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){if((c>='w'&&c<='z')||(c>='W'&&c<='Z')){c=c-22;}else{c=c+4;}printf("%c",c);c=getchar(); //套在循环里,依次得到字母,而while中判断回车为结束.}}printf("\n"); //这是布局问题.return 0;}P140 0.3 最大公约数和最小公倍数.#include<stdio.h>//最大公约数用累除法,除到无余数时的被除数是最大公约数.main (){int m, n, c, d;int gcd(); //这是最大公约数的缩写,此处调用函数,可以不写里面的实参.int lcm(); //这是最小公倍数的缩写,此处调用函数,可以不写里面的实参.printf("Please input two number :\n");scanf("%d %d",&m,&n);c=gcd(m,n); //c获取最大公约数d=lcm(m,n); //d获取最小公倍数printf("The GCD of %d and %d is : %d !\n", m, n, c);printf("The LCM of %d and %d is : %d !\n", m, n, d);return 0;}int gcd(int x, int y) //最大公约数Greatest Common Divisor{int temp;while(x%y!=0){temp=y; //y在下一轮中作为除数,即是下一轮中的X,所以先闪一边去.y=x%y; //x,y的余数作为下一轮中的Y,由x%y来取得.x=temp; //刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用.}return y; //这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理. }int lcm(int x, int y) //最小公倍数Lowest Common Multiple{int i, temp;if(x<y) //此段代码结果是保证二者大的数在X上,小的数在Y上.即小于号降序.{ //以下为经典三行码,实现两个数的互换.temp=x;x=y;y=temp;}for(i=1; i<=y; i++) //设定一个区间,从1至大的数之间的循环.{if(!((x*i)%y)) //此式子如有余数,加上"!"号,会是假,则不返回,进行下一轮.{ //如此往复,直到取模无余数,那么小的数X乘以区间当前的I值,就是最小公倍数.return x*i;}}}P140 0.4 判断一串输入的字符.#include<stdio.h>int main(){char ch;int a=0,b=0,c=0,d=0,e=0;printf("Please input the string\n");while((ch=getchar())!='\n') //直到回车.{if(ch<='z'&&ch>='a'){a++;}else if(ch==' '){c++;}else if(ch<58&&ch>47){d++;}else if(ch<='Z'&&ch>='A'){b++;}else{e++;}}printf("大写%d 小写%d 空格%d 数字%d 其它%d\n",a,b,c,d,e);}#include<stdio.h>//不理解时可以百度或是谷歌更多的信息.int main() //想办法既快速做完,又要消化理解!!!{int temp,i,a,n,sum=0; //主逻辑,友好性暂时放松.scanf("%d %d",&a,&n); //a是数字,n是要乘的个数.temp=a; //先把第一阶的值存起来.for(i=0;i<n;i++){sum=sum+a;printf("%d + ",a); //事关布局.a=a*10+temp; //重点是每次乘,然后加上上一个数.}printf("= %d .",sum);return 0;}P140 0.6 1!+2!+3!+4!.....的值. #include<stdio.h>int main() //1!+2!+3!+4!.....{int i,j,k,sum=0,m=1;scanf("%d",&k); //比如设定为,值为.for(i=1;i<=k;i++) //第一层循环,指定到.{for(j=1;j<=i;j++) //第二层循环,指定至当前数.{m=m*j;} //到此是阶乘的结构.sum=sum+m;m=1;}printf("%d",sum); //完全不理解时,搜索并参考.return 0; //尝试自己做,第一次做出来就是自己的东西了. }#include<stdio.h>int main(){int a,b;double c,asum=0,bsum=0,csum=0;for(a=1;a<=100;a++) //三个块分别注释验证结果.{asum=asum+a;}for(b=1;b<=50;b++) //在VS运行中,注意*.cpp为C++语言.{bsum=bsum+b*b; //为了避免语言差别,请注意文件名为*.c.}for(c=1;c<=10;c++) //c作浮点运算,所以定义在double类型中.{csum=csum+1/c;}printf("%lf",asum+bsum+csum);return 0;}PP#include<stdio.h>#include<math.h>int main(){int j,k,s[6],x=100,y,sum=0;for(j=153;j<=154;j++){for(k=2;k>=0;k--){s[k]=j%(int)pow(10,k+1)/(int)pow(10,k);y=pow(s[k],3);sum+=y;printf("%d-%d--%d\t",k,s[k],j);}printf("%d\n",sum);}return 0;}P140 0.8 水仙花数.//#include <stdio.h> //一步步的发现问题.////int main() //在%和/号之间,以前pow.以后再做.//{// int i,j,k,a,b,c,sum=0; //这里逻辑对,算出来却错了.// for(i=2;i<=4;i++) //计算机在想什么,看来它的大脑难以模拟.// {// for(j=pow(10,i);j<=pow(10,i+1)-1;j++) //我不完全明白它遵守的逻辑. // {// for(k=0;k<=i;k++)// {// sum+=pow((j%pow(10,i+1)/pow(10,i)),3);// }// if(sum==j)// {// printf("%d 是水仙花数!\n",j);// }// sum=0;// }// }// return 0;//} //为什么还是无法实现?!#include<stdio.h>#include<math.h>int main(){int a,b,c,i,sum=0; //这里只计算三位数的.for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;sum+=a*a*a+b*b*b+c*c*c;if(sum==i){printf("%d 是水仙花数.\n",i);}sum=0;}return 0;}P141 0.9 完数.#include<stdio.h>int main(){int i,j,r;for(i=1;i<=1000;i++) //零是个临界值,不能包括它.{r=0; //每次清零重来.类似水仙中的sum.for(j=1;j<i;j++){if(i%j==0) //除得尽即是因子.{r=r+j; //然后累加进去.}}if(r==i) //若相等.{printf("%d 是完数.\n",i);}}return 0;}P141 0.10 2/1+3/2+5/3+8/5+13/8…#include<stdio.h>int main() //10.007051{double i,a=2,b=1,c,s=0; //a是分子,b是分母.for(i=0;i<6;i++) //二十可以用户指定.{s+=a/b; //中间储值变量.c=a+b;b=a;a=c;}printf("%lf\n",s);return 0;}#include<stdio.h>int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.{double sum=100,high=100,up,donw,i;for(i=1;i<10;i++) //不管指定到哪个数,都不会超过三百.{up=high/2;donw=up;high=donw; //自咬尾巴问题.sum+=donw*2;}printf("%lf %lf\n",donw,sum);return 0;}P141 0.12 猴子吃桃子.#include<stdio.h>int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.{int i,sum=1;for(i=1;i<=10;i++) //临界要清楚,结果要与手算的前几个实例相匹配.{printf("倒数第%d天还剩有%d个桃子.\n",i,sum);sum=(sum+1)*2;}//printf("%d\n",sum);return 0;}#include<stdio.h>#include<conio.h>main() //只关注左半部分.右半部分无视空格.{int i,j,k,m=6; //m可指定,指定中心点位置.可任意奇偶.for(i=1;i<=m;i++) //上半部分.其实也是正三角.{for(j=1;j<=m-i;j++) //一到中心点前i个位置填充空格.printf(" ");for(k=1;k<2*i;k++) //空格后向前填充星号的个数.是奇数.一,三,五... printf("*");printf("\n");}for(i=m-1;i>0;i--) //下半部分.其实也是倒三角.{ //减一是因为行数问题.这是中心行以下的.for(j=m-1;j>=i;j--)printf(" ");for(k=1;k<2*i;k++)printf("*");printf("\n");}getch(); //用户反应后结束.但,没必要.}。

循环结构程序设计2

循环结构程序设计2

第五章循环结构程序设计一、选择题1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。

(0级)A)0 B)1 C)成立D)22.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。

(0级)A)0 B)1 C);D),3.for语句中的表达式可以部分或全部省略,但两个不可省略。

但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。

(0级)A)0 B)1 C);D),4.程序段如下int k=-20;while(k=0) k=k+1;则以下说法中正确的是。

(1级)A)while循环执行20次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次5.程序段如下int k=1;while(!k==0) {k=k+1;printf("%d\n",k);}说法正确的是。

(1级)A)while循环执行2次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次6.以下for循环是。

(1级)for(a=0,b=0;(b!=123)&&(a<=4);a++)A)无限循环B)循环次数不定C)执行4次D)执行5次7.在下列程序中,while循环的循环次数是。

(1级)main( ){ int i=0;while(i<10){if(i<1) continue;if(i= =5) break;i++;}......}A)1 B)10 C)6 D)死循环、不能确定次数8.程序段如下int k=0; while(k++<=2) printf("%d\n",k);则执行结果是。

(1级)A)1 B)2 C)0 D)无结果2 3 13 4 29.程序段如下int k=0;while(k++<=2); printf("last=%d\n",k);则执行结果是last= 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章循环结构程序设计
1.用for循环语句编程输出1~20之间的所有整数,两数之间以空格分隔。

#include<stdio.h>
void main()
{
int i;
for(i=1;i<=20;i++)
printf("%d ",i);
printf("\n");
}
2.用for循环语句编程输出20~1之间的所有整数,两数之间以空格分隔。

#include<stdio.h>
void main()
{
int i;
for(i=20;i>=1;i--)
printf("%d ",i);
printf("\n");
}
3.用for循环语句编程输出A~Z之间的所有字符,两字母之间以空格分隔,要求一行输出8个字符。

#include<stdio.h>
void main()
{
char c;
for(c='A';c<='A'+25;c++)
{
putchar(c);
printf(" ");
}
}
4.输出100~200之间所有能被3和7整除的数(每行输出4个数)。

#include<stdio.h>
void main()
{
int i,j=0;
for(i=100;i<=200;i++)
{
if(i%21==0)
{ j++;
printf("%12d",i);
if(j%4==0) printf("\n");
}
}
}
5.输出1至1000之间所有满足用3除余2、用5除余3、用7除余2的数(要求每行只输出5个数)。

#include<stdio.h>
void main()
int i,j=0;
for(i=1;i<=1000;i++)
{
if((i%3==2)&&(i%5==3)&&(i%7==2))
{ j++;
printf("%12d",i);
if(j%5==0) printf("\n");
}
}
}
6.先读入一个正整数n,然后计算并显示前n个偶数的和。

例如n为5,则求2+4+6+8+10的值,即sum=30。

#include<stdio.h>
void main()
{
int i,n,sum=0;
printf("Please enter an integer n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=(2*i);
printf("sum=%d\n",sum);
7.计算S=1+1/2+1/3+1/4+…+1/200的值并输出。

#include<stdio.h>
void main()
{
int i;
float S=0.0;
for(i=1;i<=200;i++)
S=S+1.0/i;
printf("S=%f\n",S);
}
8.计算1-3+5-7+…-99+101的值。

#include<stdio.h>
void main()
{
int i,sum=0;
for(i=0;i<=50;i++)
{
if(i%2==0) sum+=2*i+1;
else sum-=2*i+1;
}
printf("sum=%d\n",sum);
9.输入6个整数并显示其平均值。

#include<stdio.h>
void main()
{
int num,sum=0,i;
float avg;
printf("Please enter 6 integers:");
for(i=1;i<=6;i++)
{
scanf("%d",&num);
sum+=num;
}
avg=sum/6.0;
printf("avg=%f\n",avg);
}
10.输出Fibonacci数列的前几项,直到该项的值大于10000为止(每行输出5项)。

Fibonacci数列为1,1,2,3,5,8,13,21,34,…。

即第一项和第二项为1,其他项为前两项之和。

#include<stdio.h>
void main()
int f1=1,f2=1,f3=2,i=3;
printf("%d\t%d\t%d\t",f1,f2,f3);
while(f3<=10000)
{
f1=f2;f2=f3;
f3=f1+f2;
printf("%d\t",f3);
i++;
if(i%5==0) printf("\n");
}
}
11.输出10000至99999中所有的回文数(回文数是指从左到右读与从右到左读都一样的正整数,如11,22,3443,94349等)。

#include<stdio.h>
void main()
{
long i;
int ge,shi,qian,wan,k=0;
for(i=10000;i<=99999;i++)
{
ge=i%10; wan=i/10000;
shi=i/10%10; qian=i/1000%10;
if(ge==wan&&shi==qian)
{
k++;
printf("%12d",i);
if(k%5==0) printf("\n");
}
}
}
12.找出所有“水仙花数”。

所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。

例如,153是水仙花数,因为153=1^3+5^3+3^3.
#include<stdio.h>
void main()
{
int i,ge,shi,bai;
for(i=100;i<=999;i++)
{
ge=i%10;
shi=i/10%10;
bai=i/100;
if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai))
printf("%d\t",i);
}
}
13.输出10~100之间所有各位数之积大于各位数之和的数,例如23,因为2*3>2+3。

#include<stdio.h>
void main()
{
int i,ge,shi;
for(i=10;i<=99;i++)
{
ge=i%10; shi=i/10;
if((ge*shi)>(ge+shi))
printf("%d\t",i);
}
}
14.输入一个整数,计算该整数的位数及各位之和。

#include<stdio.h>
void main()
{
int num=0,sum=0,i;
printf("Please enter an integer:");
scanf("%d",&i);
if(i<0) i=-i;
do
{
sum+=i%10;
num++;
i=i/10;
} while(i);
printf("sum=%d,num=%d\n",sum,num);
}
(注:文档可能无法思考全面,请浏览后下载,供参考。

可复制、编制,期待你的好评与关注)。

相关文档
最新文档