C语言学习知识习题集顺序选择循环Word下载.docx
- 文档编号:19933798
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:32
- 大小:38.57KB
C语言学习知识习题集顺序选择循环Word下载.docx
《C语言学习知识习题集顺序选择循环Word下载.docx》由会员分享,可在线阅读,更多相关《C语言学习知识习题集顺序选择循环Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
printf(%10d\n”,a);
结果占10列,但732占3列小于10列,所以左端补7个空格。
结果占10列,“-”表示把数值放到左端,732占3列小于10列,所以右端补7个空格。
732
732
□□□□□□□732/*□表示空格*/
732□□□□□□□
3.已知chara=‘\103’;
则语句printf(“%3d”,a);
执行后的输出结果为(□表示空格)。
A)□67B)’c’C)67□D)103
’\103’是一个转义字符,表示一个八进制数所代表的字符,转换为十进制为67。
printf(“%3d”,a);
把’\103’转换为十进制数输出,结果占3列。
但67占2列,小于要求的3列,所以左补空格,即□67。
C。
4.下列程序运行后结果是。
#definea3345.67
{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位(四舍五入)。
输出结果为3345.67。
输出结果为3345.7。
e格式符,以规范化指数的形式输出,所以printf(“%e\n”,a);
3.345670e+03。
3345.670000
3.345670e+03
3345.67
3345.7
□□3345.670/*(□表示空格)*/
3345.670□□
5.下列程序运行后结果是。
{
charx=0x227f;
printf(“%d\n”,x);
A)22B)127C)255D)8831
变量x被定义成字符型,字符型占1个字节,而x被赋值为一个4位16进制的值22ff,占16位。
所以227f高8位被舍去,x的值为7fH。
执行printf(“%d\n”,x);
即把x以有符号的十进制整数输出。
B。
6.设intb=0;
下列语句的输出结果是。
printf(“%d,%d”,++b,b--);
A)1,1B)1,0C)0,0D)0,-1
printf函数的执行顺序是由右到左,输出顺序是由左向右。
7.下列程序运行时,若从键盘输入:
123<
回车>
45678<
后结果是。
charc1,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”,&
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.设有定义inta;
floatb;
执行scanf(“%2d%f”,&
a,&
b);
语句时,若从键盘输入876543.0<
,a和b的值分别是。
scanf()可以指定输入数据所占的列数,系统自动按它截取所需数据。
%2d说明了a占两列,即为87,剩下的数字应该赋给b,但是6和5之间有一个空格,为输入终止符,所以543.0被舍弃,即b的值为6。
876。
9.已知a,b,c为int类型,执行scanf(“a=%d,b=%d,c=%d”,&
b,&
c);
后,若要使得a为1,b为2,c为3,则以下选项中正确的输入形式是()。
A)1,2,3B)a=1,b=2,c=3C)123D)a=1b=2c=3
scanf中如果在字符控制串中除了格式说明符以外还有其他字符,则在输入数据时应输入与这些相同的字符。
10.设有intx,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”,&
c);
B)scanf(“%d%d%d”,&
C)scanf(“%d%d%d”,a,b,c);
D)scanf(“%d%d%d”,&
a;
&
b;
2.下列程序执行后输出的结果是。
#include<
intx=‘d’;
printf(“%c”,’A’+(x-’a’+1));
A)GB)HC)ED)J
3.设整型变量a,b的值均为8。
printf(“%d,%d”,(a++,++b),b--);
的输出值是。
A)8,8B)8,7C)9,9D)8,9
4.若有以下程序段,执行后输出的结果是。
intm=100,n=0100;
printf(“%d,%o\n”,m,n);
A)100,100B)100,0100C)100,4D)100,04
5.有以下程序,其输出结果是。
{
floatx=1;
inty;
x++;
y=x+1;
printf(“x=%d,y=%f”,x,y);
A)x=2,y=3B)x=2,y=3.0C)x=2.0,y=3D)x=0,y=0.000000
6.有以下程序,其输出结果是。
#include<
voidmain()
inta;
charc=10;
floatf=100.0;
doublex;
a=f/=c*=(x=6.5);
printf(“%d,%d,%3.1f,%3.1f”,a,c,f,x);
A)1,65,1,6.5B)1,65,1.5,6.5C)1,65,1.0,6.5D)2,65,1.5,6.5
二、填空题
1.下列程序输出的结果是。
intx=7,y=5;
printf(“y=%d\n”,x%y);
}
2.下列程序输出的结果是。
floatd,f;
longk;
inti;
i=f=k=d=20/3;
printf(“%3d%3ld%5.2f%5.2f\n”,i,k,f,d);
3.下列程序输出的结果是:
。
intk=11;
printf(“k=%d,k8=%o,k16=%x\n”,k,k,k);
4.下列程序输出结果是:
。
#defineBL“!
”
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,则输入数据形式应该是。
intb,c;
floata;
scanf(“%f,%d,c=%d”,&
6.当输入为56789012345a72时,执行下列程序段后,变量i、j、x、y、c的值各是什么?
inti,j;
floatx,y;
charc;
scanf(“%2d%f%f%c%d”,&
i,&
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”,&
输入时用如下形式:
5,6
此处5后面是逗号,它与scanf()函数字符控制串中的逗号对应。
输入时只能输入逗号,不可用”空格”替代。
2)用%c格式输入字符时,空格、回车及转义字符均作为有效字符输入。
scanf(“%c%c%c”,&
若要使变量a,b,c的值分别为’A’、’B’、’C’,就只能输入ABC<
。
当使用多个scanf()
函数连续给多个字符型变量赋值时,注意输入的方法。
scanf(“%c”,&
c1);
c2);
如果要使得c1的值为’a’,c2的值为’b’,则正确输入方法为:
ab<
而不是a<
b<
3)遇到满足最大字段宽度或非法输入时认为结束,如:
”%2d”,只取两位数。
如:
scanf(“%d%c%f”,&
若输入:
1234a56p.78则a的值1234,b的值a,c的值56。
2.3.5实验指导
实验名称顺序结构程序设计
一、实验目的
1.掌握数据的输入输出的方法,能正确使用有关格式转换符;
2.熟悉顺序结构程序中语句的执行过程;
3.掌握顺序结构程序的设计方法
二、实验内容与要求
1.下列程序作用是依次输入2个整数,计算并输出这2个整数之差。
floata,b,c;
printf(“inputa,b”\n”);
scanf(“%d,%d”,&
c=a-b;
printf(“c=%d\n”,c);
①分析程序,若运行时输入:
100,60<
后预期结果是多少?
②上机运行该程序,查看程序运行结果是否符合题目要求。
如果不符合分析原因并修改程序,直至符合要求为止。
2.按下列公式计算并输出s的值,s=3/(a+b)2。
有下列程序:
inta,b;
floats;
s=3/(a+b)*(a+b);
/*有两个错误*/
printf(“s=%f\n”,s);
①根据题意修改上述程序,并进行调试,直到正确为止。
②在①的基础上,将scanf(“%d,%d”,&
改为scanf(“%d%d”,&
后再编译、链接、运行。
3.分析下列程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致并分析其原因。
#include"
stdio.h"
inta=-1;
unsignedb=65534;
printf("
%d,%o,%x,%u\n"
a,a,a,a);
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&
a|b
真(非0)
假(0)
真
(1)
在C语言中,关系表达式与逻辑表达式的结果用数据值“1”表示真、“0”表示假。
判断一个表达式时,非“0”即为真、“0”为假。
3.if语句的三种基本形式
用if语句可以构成选择结构。
它判断给定的条件是否满足,以决定执行某个分支程序段。
C语言的if语句有三种基本的实现形式:
if、if-else和if-elseif形式。
4.switch语句
C语言提供了另一种用于多分支选择的switch语句,其一般形式为:
switch(表达式)
{case常量表达式1:
语句1
case常量表达式2:
语句2
……
case常量表达式n:
语句n
default:
语句n+1}
其表达式应为整型、字符型、枚举型表达式。
它的语意是:
计算表达式的值,并依次与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句。
如果表达式与所有的case后的常量表达式均不相同时,则执行default后的语句。
2.4.2经典例题分析
1.若有inti;
则执行语句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&
=9’D)c>
=‘9’
在C语言中要表达a>
b>
c应该这样写a>
b&
c,因为c为数字字符,应在’0’~’9’之间,所以应为:
c>
=‘9’。
D。
3.已知intx=1,y=2,z=3;
则逻辑表达式x<
y||++z运算后,z的值是。
C语言在计算逻辑表达式时,如果在某一步已得到了整个表达式的结果,则后面的部分将不再计算。
对于&
表达式,若已得到一个操作数为0,则后面的操作数不再计算。
对于||表达式,若已得到一个操作数为1,则后面的操作数不再计算。
本题中,1<
2显然为真即为1,所以++z不需要再运算了,z的值没改变,还是为3。
3。
4.下列程序运行的结果是:
。
charc=‘d’;
if(‘m’<
=‘z’)printf(“YES”);
elseprintf(“NO”);
这是if-else形式,格式为:
if(表达式)语句1
else语句2
其语义是:
如果表达式的值为真,则执行语句1,否则执行语句2。
本题中,表达式’m’<
=‘z’结果为真,所以执行printf(“YES”);
YES。
5.if(表达式)语句,其中”表达式”。
A)必须是逻辑表达式B)必须是关系表达式
C)必须是逻辑表达式和关系表达式D)可以是任意合法的表达式
表达式一般是关系表达式或逻辑表达式,用于描述选择结构的条件,但也可以是其它类型的表达式,只要其合法,在其值非0时都视为真,所以其它表达式也可以做if语句的判断条件。
6.下列程序运行结果是:
inta=1;
if(a)printf(“YES”);
if(表达式)中的”表达式”可以是任意合法的,其实质是判断表达式是真还是假。
本题a的值为1,if(a)printf(“YES”);
的含义是判断a是否为真(非0),如果为真则输出”YES”,否则输出”NO”。
7.C语言对于嵌套的if语句规定else总是匹配。
A)与最外层的ifB)与之前最近的且未配对的if
C)与之前最近的不带else的ifD)与最近的{}之前的if
在C语言中,为了避免语句造成二义性,规定,else总是与它前面最近的未配对的if配对。
8.下列程序运行结果是:
intx=1,y=2,z=3;
if(x<
y)
if(y<
z)printf(“%d”,++z);
elseprintf(“%d”,++y);
printf(“%d\n”,x++);
由if-else匹配规则可知,else与if(y<
z)配对,也就是说当x<
y成立时,y<
z不成立,执行printf(“%d”,++y);
y<
z成立,则执行printf(“%d”,++z);
因为x=1,y=2,很显然x<
y成立,接着判断y<
z是否成立,很显然是成立的,那么直接执行printf(“%d\n”,++z);
然后执行printf(“%d\n”,x++);
41。
9.若有定义:
floatx=1.5;
inta=1,b=3,c=2;
则正确的switch语句是。
A)switch(x)B)switch((int)x);
{{
case1.0:
printf(“*\n”);
case1:
case2.0:
printf(“**\n”);
case2:
}}
C)switch(a+b)D)switch(a+b)
{{
case1:
case1:
case2+1:
casec:
}}
{
case常量表达式1:
case常量表达式2:
case常量表达式n:
语句n+1
表达式一般应为整型、字符型、枚举型表达式。
A选项中case后是浮点型,应为一个整型、字符型或枚举型常量表达式;
B选项switch((int)x);
中多了分号,D选项casec:
中c是一个变量,应为一个常量表达式。
10.下列程序执行后结果是。
voi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 知识 习题集 顺序 选择 循环