C语言习题顺序选择循环.docx
- 文档编号:26074250
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:39
- 大小:40.97KB
C语言习题顺序选择循环.docx
《C语言习题顺序选择循环.docx》由会员分享,可在线阅读,更多相关《C语言习题顺序选择循环.docx(39页珍藏版)》请在冰豆网上搜索。
C语言习题顺序选择循环
2。
3顺序结构程序设计
2.3。
1要点导读
1。
printf()与scanf()语句。
printf()与scanf()语句就是最通用得输入输出函数,它们可以在程序设计者得控制下以各种格式分别实现数据得输出与输入操作、它们位于stdio.h库文件中。
2。
字符数据得输入输出。
最简单得字符输入输出函数就是getchar()与putchar()、两者分别从键盘读一个字符或向显示屏写一个字符。
2。
3。
2经典例题分析
1.下列程序运行后输出得结果就是 。
#include<stdio.h〉
voidmain()
{
inta=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 <stdio.h〉
voidmain()
{
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、已知chara=‘\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 a3345。
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 〈stdio、h〉
voidmain()
{
charx=0x227f;
printf(“%d\n”,x);
}
A)22B) 127ﻩﻩC)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,1ﻩB)1,0ﻩC)0,0D)0,-1
分析:
printf函数得执行顺序就是由右到左,输出顺序就是由左向右、
答案:
C。
7。
下列程序运行时,若从键盘输入:
123〈回车>45678<回车>后结果就是 。
#include<stdio、h>
voidmain()
{
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”,&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、设有定义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",&a,&b,&c);后,若要使得a为1,b为2,c为3,则以下选项中正确得输入形式就是()。
A)1,2,3B)a=1,b=2,c=3ﻩﻩC)12 3ﻩﻩD) a=1b=2c=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() { intx=‘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,8B)8,7ﻩﻩC)9,9ﻩﻩD)8,9 4.若有以下程序段,执行后输出得结果就是ﻩﻩ。 intm=100,n=0100; printf(“%d,%o\n”,m,n); A)100,100ﻩﻩB)100,0100ﻩC) 100,4ﻩD)100,04 5、有以下程序,其输出结果就是ﻩﻩ。 #include voidmain() { floatx=1; inty; x++; y=x+1; printf(“x=%d,y=%f”,x,y); } A)x=2,y=3B)x=2,y=3.0ﻩC)x=2.0,y=3D)x=0,y=0。 000000 6。 有以下程序,其输出结果就是ﻩ。 #include〈stdio。 h〉 voidmain() { int a; charc=10; floatf=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。 5D)2,65,1。 5,6。 5 二、填空题 1、下列程序输出得结果就是 。 #include<stdio.h> voidmain() { intx=7,y=5; printf(“y=%d\n”,x%y); } 2.下列程序输出得结果就是 。 #include〈stdio。 h> void main() { float d,f; long k; inti; i=f=k=d=20/3; printf(“%3d%3ld%5。 2f%5.2f\n”,i,k,f,d); } 3、下列程序输出得结果就是: 。 #include<stdio。 h> voidmain() { intk=11; printf(“k=%d,k8=%o,k16=%x\n",k,k,k); } 4。 下列程序输出结果就是: ﻩ、 #include<stdio、h> #defineBL“ahpu、edu.cn! ” voidmain() { 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”,&a,&b,&c); 6.当输入为56789012345a72时,执行下列程序段后,变量i、j、x、y、c得值各就是什么? int i,j; floatx,y; charc; 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〈stdio、h> voidmain() { floata,b,c; printf(“inputa,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 h> voidmain() { inta,b; floats; 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" voidmain() { inta=-1; unsignedb=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、若有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&&c<=9’D) c〉=‘0’&c〈=‘9’ 分析: 在C语言中要表达a〉b>c应该这样写a〉b&&b>c,因为c为数字字符,应在'0’~’9’之间,所以应为: c>=‘0’&&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。 下列程序运行得结果就是: ﻩﻩﻩﻩ。 #include〈stdio.h> void main() { charc=‘d’; if(‘m’ elseprintf(“NO”); } 分析: 这就是if-else形式,格式为: if(表达式) 语句1 else 语句2 其语义就是: 如果表达式得值为真,则执行语句1,否则执行语句2。 本题中,表达式’m’<c<=‘z’结果为真,所以执行printf(“YES"); 答案: YES。 5.if(表达式)语句,其中"表达式”ﻩﻩ。 A)必须就是逻辑表达式 B)必须就是关系表达式 C)必须就是逻辑表达式与关系表达式D)可以就是任意合法得表达式 分析: 表达式一般就是关系表达式或逻辑表达式,用于描述选择结构得条件,但也可以就是其它类型得表达式,只要其合法,在其值非0时都视为真,所以其它表达式也可以做if语句得判断条件。 答案: D。 6、下列程序运行结果就是: ﻩﻩﻩ。 #include 〈stdio、h> voidmain() { inta=1; if(a)printf(“YES”); elseprintf(“NO”); } 分析: if(表达式)中得"表达式”可以就是任意合法得,其实质就是判断表达式就是真还就是假。 本题a得值为1,if(a) printf(“YES”);elseprintf(“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〈stdio、h〉 voidmain() { int x=1,y=2,z=3; if(x〈y) if(y〈z)printf(“%d",++z); else printf(“%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: printf(“*\n”); case 2。 0: printf(“**\n”); case2: printf(“**\n”); } } C)switch(a+b) D) switch(a+b) { { case1: printf(“*\n”); case1: printf(“*\n"); case2+1: printf(“**\n"); case c: printf(“**\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题 顺序 选择 循环