个字符。二、单选题1. C解析:选项A中,缺少语句结束标志分号。选项B中,变量x为实数类型,不能进行取余运算。选项D中,赋值运算符左边不能为表达式。2. B解析:选项B中,取b+2的值赋给变量b,由于此前变量b未做明确赋值,所以其值为随机数,将b的值+2之后重新赋给变量b后仍然是一个随机数。3. B解析:语句c=a/b+0.4:中,a/b为整数相除,结果为整数1,再将相加结果1.4存人变量c,由于变量c为整型变量,截断取整,答案为B。4. D解析:此题考查输函数scanf的语法,只有选项D正确。选项A和选项B的函数在C语言中不存在。选项C的参数中缺少取地址运算符。5. B解析:根据此处scanf函数中格式控制字符串的格式,各输人数据之间应当以空格、回车、Tab作为间隔,而不能出现其他实体字符,因此选项B为不符合要求。6.C解析:在使用scanf函数时,如果在“格式控制字符串”中除了格式说明字符外还有普通字符,则在输入数据时原样输入,本题中的,"就是普通字符。选项A、选项B中有效数据后的多余内容不被接收,不会产生影响。选项C中在数据之间只有空格,与格式说明不符,无法准确接收输入数据。7. C解析:选项A经过运算可以实现变量数值交换。选项C中造成变量数据丢失。选项B和选项D同理,可以实现变量数值交换。8.A解析:printf函数中,“%md”指输出有符号十进制整数,输出的最小域宽为m位,不足m位左端补空格,超过m位按照实际位数输出。“%m.nf”指实数总的输出域宽为m位(包括小数点),小数部分占n位,总位数不足m位左端补空格,超过m位按照实际位数输出。此题中,a的值有4位,超出域宽,按照实际位数输出。b的值共8位,小数部分第3有6位,总位数超出域宽,按照实际位数输出。只有选项A符合。章三、填空题顺1.2300库解析:对于采用%d格式符的scanf函数,在输人数据时,遇到".4"看作非法字符,因结构此只能有效接收数据23赋值给变量i,变量j和k未得到键盘输入数据,维持初值0。程2.一条语句:库解析:根据语法,复合语句被视为一条语句。空语句只有一个分号。设计17
3. ab c解析:scanf函数的格式控制字符串中出现的一切普通字符都需要原样输入,因此在输入字符a、b、c时,需在b和c之间输人一个空格。4.a=%dnb=%dn解析:根据输出格式要求,用普通字符输出a=、b=和换行符,用%d格式符输出变量a、b的值。5. -1解析:通过执行两次getchar函数得到的是字符2和字符3,而不是整数23。两字符相减即为其ASCI码值相减,结果为-1。四、改错题1.(1)#definePI3.14159(2)int main (void)(4)v=4.0/3*Pl*r*r*r(3)scanf("%f&r)解析:符号常量定义的结尾不应该有分号。函数定义时函数名后面必须带有圆括号。scanf函数中格式字符应与变量的数据类型保持一致。两个整型数据进行除法运算,结果的数据类型为整型,因此为了保证除法运算的数据精度,需要至少有一个运算量为实型数据。2.(1)intn;(2) c=getchar ();;(3)printf("nis%d",n);解析:根据题意,变量n的数据类型应为int型。getchar函数为无参函数。putchar函数为字符输出函数,只能输出单个字符,而根据题意,输出结果为整数,格式输出函数printf能够满足各种数据类型的输出要求。五、读程序写结果1.6,6.000000,6.000000解析:20与3同为整型数据,除法运算结果为整型数据。赋值语句在赋值过程中,变量c、b得到实数6.0,变量a得到整数6。输出时依次按照对应格式输出结果452.a=12, b-3.40.y=5.60x=3解析:整型变量a、b在输出时各占6列域宽,实型变量x、y在输出时各占7列域宽,其中小数部分保留两位。当数据实际位数少于域宽时,左边补充空格。六、补足程序c1. (1)getchar ())(2)ch1-32(3) ch2语解析:本题考查字符输入函数getchar与字符输出函数putchar的使用方法。同一字母言程的大小写形式的ASCII码值相差32。序2.(1)"%f",&cost(2)"%f",&percent(3)实际售价为:%.2f元ln设解析:本题考查格式输人函数scanf和格式输出函数printf的使用方法。printf函数中计转义字符n控制换行效果,%.2f控制输出的数字有两位小数。训3.(1)"%d",&num(2) %d,%d练(3)学号\t成绩1\t成绩2/t总成绩)n(4)%d\t%d\t%d\t%dn教程解析:根据给定运行结果,通过两次调用scanf函数,先输入学号,再输入两个成绩,18
成绩之间用逗号做间隔。输出时使用转义符t控制数据之间的间距。七、编程题1.编程思路:根据求解问题的顺序,首先通过赋值或输人获得已知变量的值,然后利用公式求解出未知量。将此问题依据日常解题的逻辑顺序,使用编程语言设计出来。注意给变量设计合理的数据类型,以保证结果的准确性。源程序:#include"stdio.h"int main(void)(float vo,a,t,s;v0=10.2;a=9.8;社printf("请输人任意时刻t的值:In"):scanf("gf",&t);s=v0*t+1.0/2.0*a*t*t;printf("该时刻的位移为:%f\n",s);return 0;广2.编程思路:从键盘获取三个数据进行计算,按照输出格式的要求进行输出。源程序:#include"stdio.h"int main(void)(double x,Y,z,s;printf("input x,y,z:");scanf("&lf%lf%lf"&x,&y,&z);s=(x+y+z)/3.0;printf("\n平均数是=%6.1f\n",s);return ;.第3第四单元实验指导章实验一顺序一、实验目的结构1.了解数据的输人/输出在C语言中的实现。程2.掌握putchar、getchar、printf、scanf等输人/输出函数的用法。序设计19
二、实验要求1.通过下面给出的实验内容,掌握C语言中最常用的一种语句一一赋值语句的用法。2.根据下面给出的实验内容,先自已分析出程序的运行结果(包括运行中可能出现的错误),再在C语言运行环境中输人源程序并验证自已分析的结果。三、实验内容1.运行下述程序,分析输出结果。#include "stdio.h"int main(void){charcl,c2,c3,c4,c5,c6,scanf("%cc%c%c",&cl,&c2,&c3,&c4);c5=getchar0)c6=getchar()putchar(cl);putchar(c2);printf("c%cln",c5,c6);return O;1运行程序后,若从键盘输入(从第一列开始输入)123456分析其输出结果。2.运行下述程序,分析输出结果。#include"stdio.h"int main(void){int cl;char c2;cl=65c2-"d";printf("g3c%3c",cl,c2),printf("83d83d",cl,c2);return 0;若将程序第三行改为intcl,c2;,然后把c2=d;改为c2=100,重新运行程序,分析其结果。3.交换两个变量的值(由终端输入两个整数给变量x和y,然后输出x和y的值,在C语交换x和y的值后,再输出x和y的值,验证两个变量中的数是否正确进行了交换)。言实验二程房一、实验目的设计1.掌握顺序结构程序设计的思想和方法。2.熟悉顺序结构程序的一般调试方法。练二、实验要求教程1.在C语言运行环境中输入顺序结构程序的源代码。20