《2022年程序设计基础答案循环结构程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年程序设计基础答案循环结构程序设计 .pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、110 一、单选题1for 语句中的表达式可以部分或全部省略,但两个C不可省略。但当三个表达式均省略后, 因缺少条件判断, 循环会无限制地执行下去, 形成死循环。A)0 B)1 C);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(%dn,k); 则执行结果是D。A)2 B)3 C)4 D)无结果4在 C 语言的循环语句 for,while,do-while 中,用于直接中断
2、循环的语句是C。A)swich B)continue C)break D)if 5循环语句中的 for 语句 ,其一般形式如下 : for(表达式 1;表达式 2;表达式 3) 语句其中表示循环条件的是B。A)表达式 1 B)表达式 2 C)表达式 3 D)语句6以下能正确计算123 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+y
3、;x=i+)i=x; B)for( ; ;x+=i); C)while(1)x+; D)for(i=10; ;i-) sum+=i; 8有以下程序段int n=0,p; doscanf(“%d ”,&p);n+;while(p!=12345 & n3); 此处 dowhile 循环的结束条件是D。A)p 的值不等于 12345并且 n 的值小于 3 B)p 的值等于 12345 并且 n 的值大于等于 3 C)p 的值不等于 12345或者 n 的值小于 3 D)p 的值等于 12345或者 n 的值大于等于 3 9下面不能连续输出k 个星号的循环语句是C。A)for (w=k:w!=0;w-
4、)printf(*); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 111 B)w=k; while(w-!=0)printf(*); w+; C)w=k; dow-;printf(*);while(w!=0); D)for (w=k;w;-w)printf(*); 10以下循环的执行次数是C 。int i,j; for(i=0,j=1;i=j+1;i+=2,j-)printf(%dn,i); A)3 B)2 C)1 D)
5、0 二、写程序运行结果1#include void main() int n=0; while(n+=1) printf(%d,n); printf(%dn,n); 答案: 1 ,2 ,3 2#include void main() int i=10,j=0; do j=j+i; i-; while(i2); printf(%dn,j); 答案: 52 3#include void main() int s=0,k; for(k=5;k=0;k-) switch(k) case 1: case 5:s+;break; case 3: case 4:break; 名师资料总结 - - -精品资料
6、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 112 case 0: case 2:s+=2;break; printf(s=%dn,s); 答案: s=6 4#include void main ( ) int y=2,a=1; while (y-!=-1) do a*=y ; a+ ; while (y-) ; printf(%d,%dn,a,y); 答案: 1,-2 5#include void main ( ) int a=10,y=0 ; do
7、a+=2 ; y+=a ; if (y50) break ; while (a=14) ; printf(a=%d y=%dn,a,y) ; 答案: a=16 y=60 6#include void main( ) int x, i ; for( i=1,x=1; i=10) break; if(x%2=1) x+=5; continue; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 113 x-= 3; printf(%
8、dn, i ); 答案: 6 三、程序填空1下面程序接受键盘上的输入,直到按键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。#include void main ( ) char cx , front=0 ; while (【1】)!=n) if (cx!= ) putchar(cx) ; if (cx= ) if (【2】) putchar(cx); front=【3】 ; 答案:(1) cx=getchar() (2) front!=, ?(3) cx 2一个数如果恰好等于它的因子之和(除自身外),则称该数为“完全数”,例如:6=1+2+3,6 就是完全数。 下面程
9、序的功能是输出11000 的自然数中所有的“完全数”。#include void main( ) int m, n, s; for(m=2;m1000;m+) 【1】; for(n=1;n=m/2;n+) if(【2】) s+=n; if(【3】) printf(%dn, m); 答案:(1)s=0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 114 (2)m%n=0 (3) m=s 3下面程序的功能是从3 个红球、5 个
10、白球、6 个黑球中任意取出8 个球,且其中必须有白球,输出所有可能的方案。#include void main( ) int i,j,k; printf(n red white blackn); for(i=0;i=3;i+) for(【1】;j=5;j+) k=8-i-j; if(【2】) printf(%5d %5d %5dn,i,j,k); 答案:(1)j=1 (2) k=6 4一个球从 100m 高度自由落下,每次落地后反跳到原高度的一半,再落下,再反弹。求它在第10 次落地时,共经过多少米,第10 次反弹多高。#include void main() float s=100,h=【1
11、】; int n; for (【2】;n=10;n+) s=s+2*h; h=【3】; printf(%f n,s); printf(%f n,h); 答案:(1) 50 (2) n=2 (3) h/2 5求 S=a+aa+aaa+ , +aa,a 之值。其中 a 是一位数字, a、n 由键盘输入。例如:a=2,n=5时,S2+22+222+2222+22222 。#include void main() int a,n,i=1,s=0,t=0; scanf(%d%d,&a,&n); t=【1】; for(i=1; 【2】;i+) n 个名师资料总结 - - -精品资料欢迎下载 - - - -
12、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 115 s=s+t; t=【3】+a; printf(%dn,s); 答案:(1) a (2) i=n (3) t*10 四、程序改错1下面程序的功能是把输入的整数(最多不超过5 位)按输入顺序的反方向输出。例如,输入数据是3524,要求输出结果是4253。#include void main() int n,k; /* 错误语句 */ scanf(%d,&n); while(n!=0) k=k*10+n/10; /* 错误语句 */
13、 n=n/10; printf(%dn,k); 答案:(1) int n,k=0; (2) k=k*10+n%10; 2下面程序的功能是打印100 以内所有个位数为6 且能被 3 整除的数。#include void main() int i,j; for(i=0;i100;i+) /* 错误语句 */ j=i*10+6; if(j%3=0) continue; /* 错误语句 */ printf(%4d,j); 答案:(1)for(i=0;i10;i+) (2) j%3!=0 3编写程序,利用公式e=1+1/1!+1/2!+1/3!+.+1/n! 求出 e 的近似值,其中 n 的值由用户输入
14、(用于控制精确度)。#include void main() int i,n; double k=0,t=1; /* 错误语句 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 12 页 - - - - - - - - - 116 scanf(%lf,&n); for(i=1;i=n;i+) t=t*i; k=k+t; /* 错误语句 */ printf(%fn,k); 答案:(1) double k=1,t=1; (2) k=k+1/t; 4输入 m 和 k,输出
15、大于或等于整数 m 且紧靠 m 的 k 个素数。#include void main() int m,k, i; scanf(%d%d,&m,&k); while(k!=0) i=1; /* 错误语句 */ while(m%i!=0&im/2) k+; /* 错误语句 */ printf(%4d,m); m+; 答案:(1) i=2; (2) k-;5下面程序的功能是:用“梯形法”求522dxx的近似值。#include void main() int i,n; float a,b,s=0,h,s1; scanf(%d,&n); h=(5-2)/n; /*错误语句 */ a=2.0; for(
16、i=1;i=n;i+) b=a+h; s1=(a*a+b*b)*h/2; s=s+s1; a=b+h; /* 错误语句 */ printf(%fn,s); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - 117 答案:(1)h=(float)(5-2)/n; (2) a=a+h; 五、编写程序1编一程序,将2000年到 3000 年中的所有闰年年份输出并统计出闰年的总年数,要求每 10 个闰年放在一行输出。#include v
17、oid main() int year, k=0 ; for (year = 2000; year=3000; year+) if (year%4 = 0 & year%100 != 0) | year%400 = 0) k+; printf(%6d,year) ; if (k%10 = 0) printf(n); printf(nrun nian de zong nian shu shi %d,k) ; 2若有如下公式:试根据上述公式编程计算 的近似值(精确到10-6) 。#include #include void main() float pi,a,b; int i=1; a=0; b=
18、1; while(b=0.000001) b=1/(float)(i*i); a+=b; i+; pi=sqrt(6*a); printf(%fn,pi); 3用 09 之间不同的 3 个数构成一个 3 位数,统计输出共有多少种方法?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - 118 #include void main() int i=0, j=0, k=0,n=0; for (i =1; i 10; i+) for(j
19、=0;j10;j+) if (i=j) continue ; for (k=0;k10;k+) if (i=k | j=k ) continue ; n+ ; printf(%d,n) ; 4找出 199 之间的全部同构数。同构数是这样一组数:它们出现在平方数的右边。例如: 5 是 25右边的数, 25 是 625 右边的数, 5 和 25 都是同构数。#include void main() int i,j,k ; k=10; for (i=1; i100;i+) if (i=10) k=100; j = i*i ; if (j%k=i) printf(%dt,i) ; 5猴子吃桃问题。猴子
20、第1 天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了个。第 2 天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个。到第10 天再想吃时,只剩下一个桃子了。问第1天共摘多少个桃子?。#include void main() int day, x ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 12 页 - - - - - - - - - 119 x = 1; for (day = 1; day =9; day+) x = (x + 1)*
21、2 ; printf(di yi tian hou zi zhai le %d ge tao zi,x) ; 6打印以下图形#include void main() int i, j ,k; for (i=1; i=4; i+) for (j=1;j=4-i;j+) printf( ) ; printf(*) ; for (j=1;j=i-1;j+) printf( *) ; printf(n) ; 7百钱百鸡问题。公鸡五元一只,母鸡三元一只,鸡雏一元三只。若用100 元买100只鸡,可买公鸡、母鸡和鸡雏各多只?#include void main() int i , j , k ; for
22、(i = 0; i = 100/5; i+) for (j = 0; j = 100/3; j+) * * * * * * * * * * 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 12 页 - - - - - - - - - 120 for (k = 0; k = 100; k+) if (k%3 != 0) continue ; if (5*i + j*3 + k/3 = 100) & (i + j + k =100) printf(gong ji mu ji
23、 chu ji wei %d, %d, %d.n,i,j,k) ; 8一个正整数与 3 的和是 5 的倍数,与 3 的差是 6 的倍数,编写一个程序求符合条件的最小数。#include void main() int k=1; while( !( (k+3)%5 = 0) & (k-3)%6 =0) ) ) k+ ; printf(%d,k) ; 9从键盘输入 20 个整型数,统计其中负数个数并求所有正数的平均值。#include void main() int a, i , j =0, k=0 ; float s = 0 ; printf(qing shu ru 20 ge shu: ) ;
24、 for (i = 1; i = 20; i+) scanf(%d,&a) ; if(a 0) j+ ; s+=a ; s = s/(float)j ; printf(fu shu de ge shu shi %d.n,k) ; printf(zhe shu de ping jun zhi shi %f.n,s) ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - 121 10父亲今年 30 岁,儿子 6 岁,经过多少年后,父亲的年龄是儿子的两倍?#include void main() int i,j,k; i=30; j=6; k=0; while(!(i+k=(j+k)*2) k+; printf(%d,k) ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -