第3章顺序结构程序设计第一单元重点与难点解析1.a=10与a=10;有什么区别?a=10是一个赋值表达式,而a=10;是一条赋值语句。在赋值表达式的尾部添加分号“;”就构成了赋值语句。2.空语句什么也不做,为何还要使用?空语句不执行任何操作,通常用于一些特殊场合。例如:int i;for(i=0;i<10;i++):此循环中的循环体为空语句,这个循环什么也不做,起延时的作用。另外,空语句可以用作对程序扩展预留的伏笔。例如,程序中有一些功能并不在当前实现,此时可以使用空语句,再在适当时间填补语句进行功能扩展。3.在输入多个整数或实数时,如果希望数据之间用空格作为间隔,应该如何组织scanf函数的格式控制字符串?scanf函数用于从标准输人设备(通常是键盘)输入数据,并存人指定的变量中。scanf函数的一般形式如下:scanf(格式控制字符串,变量地址表)在输人数据时,一般以空格、回车、逗号等作为数据的分隔符。在输入多个整数或实数时,如果希望数据之间空格作为间隔,那么scanf函数的格式控制字符串中只需紧凑写入各数据的格式字符,不必写人其他符号,例如,scanf("%d%o%x"&a,&b,&c);。在执行程序键入数据值时,数据之间键人空格即可4.scanf函数中变量名之前必须要写“&”吗?在C语言中函数的参数只能进行单向传递(详细内容将在第9章讲述)。如果scanf函数中的第二个参数是普通变量名,那么输人的数据将无法传回到这个变量中。因此,变量名之前的“&”是必不可少的,除非这个变量是一个指针变量(有关内容将在第7章讲述)5,若希望在输入数据时首先给出提示信息,应该如何实现呢?scanf函数的功能是按指定格式从键盘读入数据;printf函数的功能是按指定格式向显示器输出数据。scanf函数格式控制字符串中的普通字符需要在键盘上原样输入,而输人数据前的提示信息属于显示器将呈现的内容,因此提示信息的内容需要在执行scanf函数之前,使用printf函数进行输出。题第二单元习一、判断题1.C语言程序中的“二”是赋值运算符,与数学中等号的功能相同。(
2.C语言中,printf函数的格式说明"%10.4f"中10表示数据输出的最小宽度,4表示小数位数。()3.假设有floatx=3,则x%2的值为1。(4.复合语句是用一对花括号括起来的若干条语句,从语法上讲,复合语句视为一条语句。()5.使用getchar和putchar函数能够在标准输人输出设备上输人或输出一个字符。(二、选择题1.若有定义inta,b;floatx,y;,以下选项中正确的赋值语句是B. y=(x%2) /10;C. x=(y=8)-a; D.a+b=x;A. a=1,b-2,2.若有定义inta=5,b;,以下选项中不能给b赋值为2的语句是C. b=2%a;A. b=a/2;B. b=b+2:D. b=5;b=2;3.若有定义inta=8,b=5,c;,执行语句c=a/b+0.4;后c的值是A.1.4D.2B. 1C.2.04.若有inta,b,c;,要给变量a、b、c输人数据,以下正确的输人语句是A.read (a,b,c);B. get ("%d%d%d",a,b,c) ;C. scanf ("%d%d%d",a,b,c);D.scanf("%d%d%d",&a,&b,&c);5.若有floata,b,c;,要通语句scanf("%f%f%f"&a,&b&c);给a赋值10、b赋值22、c赋值33,以下不正确的输人形式是22A.10B. 10.0,22.0,33.0C. 10.0D. 10223322.033.0336.若有语句inta,b;scanf("%d,%d",&a,&b),以下数据的输入格式中不能实现把值3赋给a、5赋给b的选项是B.3,5,4C.3 5D.3,5A.3,5,7.若变量已正确定义和赋值,要将a和b的值进行交换,下面不正确的语句组是A. a=a+b; b=a-b: a-a-b;B. t-a; a=b: b=t:C.a-t: t-b: b-a.D. t=b; b=a, a=t;8.以下程序段的输出结果是inta=1234;第doub1e b=3.141593;3printf("g3dg7.6fln",a,b);章B.1233.141593A.12343.141593顺D.123, 3.141593C.12343.14159序三、填空题结构1.若有语句inti=0,j-0,k=0;scanf("%d",&i);scanf("%d",&j);scanf("%d",&k);程运行程序时,若从键盘输入:序23.4V设则变量i、j、k的值分别是计13
。空语句的形式是2.复合语句在语法上被认为是3.设chl、ch2和ch3为字符型变量,若要执行语句Jscanf("%c%c%c",&chl,&ch2,&ch3);使变量chl、ch2和ch3分别存放小写字母a、b和c,则输人数据的形式是4.若整型变量a与b的值分别为2和3,要求按照以下格式输出a与b的值:a=2b=3相应的输出语句是printf("",a,b)i.5.有以下程序段:char chl,ch2;int n;ch1=getchar();ch2=getchar();n=ch1-ch2;printf("gd",n);若程序运行时输人:23,则输出n的值是四、改错题1.输人圆球的半径,求球体积。上机调试下面的程序,分析系统给出的错误提示并改正。#include <stdio.h>(1)#definePI3.14159;(2)int main(float r,v;printf("Input r:");(3)scanf("ed",&r);V=4/3*PI*r*r*r;(4)printf("v is &fln",v);return O;2.输入一个0~9之间数字字符,转换成对应的整数,并输出。上机调试下面的程序,分析系统给出的错误提示并改正。#include <stdioh>int main (void)(char c;c(1)char n;语(2)getchar(c);言n=c-"0";程(3)putchar(n):库return O;设计训五、读程序写结果练教l.#include<stdio.h>程int main(void)14
(int a;float b;double c;a=b=c-20/3;printf("8d,%f,&fln",a,b,c);return O;2.#include<stdio.h>int main(void)(f1oatx=3.4,y=5.6;inta=12,b=45;printf("a=%6d,b=%6dln",a,b);printf("x=%7.2f,y=87.2fn",x,y);return o;六、补足程序1.程序功能:输人一个小写字母,输出其对应的大写字母。请补足程序#include<stdio.h>int main(void)(charch,ch2;printf("please input a lowercase:");(1)chl=(2)ch2=putchar((3)return O;:2.程序功能:输入商品的原价和折扣率,计算商品的实际售价。请补足程序,使得程序的运行结果与给定的结果一致。#include<stdio.h>int main(void)floatcost,percent,cprintf("请输人商品的原价(单位:元):");scanf((1));第printf"请输人商品的折扣率:");3scanf((2));章c=cost*percent;printf("(3)",c):顺return 0;序结运行结果:构请输人商品的原价(单位:元):90程请输人商品的折扣率:0.8序实际售价为:72.00元设3.程序功能:输入学生的学号和分数,计算总分并输出。请补足程序,使得程序的运计15
行结果与给定的结果一致。#include<stdio.h>int main(void)(int num,scorel,score2,score;printf("请输人学号:");(1)):scanf(printf("请输人考试成绩:");scanf("(2)",&scorel,&score2);score= scorel+ score2;(3)printf("");printf("In");printf("(4)",num,scorel,score2,score);return O;程序运行结果:请输人学号:10001请输人考试成绩:92,89学号成绩1成绩2总成绩891000192181七、编程题1.编写程序,已知公式s-vot+1/2a,并已知vo-10.2,a-9.8,求任意时刻t对应的位移s。2.编写程序,输入3个双精度数,求出它们的平均值并输出,要求保留一位小数。第三单元习题参考答案及解析一、判断题1.错误。解析:C语言中赋值运算符左边为存储数据的对象,功能是向内存中的变量存人数据其与数学中等号的功能不同。2.正确。c解析:在printf函数的格式说明"%m.nf"中,m指数据输出的最小宽带为m位,不足语m位左端补空格,超过m位按照实际位数输出;n指输出n位小数。言3.错误。程解析:取余运算符“%要求两侧的运算量都为整型。库4.正确。设计解析:复合语句是用一对花括号括起来的若干条语句。从语法上讲,复合语句视为一训条语句,经常用于语法要求为一条语句,而实际需要执行多条语句的情况练5.正确。教解析:C语言中,getchar和putchar函数的功能是在标准输入输出设备上输人或输出一程16