您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > C语言习题:顺序、选择、循环
2.3顺序结构程序设计2.3.1要点导读1.printf()与scanf()语句。printf()与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。它们位于stdio.h库文件中。2.字符数据的输入输出。最简单的字符输入输出函数是getchar()和putchar()。两者分别从键盘读一个字符或向显示屏写一个字符。2.3.2经典例题分析1.下列程序运行后输出的结果是。#includestdio.hvoidmain(){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,在printf(“a+b=%d”,a+b);格式说明输出表列中,”a+b=“是普通字符,需原样输出。输出表列是一个表达式,它的结果以整型输出。答案:a+b=30。2.下列程序运行后输出的结果是。#includestdio.hvoidmain(){inta=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个空格。答案:732732□□□□□□□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.下列程序运行后结果是。#includestdio.h#definea3345.67voidmain(){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.6700003.345670e+033345.673345.7□□3345.670/*(□表示空格)*/3345.670□□5.下列程序运行后结果是。#includestdio.hvoidmain(){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函数的执行顺序是由右到左,输出顺序是由左向右。答案:C。7.下列程序运行时,若从键盘输入:123回车45678回车后结果是。#includestdio.hvoidmain(){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=3C)123D)a=1b=2c=3分析:scanf中如果在字符控制串中除了格式说明符以外还有其他字符,则在输入数据时应输入与这些相同的字符。答案:B。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”,&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.下列程序执行后输出的结果是。#includestdio.hvoidmain(){intx=‘d’;printf(“%c”,’A’+(x-’a’+1));}A)GB)HC)ED)J3.设整型变量a,b的值均为8。printf(“%d,%d”,(a++,++b),b--);的输出值是。A)8,8B)8,7C)9,9D)8,94.若有以下程序段,执行后输出的结果是。intm=100,n=0100;printf(“%d,%o\n”,m,n);A)100,100B)100,0100C)100,4D)100,045.有以下程序,其输出结果是。#includestdio.hvoidmain(){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.0000006.有以下程序,其输出结果是。#includestdio.hvoidmain(){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.下列程序输出的结果是。#includestdio.hvoidmain(){intx=7,y=5;printf(“y=%d\n”,x%y);}2.下列程序输出的结果是。#includestdio.hvoidmain(){floatd,f;longk;inti;i=f=k=d=20/3;printf(“%3d%3ld%5.2f%5.2f\n”,i,k,f,d);}3.下列程序输出的结果是:。#includestdio.hvoidmain(){intk=11;printf(“k=%d,k8=%o,k16=%x\n”,k,k,k);}4.下列程序输出结果是:。#includestdio.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的值各是什么?inti,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.掌握数据的
本文标题:C语言习题:顺序、选择、循环
链接地址:https://www.777doc.com/doc-7027574 .html