类型C语言学习知识习题集-顺序,选择,循环.doc

收藏

编号:2560533    类型:共享资源    大小:178.19KB    格式:DOC    上传时间:2020-04-20
  
8
金币
分享到微信 分享到微博 分享到QQ空间
关 键 词:
语言 学习 知识 习题集 顺序 选择 循环
资源描述:
-! 2.3顺序结构程序设计 2.3.1 要点导读 1.printf() 与scanf()语句。 printf() 与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。它们位于stdio.h库文件中。 2.字符数据的输入输出。 最简单的字符输入输出函数是getchar()和putchar()。两者分别从键盘读一个字符或向显示屏写一个字符。 2.3.2 经典例题分析 1.下列程序运行后输出的结果是 。 #include void main() { int a=0,b=0; a=10; b=20; printf(“a+b=%d”,a+b); } 分析:printf( )是输出函数,它的括号内由两部分组成: 1)控制字符串,是用双引号括起来的字符串,它包括两种信息: (1) 格式说明。由”%”和格式字符组成,如:%d、%f、%c等。它的作用是将输出的数据转换成指定的格式输出。 (2) 普通字符。需要原样输出的字符。 2)”输出表列”是需要输出的一些数据,可以是表达式。 题目中a的值是10,b的值是20,在 中,”a+b= “是普通字符,需原样输出。输出表列是一个表达式,它的结果以整型输出。 答案:a+b=30。 2.下列程序运行后输出的结果是 。 #include void main() { int a=732; printf(“%d\n”,a); printf(“%2d\n”,a); printf(“%10d\n”,a); printf(“%-10d\n”,a); } 分析:d格式符,用来输出十进制整数。其中%d,按整型数据的实际长度输出。%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。 printf(“%d\n”,a);把a的值按原样输出:732。printf(“%2d\n”,a);结果占2列,但732占3列大于2列,所以按实际位数输出:732。printf(%10d\n”,a);结果占10列,但732占3列小于10列,所以左端补7个空格。printf(“%-10d\n”,a); 结果占10列,“-”表示把数值放到左端,732占3列小于10列,所以右端补7个空格。 答案: 732 732 □□□□□□□732 /*□表示空格*/ 732□□□□□□□ 3.已知char a=‘\103’;则语句printf(“%3d”,a);执行后的输出结果为(□表示空格) 。 A)□67 B)’c’ C)67□ D)103 分析:’\103’是一个转义字符,表示一个八进制数所代表的字符,转换为十进制为67。printf(“%3d”,a);把’\103’转换为十进制数输出,结果占3列。但67占2列,小于要求的3列,所以左补空格,即□67。 答案:C。 4.下列程序运行后结果是 。 #include #define a 3345.67 void main() { printf(“%f\n”,a); printf(“%e\n”,a); printf(“%4.2f\n”,a); printf(“%3.1f\n”,a); printf(“%10.3f\n”,a); printf(“%-10.3f\n”,a); } 分析:f格式符,用来输出实数,以小数形式输出,小数点后输出6位。所以printf(“%f\n”,a);输出结果为3345.670000。 %m.nf是指,要输出的数占m列,同时小数点保留n位(四舍五入),如果输出的数大于m,则原样输出,同时小数点保留n位(四舍五入)。如果小于m,则左补空格,同时小数点保留n位(四舍五入)。printf(“%4.2f\n”,a);输出结果为3345.67。 printf(“%3.1f\n”,a);输出结果为3345.7。 e格式符,以规范化指数的形式输出,所以printf(“%e\n”,a);3.345670e+03。 答案:3345.670000 3.345670e+03 3345.67 3345.7 □□3345.670 /*(□表示空格)*/ 3345.670□□ 5.下列程序运行后结果是 。 #include void main() { char x=0x227f; printf(“%d\n”,x); } A) 22 B) 127 C) 255 D)8831 分析:变量x被定义成字符型,字符型占1个字节,而x被赋值为一个4位16进制的值22ff,占16位。所以227f高8位被舍去,x的值为7fH。执行printf(“%d\n”,x);即把x以有符号的十进制整数输出。 答案:B。 6.设int b=0;下列语句的输出结果是 。 printf(“%d,%d”,++b,b--); A) 1,1 B) 1,0 C) 0,0 D) 0,-1 分析:printf函数的执行顺序是由右到左,输出顺序是由左向右。 答案:C。 7.下列程序运行时,若从键盘输入:123<回车>45678<回车>后结果是 。 #include void main() { char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4); c5=getchar( ); c6=getchar( ); putchar(c1); putchar(c2); printf(“%c%c\n”,c5,c6); } 分析:scanf(格式控制,地址表列)的功能是:从键盘读取输入的信息。其中”格式控制”的含义同printf函数;”地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。其scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4)的作用是:按照c1,c2,c3,c4在内存的地址将c1,c2,c3,c4的值存进去。由于”%c”表示按字符形式输入数据,所以”回车符”作为一个字符,输入有效。getchar( )函数的作用从终端输入一个字符。putchar( )函数的作用是向终端输出一个字符。所以c1=1、c2=2、c3=3、c4=回车,c5=4、c6=5。 答案:1245。 8.设有定义int a;float b;执行scanf(“%2d%f”,&a,&b);语句时,若从键盘输入876 543.0<回车>,a和b的值分别是 。 分析:scanf()可以指定输入数据所占的列数,系统自动按它截取所需数据。%2d说明了a占两列,即为87,剩下的数字应该赋给b,但是6和5之间有一个空格,为输入终止符,所以543.0被舍弃,即b的值为6。 答案:87 6。 9.已知a,b,c为int类型,执行scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);后,若要使得a为1,b为2,c为3,则以下选项中正确的输入形式是( )。 A) 1,2,3 B) a=1,b=2,c=3 C) 1 2 3 D) a=1 b=2 c=3 分析:scanf中如果在字符控制串中除了格式说明符以外还有其他字符,则在输入数据时应输入与这些相同的字符。 答案:B。 10.设有int x,y;scanf(“%d%*d%d”,&x,&y);从键盘输入数据10□20□30<回车>后,y的值是 。 分析:%*d表示跳过。所以y的值是30。 答案:30。 2.3.3 习题 一、选择题 1.设a、b、c为整型变量,若从键盘给a、b、c输入数据,则正确的输入语句是 。 A)scanf(“%f%f%f”,&a,&b,&c) ; B) scanf(“%d%d%d”,&a,&b,&c); C) scanf(“%d%d%d”,a,b,c); D) scanf(“%d%d%d”,&a;&b;&c); 2.下列程序执行后输出的结果是 。 #include void main() { int x=‘d’; printf(“%c”,’A’+(x-’a’+1)); } A) G B) H C) E D) J 3.设整型变量a,b的值均为8。printf(“%d,%d”,(a++,++b),b--);的输出值是 。 A)8,8 B)8,7 C)9,9 D)8,9 4.若有以下程序段,执行后输出的结果是 。 int m=100,n=0100; printf(“%d,%o\n”,m,n); A) 100,100 B) 100,0100 C) 100,4 D) 100,04 5.有以下程序,其输出结果是 。 #include void main() { float x=1; int y; x++; y=x+1; printf(“x=%d,y=%f”,x,y); } A) x=2,y=3 B) x=2,y=3.0 C) x=2.0,y=3 D) x=0,y=0.000000 6.有以下程序,其输出结果是 。 #include void main() { int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d,%d,%3.1f,%3.1f”,a,c,f,x); } A) 1,65,1,6.5 B) 1,65,1.5,6.5 C) 1,65,1.0,6.5 D) 2,65,1.5,6.5 二、填空题 1.下列程序输出的结果是 。 #include void main() { int x=7,y=5; printf(“y=%d\n”, x%y); } 2.下列程序输出的结果是 。 #include void main() { float d,f; long k; int i; i=f=k=d=20/3; printf(“%3d%3ld%5.2f%5.2f\n”,i,k,f,d); } 3.下列程序输出的结果是: 。 #include void main() { int k=11; printf(“k=%d,k8=%o,k16=%x\n”,k,k,k); } 4.下列程序输出结果是: 。 #include #define BL “ahpu.edu.cn!” void main() { printf(“%2s\n”,BL); printf(“%15s\n”,BL); printf(“%15.4s\n”,BL); printf(“%-15.4s\n”,BL); } 5.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据形式应该是 。 int b,c;float a; scanf(“%f,%d,c=%d”,&a,&b,&c); 6.当输入为56789 012345a72时,执行下列程序段后,变量i、j、x、y、c的值各是什么? int i,j; float x,y; char c; scanf(“%2d%f%f%c%d”,&i,&x,&y,&c,&j); 三、编程题 1.已知x=3.2,y=7,z=2,计算y/3*x-2的值。 2.输入一个华氏温度,要求输出摄氏温度(结果保留2位)。公式为c=5/9*(f-32)。 3.从键盘输入一个小写字母,用大写形式输出该字母。 4.把16进制数12a以10进制形式输出。 5.输入两个整数,将其值交换。 2.3.4 本节易错知识点 本节阐述了printf()、scanf()、putchar()和getchar()的具体用法。 对于scanf()的用法应注意以下几点: 1) 如果在字符控制串中除了格式说明符以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。例如:scaf(“%d,%d”,&a,&b);输入时用如下形式: 5,6 此处5后面是逗号,它与scanf()函数字符控制串中的逗号对应。输入时只能输入逗号,不可用”空格”替代。 2)用%c格式输入字符时,空格、回车及转义字符均作为有效字符输入。例如: scanf(“%c%c%c”,&a,&b,&c); 若要使变量a,b,c的值分别为’A’、’B’、’C’,就只能输入ABC<回车>。当使用多个scanf() 函数连续给多个字符型变量赋值时,注意输入的方法。例如: scanf(“%c”,&c1); scanf(“%c”,&c2); 如果要使得c1的值为’a’,c2的值为’b’,则正确输入方法为:ab<回车>,而不是a<回车>b<回车>。 3) 遇到满足最大字段宽度或非法输入时认为结束,如:”%2d”,只取两位数。如:scanf(“%d%c%f”,&a,&b,&c);若输入:1234a56p.78则a的值1234,b的值a,c的值56。 2.3.5 实验指导 实验名称 顺序结构程序设计 一、实验目的 1.掌握数据的输入输出的方法,能正确使用有关格式转换符; 2.熟悉顺序结构程序中语句的执行过程; 3.掌握顺序结构程序的设计方法 二、实验内容与要求 1.下列程序作用是依次输入2个整数,计算并输出这2个整数之差。 #include void main() { float a,b,c; printf(“input a,b”\n”); scanf(“%d,%d”,&a,&b); c=a-b; printf(“c=%d\n”,c); } ① 分析程序,若运行时输入: 100,60 <回车>后预期结果是多少? ② 上机运行该程序,查看程序运行结果是否符合题目要求。如果不符合分析原因并修改程序,直至符合要求为止。 2.按下列公式计算并输出s的值,s=3/(a+b)2。有下列程序: #include void main() { int a,b; float s; scanf(“%d,%d”,&a,&b); s=3 /(a+b)*(a+b); /*有两个错误*/ printf(“s=%f\n”,s); } ① 根据题意修改上述程序,并进行调试,直到正确为止。 ② 在①的基础上,将scanf(“%d,%d”,&a,&b);改为scanf(“%d%d”,&a,&b);后再编译、链接、运行。 3.分析下列程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致并分析其原因。 #include "stdio.h" void main() { int a=-1; unsigned b=65534; printf("%d,%o,%x,%u\n",a,a,a,a); printf("b=%d",b) ; } 4.编程并上机调试运行 1) 设圆半径为r=1.5,求圆周长和面积。要求用scanf函数输入数据,输出时取小数点后两位。 2) 输入一个3位十进制整数,分别输出百位、十位以及个位上的数。 3) 从键盘输入一个带2位的实数,将其整数部分和小数部分分离后输出。例如:输入321.54,输出321.54=321+0.54。 4) 用getchar函数读入两个字符,然后分别用putchar和printf函数输出这两字符。 2.4 选择结构程序设计 2.4.1 要点导读 1.关系运算符与关系表达式 关系运算是逻辑运算中比较简单的一种。它的实质是两个值之间的”比较运算”,其结果只有两种:”真”、”假”。因此关系表达式的运算结果也只有两种:”真”、”假”。 C语言提供6种关系运算符:>、<、>=、==和!=。在这里>、<、>=、优先级相同,==和!=优先级相同。前4种的优先级高于后两者。 2.逻辑运算符与逻辑表达式 逻辑运算符可以将多个关系表达式或逻辑量连接起来,构成逻辑表达式。C语言里提供了3种逻辑运算符:!、&&、||。不同逻辑运算符进行运算所得的结果如下表: a b !a !b a&&b a|b 真(非0) 真(非0) 假(0) 假(0) 真(1) 真(1) 真(非0) 假(0) 假(0) 真(1) 假(0) 真(1) 假(0) 真(非0) 真(1) 假(0) 假(0) 真(1) 假(0) 假(0) 真(1) 真(1) 假(0) 假(0) 在C语言中,关系表达式与逻辑表达式的结果用数据值“1”表示真、“0”表示假。判断一个表达式时,非“0”即为真、“0”为假。 3.if语句的三种基本形式 用if语句可以构成选择结构。它判断给定的条件是否满足,以决定执行某个分支程序段。C语言的if语句有三种基本的实现形式:if、if-else和if-else if形式。 4.switch语句 C语言提供了另一种用于多分支选择的switch语句,其一般形式为: switch (表达式) { case 常量表达式1:语句1 case常量表达式2:语句2 …… case常量表达式n:语句n default: 语句n+1 } 其表达式应为整型、字符型、枚举型表达式。它的语意是:计算表达式的值,并依次与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句。如果表达式与所有的case后的常量表达式均不相同时,则执行default后的语句。 2.4.2 经典例题分析 1.若有int i;则执行语句i=4>3>2;后,i的值为 。 分析:这是一个关系表达式,在这个表达式中有’>‘和’=‘,可知’>‘的优先级高于’=‘,且’>‘的结合性是→,所以,先判断4>3,显然是为真的,即表达式的值为1。再判断1是否大于2,显然不成立为假,即为0,然后把0赋给i,所以i的值为0。 答案:0。 2.若变量c为char类型,下列选项中能正确判断出c为数字字符的表达式是 。 A )’0’<=c<=‘9’ B) c>=‘0’&&c<=‘9’ C) c>=0&&c<=9’ D) c>=‘0’&c<=‘9’ 分析:在C语言中要表达a>b>c应该这样写a>b&&b>c,因为c为数字字符,应在’0’~’9’之间,所以应为:c>=‘0’&&c<=‘9’。 答案:D。 3.已知int x=1,y=2,z=3;则逻辑表达式x void main() { char c=‘d’; if(‘m’ void main() { int a=1; if(a) printf(“YES”); else printf(“NO”); } 分析:if(表达式)中的”表达式”可以是任意合法的,其实质是判断表达式是真还是假。本题a的值为1,if(a) printf(“YES”); else printf(“NO”);的含义是判断a是否为真(非0),如果为真则输出”YES”,否则输出”NO”。 答案:YES。 7.C语言对于嵌套的if语句规定else 总是匹配 。 A)与最外层的if B)与之前最近的且未配对的if C)与之前最近的不带else的if D)与最近的{ }之前的if 分析:在C语言中,为了避免语句造成二义性,规定,else总是与它前面最近的未配对的if配对。 答案:B。 8.下列程序运行结果是: 。 #include void main() { int x=1,y=2,z=3; if(x void main() { int a=16,b=21,m=0; switch(a%3) { case 0: m++; break; case 1: m++; switch(b%2) { default: m++; case 0: m++;break; } } printf(“%d”,m); } 分析:switch语句的意思为:计算表达式的值,并依次与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句。如果表达式与所有的case后的常量表达式均不相同时,则执行default后的语句。break语句用于跳出switch语句。本题a%3值为1,执行case 1:m++;以及后面的语句。b%2值为1,执行default: m++;以及后面的语句。 答案:3。 2.4.3 习题 一、选择题 1.下列程序段运行后结果是 。 int a,b,c; a=1;b=2;c=3; if(a>b) c=a;b=c; printf(“a=%d,b=%d,c=%d”,a,b,c); A) a=1,b=3,c=3 B) a=1,b=3,c=2 C) a=1,b=2,c=3 D) a=2,b=1,c=1 2.下列程序运行后的结果是 。 #include void main() { int a=1,b=2,c=3; if(a++==1&&(++b==3&&c++==3)) printf(“%d,%d,%d\n”,a,b,c); } A) 1,2,3 B) 2,3,5 C) 2,2,3 D) 2,3,4 3.与y=(x>0?1:x<0?-1:0)的功能相同的if语句是 。 A) if(x>0) y=1; B) if(x) else if(x<0) y=-1; if(x>0) y=1; else y=0; else if(x<0) y=-1; C) y=-1; D) y=0; if(x) if(x>=0) if(x>0) y=1; if(x>0) y=-1; else if(x==0) y=0; else y=-1; else y=-1; 4.有以下程序,执行后结果是 。 #include void main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf(“%d\n”,d); else if((c-1)>=d)==1) printf(“%d\n”,d+1); else printf(“%d\n”,d+2); } A) 2 B) 3 C) 4 D) 5 5.若有定义:float w; int a,b;char c;则合法的switch语句是 。 A) switch(b) B) switch(a); { { case 1.0:printf(“*\n”); case 1 printf(“*\n”); case 2.0:printf(“**\n”); case 2 printf(“**\n”); } } C) switch(b) D) switch(w) { { case 1:printf(“*\n”); case 1:printf(“*\n”); case 1+2:printf(“**\n”); case c:printf(“**\n”); } } 6.下列程序运行后的结果是 。 #include void main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf(“%d,%d\n”,a,b); } A) 2,1 B) 1,1 C) 1,0 D) 2,2 二、填空题 1.能正确表述逻辑关系20 void main() { int a; scanf(“%d”,&a); if(a>50) printf(“%d”,a); if(a<=58) printf(“%d”,a); if(a>=58) printf(“%d”,a); } 4.下列程序运行后的结果是 。 #include void main() { int x=10,y=20,t=0; if(x==y) t=x;x=y;y=t; printf(“%d,%d\n”,x,y); } 5. 当int a=1,b=3,c=5,d=4;时,执行下列一段程序后,x的值: 。 if(a void main() { int x=1,y=0,a=1,b=0; switch(x) { case 1:switch(y) { case 0:a++; case 1:b++;break; } case 2:a++;b++;break; } printf(“a=%d,b=%d\n”,a,b); } 三、编程题 1.要求输入三个数,输出其中最大值。 2.由键盘输入3个数,若输入的这3个数可以构成三角形,则计算以这3个数为边长的三角形周长;如果不能,则输出提示错误信息。 3.从键盘上输入一个整数判断其奇偶以及正负。 4.判断方程ax2+bx+c=0的根的个数。 5.从键盘输入表示年份的整数,判断是否为闰年。判断闰年的方法是:能被400整除的年是闰年;或者凡是能被4整除但不能被100整除的年是闰年。 2.4.4 本节易错知识点 本节阐述了逻辑表达式、if、if-else、if-else和switch语句的具体用法。 1.在逻辑表达式运算中应注意,如果在某一步已得到了整个表达式结果,则后面的部分将不再计算。例如:c=b&&++a;如果这里b为0,那么++a将不再执行,仍为原值。 2.在if语句中,应该注意if语句中的表达式可以为所有的合法的表达式。例如: int a=1; if(a=0) printf(“Yes”); else printf(“No”); 3.在if语句3种形式中,如果要想在满足条件是执行一组语句,必须使用{}括起来一个复合语句,但在{}后面不能加分号。 4.在使用switch()语句时应注意:在case后的各个常量表达式值都不能相同;case后允许有多个语句,可以不用{ }括起来;若每个分支后,都有break语句,则各case和default子句先后顺序可以变动而不影响程序结果;default子句可以省略不用。 2.4.5 实验指导 实验名称 选择结构程序设计 一、实验目的 1.学会正确使用关系运算符和关系表达式; 2.学会正确使用逻辑运算符和逻辑表达式以及关系表达式等; 3.熟练掌握if语句和switch语句; 4.熟悉选择结构程序中的语句执行过程,掌握选择结构程序设计的方法。 二、实验内容与要求 1.编写程序,判断从键盘上输入的一个字符,并按下列要求输出。 1) 若该字符是数字,输出字符串”0-9”; 2) 若该字符是大写或者小写字母,输出字符串”A-z”; 3) 若该字符是其他字母,输出”!,@,……”。 #include void main() { char c; scanf(“%c”,&c); if( ) printf(“0-9\n”); else if( ) printf(“A-z”); printf(“!,@,……\n”);} 完善上述源程序,对源程序进行编译、连接,运行程序,并写出结果。 序号 输入数据 预期结果 运行结果 1 3 2 G 3 # 2. 编程并上机调试运行 1)给出一个不多于4位的正整数,求它是几位数? 2)给出一个百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。90分及以上为’A’,
展开阅读全文
提示  得力文库 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:C语言学习知识习题集-顺序,选择,循环.doc
链接地址:https://www.deliwenku.com/p-2560533.html
关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com  

收起
展开