C语言程序设计第四章练习题及答案(高职).docx
习题41.选择题1)有如下程序main() int a=2,b=-l,c=2;if(a<b)if(b<0) c=0;else c+;printf("%dn",c);)该程序的输出结果是()A)0 B) 1C)2D)32)对dowhile语句错误的说法是:A)可构成多重循环结构 B)循环次数不可能为0C)循环次数可能为0 D)先执行后判断3)任何复杂的程序,都是由 构成的。A)分支结构、顺序结构、过程结构B)循环结构、分支结构、过程结构C)顺序结构、循环结构、分支结构D)循环结构、分支结构4)设有intx,y;以下语句判断x和y是否相等,正确的说法是该语句if (x=y) printf(" x is equal to y.");A)语法错 B)不能判断x和y是否相等C)编译出错 D)能判断x和y是否相等5)C语言中规定,if语句的嵌套结构中,else总是与 配对。A)与最近的if配套 B)与第一个if配套C)按缩进位置相同的if配套 D)与最近的且尚未配对的if配套6)以下有关switch语句的正确说法是 oA) break语句是语句中必须的一部分B)在switch语句中可以根据需要使用或不使用break语句C) break语句在switch语句中不可以使用D)在switch语句中的每一个case都要用break语句7)当执行以下程序时,o#include<stdio.h>void main()(int a;while(a=5)printf(n%d)A)循环体将执行5次 B)循环体将执行0次C)循环体将执行无限次 D)系统会当机。8)以下if语句错误的是 oif (x<y) x+; y+; else x; y;if(x) x+ = y;if(x<y);if (x!=y) scanf (n %dn,&x); else x+;9)以下说法错误的是 odowhile语句与while语句的区别仅是关键词“while”出现的位置不同while语句是先进行循环条件判断,后执行循环体的A) dowhile是先执行循环体,后进行循环条件判断while> dowhile和for语句的循环体都可以是空语句10)当执行以下程序时,o #include<stdio.h> void main()int a;while(a=5) printf(n%dA)循环体将执行5次C)循环体将执行无限次2.填空题1)有程序段:int i=0,a=l;while(i<9)i+;+a;while(a=5) printf(n%dA)循环体将执行5次C)循环体将执行无限次2.填空题1)有程序段:int i=0,a=l;while(i<9)i+;+a;A)循环体将执行5次C)循环体将执行无限次2.填空题1)有程序段:int i=0,a=l;while(i<9)i+;+a;A)循环体将执行5次C)循环体将执行无限次2.填空题1)有程序段:int i=0,a=l;while(i<9)i+;+a;A)循环体将执行5次C)循环体将执行无限次2.填空题1)有程序段:int i=0,a=l;while(i<9)i+;+a;B)循环体将执行。次D)系统会当机。其中循环条件是循环控制变量是循环体是,修改循环条件的语句 是,该循环条件将执行一次,结束循环时,i的值是一,a的值是。2)有程序段:int i=0,a=l;for(i=l;i<10;i+)a+;其中循环条件是,循环控制变量是,循环体是,修改循环条件的语句 是,该循环条件将执行一次,结束循环时,i的值是a的值是 3)以下程序的输出结果是.#includemain() int n= 12345,d;while(n!=O) d=n%10; printf(H%d,d); n/=10;4)以下程序判断输入的整数能否被3或7整除。main() int x,f=O;scanf( "d;&x);if 3 )(2)if(4=1) printf("YES'n"); else printff'NO'n");).程序阅读题1)阅读以下程序,若输入60<Enter键,写出程序运行结果。#include<stdio.h>void main() int x;scanf(M%d &x);if (x>=60)printf(npassn);elseprint-“fail");)2)阅读以下程序,若输入5<Enter键,,写出程序运行结果。#include <stdio.h>int main() int i, n;double fact;scanf(H%dn, &n);fact二 1;for(i=l;i<=n;i+)fact*二i;printf(n%.Ofnn, fact);.程序设计题1)输入1个整数,输出它的绝对值。2)编一程序,统计从键盘输入一行字符的个数。3)题目:打印出如下图案(菱形)*kJ>*4*.卜*4)编写程序,用穷举法输出100以内的素数。5)求 1! -2! +3! -4!+49!一50!的和。6)输入1。个字符,分别统计出其中空格或Enter键、数字和其他字符的个数。第4章 习题参考答案1、选择题 C (4) B (5) D(8) A (9) A (10) C(DC(2)C(6) B(7) C2、填空题(1) i<9> i、i+;+a;、i+;、9> 10(2)_i<10_>、a±±> i±±> 2、10o54321 ox%3=0|x%7=0、f=l3.程序阅读题 (l)pass (2) 1204、程序设计题(1)参考程序:#include <stdio.h> int main(void)(int number;printf(nEnter a number: ");scanf("d",&number);if(number < 0)(number = -number;)printf(nThe absolute value is %d.nn, number);return 0;)Enter a number: 10The absolute value is 10.Enter a number: -300The absolute value is 300.(2)参考程序:#include<stdio.h> void main()int n=0;printf(ninput a stringnn);while(getchar()! =!n!) n+;printf("%d",n);(3) 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规 律,利用双重for循环,第一层控制行,第二层控制列。2.程序源代码:main()(int i, j, k.for(i=0. i<=3. i)(for(j=0. jv=2-i. j)printf(n n).for(k=0. k<=2*i. k)printf("*").printf("n").)for(i=0. i<=2. i)(for(j=0. j<=i. j )printf(" ").for(k=0. k<=4-2*i. k)printf("*").printf(nnn).(4)参考程序:#include<stdio.h>void main()(int n,i;for(n=2; n<=100; n+)(for(i=2; i<n; i+)if(n%i=0) break;if(i>=n) printf(nt%dn);(5)参考程序:#include <stdio.h>main()(double sum = 0;double tmp = 1;int mul = 1;int i;for(i=l;i<=50;i+)(tmp *= i;sum += tmp*mul;mul *= -1;)printf(Hl!-2!+3!-4!+.+49!-50! = %e",sum);)(6)参考程序:/*输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。*/#include <stdio.h>int main(void)(int blank, digit, i, other; /*定义3个变量分别存放统计结果*/ char ch;blank = digit = other = 0; /*置存放统计结果的3个变量的初值为零*/printf(nEnter 10 characters: n);/* 输入提示 */for(i = 1; i <= 10; i+)/* 循环执行了 10 次 */ch = getchar();/* 输入一个字符 */*在switch语句中灵活应用break */switch (ch) case '':/*语句段为空,请注意空格的表示*/case 'n':blank +; /* 2个常量表达式"和VT共用该语句段*/ break;/* 跳出 switch 语句 */case '0': case T : case 2 : case 3': case 4 :case 5 : case 6 : case 7 : case 8 : case 9 :digit +;/* 10个常量表达式10'19'共用该语句段*/break;/* 跳出 switch 语句 */default:other +;/*累加其他字符*/break;/* 跳出 switch 语句 */printf(Hblank=%d, digit=%d, other=%dnn, blank, digit, other); return 0;)