二级c语言程序设计习题及解答ch1-3
- 格式:docx
- 大小:114.68 KB
- 文档页数:11
12)计算机能直接执行的程序是(B )。
A)源程序B)目标程序C)汇编程序D)可执行程序13)以下叙述中正确的是( D )A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整例年真题:#include<stdio.h>main(){Int a;A=5; /*给A变量赋值5A+=3; 再赋值后再加3*/Printf(“%d”,a);}(11)以下叙述中正确的是( C )。
A)C 程序的基本组成单位是语句B)C 程序中的每一行只能写一条语句C)简单C 语句必须以分号结束D)C 语句必须在一行内写完(11)以下叙述中正确的是( C )A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中(12)以下选项中,能用作用户标识符的是( C )A)voidB)8_8C)_0_D)unsigned【解析】A:关键字不可以B:不以数字开头C:正确D:关键字(13)以下选项中合法的标识符是( C )A)1-1 B)1—1C)-11D)1—【解析】A:不以数字开头,出现非法字符-而不是_ B:不以数字开头,非法字符C:正确D: 不以数字开头,出现非法字符(14)以下选项中不合法的标识符是( C )A)print B)FOR C)&a D)_00【解析】C:出现非法字符&(15)以下选项中,能用作数据常量的是( D )A)o115 B)0118 C)1.5e1.5D)115L【解析】A:八进制以0开头而不是以o开头B:八进制最大值为7,范围0-7 C:指数必须为整数D: 长整型正确(13)以下选项中不能作为C语言合法常量的是(A)。
A)'cd'B)0.1e+6 C)"\a" D)'\011'【解析】A:字符常量只能有一个字符(16)以下选项中不属于字符常量的是( B )A)'C'B)"C"C)'\xCC0' D)'\072'【解析】B:字符常量以单引号作为标志,其为字符串(14)表达式:4-(9)%2的值是( B )A)0B)3C)4D)5【解析】(9)%2=1(取余),4-1=3(14)设变量已正确定义并赋值,以下正确的表达式是 ( C )A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.0【解析】A:等号左边必须为变量,不可以为表达式,y*5是表达式B:%只适用于整型变量D: %只适用于整型变量(15)若有定义语句:int x=10;,则表达式x-=x+x的值为( B )A)-20B)-10C)0D)10【解析】先算右边得20,x-=20,则10-20=-10(14)设有定义:int x=2;,以下表达式中,值不为6的是 ( D )A) x*=x+1 x=x*(x+1)B) x++,2*xC)x*=(1+x)D)2*x,x+=2【解析】逗号表达式的最终结果看最后一个表达式,x+=2,结果为4(17)若变量均已正确定义并赋值,以下合法的C语言赋值语句是 (A)A)x=y==5;B)x=n%2.5;C)x+n=ID)x=5=4+1;【解析】等号左边必为变量,不能为常量或数字排除C 、D,%只能用于整数排除B第三章输入输出习题讲解(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是(A)A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是(D)A)0,0B)1,0C)3,2D)1,2【解析】b=a+b即b=1,a=2*b,a=2(15)程序段:int x=12;double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是(A )A)123.141593B)123.141593C)12,3.141593D)12 3.141593【解析】“%d%8.6f”原样输出,没有,也没有空格,所以x与y相连,小数总共8位,小数点之后6位#include <stdio.h>main(){double a=123.456;printf("%6.2f",a);}结果:123.46例题:int x;x=11/3;int y=5;printf("%%d,%%%d\n",x,y); 结果是:%d,%3【解析】"%%d,%%%d\n"原样输出,%%d中第一个%为转义字符,不是输出占位符,所以原样输出%d,然后%%转义只输出一个%,%d\n只有一个占位符,所以只输出x的值为3[3.5] 若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是( D )A)read(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);【解析】scanf中赋值必须用&(取地址符),即将输入的字符放在指定位置中[3.6] 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c 赋予33,以下不正确的输入形式是( B )A)10 B)10.0,22.0,33.0 C)10.0 D)10 2222 22.0 33.0 3333scanf(“ %f %f %f” ,&a,&b,&c);【解析】输入时可以空格可以回车,但是不可以出现,复合语句:多个语句被{}括起来,当成一条语句来执行。
本文由皓月90贡献 doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
《全国计算机等级考试二级教程——C 语言程序设计》课后题及参考答案 目 录 第一章、第二章、第三章、第四章、第五章、第六章、第七章、第八章、第九章、 第十章、第十一章、第十二章、第十三章、第十四章、第十五章、第十六章 第一章 程序设计基本概念 1.1 在 TRUBO C 环境中用 RUN 命令运行一个 C 程序时,所运行的程序的后缀是。
答案:.exe 1.2 C 语言源程序文件的后缀是,经过编译后,生成文件的后缀是,经过连接后, 生成文件的后缀是。
答案:.c .obj .exe 1.3 结构化程序由、、三种基本结构组成。
答案:顺序、选择、循环 第二章 C 程序设计的初步知识 一、选择题 2.1 以下选项中正确的整型常量是 A)12. B)-20 C)1,000 D)4 5 6 答案:B 2.2 以下选项中正确的实型常量是 A)0 B)3. 1415 C)0.329×10(2)(10 的 2 次方) D).871 答案:D 2.3 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2 答案:B 2.4 以下选项中不合法的用户标识符是 A)abc.c B)file C)Main D)PRINTF 答案:A 2.5 以下选项中不合法的用户标识符是 A)_123 B)printf C)A¥ D)Dim 答案:C 2.6 C 语言中运算对象必需是整型的运算符是 A)% B)/ C)! D)** 答案:A 2.7 可在 C 程序中用作用户标识符的一组标识符是 A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG 答案:B 2.8 若变量已正确定义并赋值,符合 C 语言语法的表达式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B 2.9 以下叙述中正确的是 A)a 是实型变量,C 允许进行以下赋值 a=10,因此可以这样说:实型变量中允许存放整 型值。
全国计算机等级考试二级C语言程序设计真题精选3一、单项选择题1.下列关于C语言文件的叙述中正确的是()。
A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件√D.文件由字符序列组成,其类型只能是文本文件解析:C语言将文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。
根据数据的组成形式,可将文件分为两种:①ASCII文件,又称文本(text)文件,它的每一个字节可放一个ASCII码,代表一个字符;②二进制文件,是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
所以C文件就是一个字节流或一个二进制流。
2.有以下程序:#includ<stdio.h>main()inm=1,n=2,*p=&m,*q=&n,*r; r=p,p=q;q=r; printf("%d,%d,%d,%",m,n,*p,*q);}程序运行后的输出结果是()。
A.1,2,1,2B.1,2.2,1 √C.2,1,2,1D.2,1.1,2解析:本题定义了两个整型变量,然后用两个指针分别指向这两个整型变量,接着对指针进行交换,那么原来指向第一个整数的指针将指向第二个整数,原来指向第二个整数的指针将指向第一个整数。
3.有以下程序:#includ<stdio.h>#include<string.h>strucAina;chab[10];doublc;};strucf (struct);main()struca={1001,"ZhangDa",1098.0}; a=f(a);printf ("%d,%s,%6.1",a.a,a.b,a.c);}strucf(struct)t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;returt;}程序运行后的输出结果是()。
2021年3月全国计算机等级考试二级C语言历年真题和答案2021年3月全国计算机等级考试《二级C语言》题库【历年真题+章节题库+模拟试题】目录•第一部分历年真题•全国计算机等级考试《二级C语言程序设计》真题及详解(一)•全国计算机等级考试《二级C语言程序设计》真题及详解(二)•全国计算机等级考试《二级C语言程序设计》真题及详解(三)•全国计算机等级考试《二级C语言程序设计》真题及详解(四)•全国计算机等级考试《二级C语言程序设计》真题及详解(五)•全国计算机等级考试《二级C语言程序设计》真题及详解(六)•第二部分章节题库•公共基础知识•第1章数据结构与算法•第2章程序设计基础•第3章软件工程基础•第4章数据库设计基础•C语言程序设计•选择题•第1章程序设计基本概念•第2章C程序设计的初步知识•第3章顺序结构•第4章选择结构•第5章循环结构•第6章字符型数据•第7章函数•第8章地址和指针•第9章数组•第10章字符串•第11章对函数的进一步讨论•第12章C语言中用户标识符的作用域和存储类•第13章编译预处理和动态存储分配•第14章结构体、共用体和用户定义类型•第15章位运算•第16章文件•上机操作题•一、程序填空题•二、程序修改题•三、程序设计题•第三部分模拟试题•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(一)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(二)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(三)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(四)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(五)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(六)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(七)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(八)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(九)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(十)•常见问题电子书常见问题1.电子书产品(电子书、题库、视频、全套等)能在几种设备上使用?如何使用?答:支持电脑(WIN10、WIN8、WIN7)、手机、平板等多端同步使用。
计算机二级C语言程序设计试题及答案尽管提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进展编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
今天,特意为大家推荐C语言程序设计试题及答案,一起看看吧!1.C语言中,关系表达式和逻辑表达式的值是( B ) 。
A、0B、 0或1C、 1D、‘T’或’F’2. 下面( D )表达式的值为4.A、 11/3B、 11.0/3C、 (float)11/3D、 (int)(11.0/3+0.5)【解析】(1)相同数据类型的元素进展数学运算(+、-、*、/)得到结果还保持原数据类型。
(2)不同数据类型的元素进展数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。
选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数局部全部舍掉,仅保存整数,因此11/3=3.选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B11.0/3=3.666666选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算3.666666+0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数局部全部舍掉,结果为43.设整型变量 a=2,那么执行以下语句后,浮点型变量b的值不为0.5的是( B )A、b=1.0/aB、b=(float)(1/A、C、b=1/(float)aD、b=1/(a*1.0)4. 假设“int n; float f=13.8;”,那么执行“n=(int)f%3”后,n的值是(A)A、1B、4C、4.333333D、4.6【解析】“(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数局部舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为15. 以下对一维数组a的正确说明是: DA、char a(10);B、 int a[];C、int k=5,a[k];D、char a[3]={‘a’,’b’,’c’};【解析】详见教材P143~144,一维数组的定义、初始化类型符数组名 [常量表达式]类型符是指数组中数组元素的类型;数组名要符合标识符命名规那么;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。
高等学校计算机等级考试试卷二级 C语言程序设计(本试卷考试时间 120 分钟)一、单选题 ( 本大题 10 道小题,每小题 1.5 分,共15 分),从下面题目给出的A、B、C、D四个可供选择的答案中选择一个正确答案。
1.在C语言中,下列描述正确的是:(_____)。
A.标识符只能由字母和下划线组成。
B.标识符由任意字符组成。
C.标识符只能由字母、数字和下划线组成。
D.标识符只能由字母组成。
2.设有变量定义:char ch; 若将小写字母a赋给变量ch,正确的表达式是:(_____)。
说明:小写字母a的ASCII码值是97。
A.ch='a'B.ch='97'C.ch=aD.ch="a"3.设有变量定义:int a=345,b=123; 则执行语句printf("%2d-%2d",a,b);后,输出的结果是:(_____)。
A.45-23B.34-12C.345-123D.2224.在C语言中关于函数的描述,正确的是:(_____)。
A.main函数的返回类型只能是voidB.函数可以用return返回多个值C.任何一个函数都可以有多个函数体D.自定义函数的形式有无参函数和有参函数5.设有变量定义:int a=5,b=8; 则以下各个选项中,会出现语法错误的if语句是:(_____)。
A.if (a>=b) ;B.if (a==b) a+=b;C.if (a<=b) { a--; b++; }D.if (a!=b) a++ else b++;6.执行以下代码段后,x的结果是:(_____)。
int x=1;while (x<=10)x++ ;A.9B.10D.有错误,没有输出结果7.设有变量定义:int a[5]={5,4,3,2,1},*p=a;则执行语句 p+=4;后,*p的结果是(_____)。
A.4B.3C.2D.18.已知一结构体类型及变量定义如下:struct node{int data;struct node *next;}*p,*s,*h;现已有头指针h指向的单链表如下图所示,能实现s指向的结点插入到p所指结点后面的语句是:(_____)。
计算机二级《C语言》练习题及答案一、选择题1. C语言中,以下哪个选项不是合法的数据类型?A. intB. floatC. charD. string答案:D2. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A3. 关于C语言的逻辑运算符,以下说法正确的是?A. && 的优先级高于 ||B. || 的优先级高于 &&C. && 和 || 的优先级相同D. 以上都不正确答案:A二、填空题1. 在C语言中,若定义了整型变量a,则其默认的初始化值为______。
答案:02. 在C语言中,若要定义一个长度为10的一维整型数组,应使用以下语句:______。
答案:int arr[10];3. 在C语言中,以下函数用于动态分配内存:______。
答案:malloc()三、编程题1. 编写一个C程序,实现以下功能:输入一个整数,判断它是否为水仙花数(水仙花数是指一个三位数,其各位数字的立方和等于该数本身,如153 = 1^3 + 5^3 + 3^3)。
```c#include <stdio.h>int main() {int num, a, b, c;printf("请输入一个三位数:");scanf("%d", &num);a = num / 100; // 百位数b = (num / 10) % 10; // 十位数c = num % 10; // 个位数if (aaa + bbb + ccc == num) {printf("%d 是水仙花数。
\n", num);} else {printf("%d 不是水仙花数。
\n", num);}return 0;}```2. 编写一个C程序,实现以下功能:输入10个整数,求出其中的最大值和最小值。
c语言二级考试题库第一篇c语言二级考试题库:2021计算机二级《C语言》考试题及答案一、选择题(每小题1分。
共40分)(1)程序流程图中带有箭头的线段表示的是( )。
A.图元关系B.数据流C.掌握流D.调用关系(2)结构化程序设计的基本原则不包括( )。
A.多态性B.自顶向下C.模块化D.逐步求精(3)软件设计中模块划分应遵循的准则是( )。
A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文档是( )。
A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试方案(5)算法的有穷性是指( )。
A.算法程序的运行时问是有限的。
B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏状况下,比较次数不是n(n一1)/2的排序方法是( )。
A.快速排序B.冒泡排序C.直接插入排序D.堆排序(7)下列关于栈的叙述正确的是( )。
A.栈按“先进先出”组织数据,B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据(8)在数据库设计中,将E—R图转换成关系数据模型的过程属于( )。
A.需求分析阶段B.概念设计阶段C.规律设计阶段D.物理设计阶段(9)有三个关系R、s和T如下:由关系R和s通过运算得到关系T,则所使用的运算为( )。
A.并B.自然连接C.笛卡尔积D.交(10)设有表示同学选课的三张表,同学s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成果),则表sc 的关键字(键或码)为( )。
A.课号,成果B.学号,成果C.学号,课号D.学号,姓名,成果(11)以下叙述中错误的是( )。
A.c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令B.c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中D.c语言源程序经编译后生成后缀为.obj的目标程序(12)以下选项中,合法的一组c语言数值常量是( )。
《全国计算机等级考试二级教程--C语言程序设计》课后习题答案第一章1.1 EXE1.2 C OBJ EXE1.3 顺序选择循环第二章一. 选择题2.1 B 2.2 D 2.3 B 2.4 A 2.5 C 2.6 A 2.7 B2.8 B 2.9 D 2.10 C 2.11 B 2.12 B 2.13 A二. 填空题2.14 11 122.15 4.2 4.22.16 { } 定义执行语句2.17 关键字用户标识符2.18 int float double2.19 float a1=1; float a2=1;2.20 存储单元2.213.52.22 (a*b)/c a*b/c a/c*b2.23 把常量10赋给变量s2.24 位1或02.25 8 127 0111111 -128 100000002.26 32767 -32768 10000000000000002.27 10 8 16三. 上机改错题2.28#include "stdio.h"; 删除行尾的";"main(); / * main function * / 删除")"后的";",注释中的*要紧靠“/”,即应为“/*”和“*/”函数开始处遗失了一个“{”float r,s ; /*/*r is radius*/,/* s is area of circuilar*/*/ 注释符号不可嵌套使用r = 5.0 ;s = 3.14159 * r * r ;printf("%f\n",s) 行尾遗失了“;”函数结束处遗失了一个“}”2.29#include "stdio.h"main /* main function */ main后遗失了“()”{float a,b,c,v; /*a,b,c are sides, v is volume of cube */a=2.0; b=3.0; c=4.0 行尾遗失了“;”printf("%f\n", v) 行尾遗失了“;”}第三章一. 选择题3.1 C 3.2 C 3.3 D 3.4 C 3.5 D 3.6 B 3.7 C 3.8 D 3.9 A 3.10 B3.11 C 3.12 D 3.13 D 3.14 A 3.15 C 3.16 C 3.17 C 3.18 无答案3.19 C 3.20 B二. 填空题3.21 (1)-2002500(2)i=-200,j=2500(3)i=-200j=25003.22 12 0 03.23 一条语句;3.24 ;3.25 100,25.81,1.89234 100 25.81 1.89234 100 25.81 1.892343.26 x=127,x= 127,x= 177,x= 7f,x= 1273.27 x=127,x=127 ,x=$127 ,x=$000127,x=%06d3.28 a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500三. 编程题和改错题3.29 修改后的程序如下:main(){double a,b,c,s,v;printf("input a,b,c:");scanf("%lf%lf%lf",&a,&b,&c);s =a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n", a,b,c);printf("s=%f,v=%f\n",s,v);}3.30#includemain(){int a=560,b=60;printf("560 minute is %d hour and %d minute.\n",a/b,a%b);}3.31#includemain(){a=1500;b=350;printf("a div b is : %d\n",a/b);printf("a mod b is : %d\n",a%b);}3.32#includemain(){double a,b,c,ave;printf ("input 3 double number : \n");scanf ("%lf%lf%lf",&a,&b,&c);printf ("%.1f\n",(a+b+c)/3);}3.33#includevoid main(){int a,b,c,t;printf("请依次输入整数a,b,c:");scanf("%d%d%d",&a,&b,&c);printf("\n你输入的值是: a=%d,b=%d,c=%d\n",a,b,c);t=b;b=a;a=c;c=t;printf("交换之后的值是:a=%d,b=%d,c=%d\n",a,b,c);}第四章一. 选择题4.1 A 4.2 A 4.3 A 4.4 D 4.5 C 4.6 A 4.7 B 4.8 C 4.9 D 4.10 C二. 填空题4.11 非0 04.12 < > >= <=同级== !=同级4.13 ! && ||4.15 !4.16 a == b || a < c x > 4 || x < -44.17 14.18 x <= 0 1 > 04.19 3 2 24.20 *#三. 编程题4.21 略4.22/* 检查日期的合法性*/int checkdate(int year, int month, int day){if(year < 1900 || year > 2005){printf("输入的年份无效!\n");return 0;}else if(month < 0 && month > 12){printf("输入的月份无效!\n");return 0;}else if(day <= 0 && day > 31){printf("输入的日期无效!\n");return 0;}else{switch(month){case 4:case 6:case 9:case 11:if(day > 30){printf("输入的日期无效!\n");return 0;}break;case 2:if((year%4 == 0 && year%100 != 0) || year%400 == 0) {if(day > 29){printf("输入的日期无效!\n");return 0;}}elseif(day > 28){printf("输入的出生日期无效!\n"); return 0;}}break;}/* end of switch(m0)*/}return 1;}void main(){int y0, m0, d0; /* 生日*/int y1, m1, d1; /* 当前日期*/int years, months, days; /* 实足年龄*/printf("请输入学生的生日:");scanf("%d%d%d", &y0,&m0,&d0);if(checkdate(y0, m0, d0)){printf("请输入当前日期:");scanf("%d%d%d", &y1,&m1,&d1);/*当前日期合法性检查*/if(!checkdate(y1, m1, d1)){return;}else if(y0 > y1){printf("出生年份比当前年份晚!\n"); return;}else if(y0 == y1){if(m0 > m1){printf("出生年月比当前年月晚!\n"); return;}else if(m0 == m1)if(d0 > d1){printf("出生年月日比当前年月日晚!\n");return;}}}}/* 计算实足年龄*/years = y1 - y0;months = m1 - m0;days = d1 - d0;/* 修正实足年龄天数*/if(days < 0){months--;switch(m1){case 1:case 5:case 7:case 10:case 12:days += 30;break;case 2:case 4:case 6:case 8:case 9:case 11:days += 31;break;case 3:if((y1%4 == 0 && y1%100 != 0) || y1%400 == 0) {days += 29;}else{days += 28;break;}/* end of switch(m1) */}/* end of if(days < 0) *//* 修正实足年龄月数*/if(months < 0){months += 12;years--;}/* end of if(months < 0) */printf("出生日期: %d年%d月%d日\n", y0, m0, d0);printf("当前日期: %d年%d月%d日\n", y1, m1, d1);printf("实足年龄: %d年%d月%d日\n", years, months, days);return;}4.23#includevoid main(){int a;printf ("请输入一个整数:");scanf ("%d",&a);if (a%2==0){printf ("%d 是偶数\n", a);}else{printf ("%d 是奇数\n", a);}}4.24#includevoid main(){int a,b,c,temp,max;printf ("请输入三个整数:");scanf ("%d %d %d",&a,&b,&c);temp=(a>b)? a:b;max=(temp>c)? temp:c;printf ("\n");printf ("你输入的数中最大的是%d.\n",max); }4.25(1)不嵌套的if语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);if ( x>-5 && x<0 ){printf("y is %d\n",y=x);}if ( x==0 ){printf("y is %d\n",y=x-1);}if ( x>0 && x<10 ){printf("y is %d\n",y=x+1);}if ( x>=10 || x<=-5){printf("error\n");}}(2)嵌套的if语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);printf("\n");if(x < 0){if(x > -5){printf("y is %d.\n",y=x); }else{printf("error!\n");}}if(0 == x){printf("y is %d.\n",y=x-1); }if(x > 0){if(x < 10){printf("y is %d.\n",y=x+1); }else{printf("error!\n");}}}(3)if_else语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);if( x>-5 && x<0 ){printf("y is %d.\n",y=x); }else if( x==0 ){printf("y is %d.\n",y=x-1); }else if( x>0 && x<10 ) {printf("y is %d.\n",y=x+1); }else{printf("error!\n");}}(4)switch语句#includevoid main(){int x,y;printf("input x : ");scanf("%d",&x);switch (x){case -4:case -3:case -2:case -1:printf("y is %d.\n",y=x); break;case 0:printf("y is %d.\n",y=x-1); break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:printf("y is %d.\n",y=x+1); break;default:printf("error!\n");}}第五章一. 选择题5.1 D 5.2 C 5.3 B 5.4 C 5.5 C 5.6 B 5.7 D 5.8 A 5.9 D 5.10 D二. 填空题5.11 5 4 65.12 死循环5.13 -15.14 115.15 d=1.0 k++ k<=n5.16 x>=0 x三. 编程题5.17#includevoid main(){int i;int sig = 1;int sum = 0;for(i=1; i<=101; i++,i++){sum += sig*i;sig *= -1;}printf("sum=%d\n", sum);}5.18(1)#includevoid main(){int i;double m=1.0;double e = 1.0;for(i=1; i<50; i++){m *= i;e += 1/m;}printf("e=%f\n",e);}(2)#includevoid main(){int i=1;double m=1.0;double e = 1.0;while(1/m >= 0.0004){m *= i;e += 1/m;i++;}printf("e=%f\n",e);}5.19#includevoid main(){int year;int col = 0;for(year=1600; year<=2000; year++){if((year%4 == 0 && year%100 != 0) || year%400 == 0) {printf("%d\t", year);col++;if(col%5 == 0){printf("\n");}}}printf("\n");}5.20#include#define N 7void main(){int i;int j;int m;int k = N/2;for(i=0; i {m = i-k;if(m < 0){m *= -1;}for(j=0; j {printf(" ");}for(j=0; j<2*(k-m)+1; j++){printf("*");}printf("\n");}}第六章一. 选择题6.1 B 6.2 D 6.3 A 6.4 A 6.5 B 6.6 D 6.7 D 6.8 B 6.9 A 6.10 A 6.11 C二. 填空题6.12 -16.13 16.14 ctype.h6.15 16.16 10A 20B 30C 40D6.177.29 101.298AB6.18 A7.29B101.2986.19 A B C (每个字符后有三个空格)三. 编程题6.20#include#define N 80void main(){int iLoop = 0;gets(str);while(str[iLoop]){printf("%c-%d\t", str[iLoop],str[iLoop]); iLoop++;if(iLoop%3 == 0){printf("\n");}}printf("\n");}6.21#include#define N 80void main(){char str[N];int num = 0;int iLoop = 0;gets(str);while(str[iLoop]){if(str[iLoop] >= '0' && str[iLoop] <= '9') {num = 10*num + (str[iLoop] - '0');}iLoop++;}printf("%d\n",num);}6.22#include#include#define N 80void main(){char str[N];do{gets(str);num++;}while(strcmp(str, "EOF"));printf("您输入了%d行字符!\n",num);}6.23#include#define N 80void main(){char str[N];int iLoop = 0;int num = 0;gets(str);while(str[iLoop] && iLoop < N){if(str[iLoop] >= 'a' && str[iLoop] <= 'z'){num++;}iLoop++;}printf("您输入了字符中有%d个小写字母!\n",num); }6.24#includevoid main(){int line;int iLoop1;int iLoop2;printf("请输入图案的行数(不大于26):");scanf("%d", &line);for(iLoop1 = 0; iLoop1 < line; iLoop1++){for(iLoop2 = 0; iLoop2 < line - iLoop1; iLoop2++){printf(" ");}for(iLoop2 = 0; iLoop2 < 2*iLoop1+1; iLoop2++) {printf("%c",iLoop1 + 'A');}printf("\n");}}第七章一. 选择题7.1 C 7.2 C 7.3 B 7.4 C 7.5 A 7.6 D 7.7 A二. 填空题7.8 127.9 9.0000007.10 47.11 n=1 s7.12 <=y z*x7.13 1 s*i 0 f(k)三. 程序调试和编程题7.14fun(int n){ int k,yes;for(k=2; k<=n/2; k++){if(n%k == 0) { yes = 0; break;}else yes = 1;}return yes;}7.15int mymod(int a, int b){return a%b;}7.16double fun(int n){double sum = 0;int iLoop;int sig = -1;for(iLoop=1; iLoop<=n; iLoop++){sig *= -1;sum += sig*1.0/iLoop;}return sum;}7.17double fun(int n){double t = 1.0;int iLoop;long tmp;for(iLoop=2; iLoop<=n; iLoop++){tmp = iLoop*iLoop;t -= 1.0/tmp;}return t;}7.18#include#includedouble fun(double x){return x*x + 5*x + 4;}void main(){int x = 2;printf("y1=%f\n", fun(x));printf("y2=%f\n", fun(x+15));printf("y3=%f\n", fun(sin(x)));}第八章一. 选择题8.1 A 8.2 B 8.3 B 8.4 C 8.5 B 8.6 B 8.7 C 8.8 D 8.9 B 8.10 C 8.11 C 8.12 C8.13 1108.14 7 18.15 (1)char *p=&ch; (2) p=&ch; (3)scanf("%c",p); (4)*p='A'; (5)printf("%c",*p);8.16 (1)s=p+3; (2)s=s-2 (3)50 (4)*(s+1) (5)2 (6)10 20 30 40 50三. 编程题8.17void fun(double x, double y, double *sum, double *div){*sum = x + y;*div = x - y;return;}8.18void fun(double x, double y, double z, double *max, double *min){*max = x;*min = x;if(*max < y){*max = y;}if(*max < z){*max = z;}if(*min > y){*min = y;}if(*min > z){*min = z;}return;}第九章一. 选择题9.1 D 9.2 A 9.3 A 9.4 C 9.5 C 9.6 A 9.7 B 9.8 D 9.9 C 9.10 C9.11 C 9.12 D 9.13 D 9.14 A 9.15 A 9.16 A 9.17 C 9.18 C二. 填空题9.20 69.21 129.22 39.23 27219.24 -850,2,09.25 k=p k9.26 (c=getchar()) c-'A'三. 编程题9.27#include#define N 81int main(){int counter[10] = {0};int iLoop = 0;char str[N];gets(str);while(str[iLoop]){if(str[iLoop] >= '0' && str[iLoop] <= '9') {counter[str[iLoop] - '0']++;}iLoop++;}for(iLoop=0; iLoop < 10; iLoop++){printf("%d - %d\n", iLoop, counter[iLoop]); }return 0;}9.28void fun(int array[], int arraysize, int start) {int iLoop;if(start < arraysize-1){if(start <=0){start = 1;}for(iLoop = start; iLoop < arraysize; iLoop++){array[iLoop-1] = array[iLoop];}}for(iLoop = 0; iLoop < arraysize; iLoop++){printf("No.%d = %d\n", iLoop, array[iLoop]);}}9.29int fun(int arry1[], int arry2[], int arrysize){int iLoop;int counter = 0;for(iLoop = 0; iLoop < arrysize; iLoop++){if(arry1[iLoop] % 2){arry2[counter++] = arry1[iLoop];}}return counter;}9.30void fun(char array[], int arraysize){int iLoop1;int iLoop2;char temp;/* 冒泡排序*/for(iLoop1 = 0; iLoop1 < arraysize - 1; iLoop1++){for(iLoop2 = 0; iLoop2 < arraysize - 1 - iLoop1; iLoop2++) {if(array[iLoop2] < array[iLoop2 + 1]){temp = array[iLoop2];array[iLoop2] = array[iLoop2 + 1];array[iLoop2 + 1] = temp;}}}}#includevoid fun(int array[], int arraysize, int inertNumber) {int iLoop;int iLoop2;if(array[0] < array[arraysize-1]){for(iLoop = 0; iLoop< arraysize; iLoop++){if(array[iLoop] > inertNumber){for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) {array[iLoop2 + 1] = array[iLoop2];}array[iLoop] = inertNumber;break;}}if(iLoop >= arraysize){array[arraysize] = inertNumber;}}else{for(iLoop = 0; iLoop< arraysize; iLoop++){if(array[iLoop] < inertNumber){for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) {array[iLoop2 + 1] = array[iLoop2];}array[iLoop] = inertNumber;break;}}if(iLoop >= arraysize){array[arraysize] = inertNumber;}}int main(){int iLoop;int a[20] = {7,6,5,3,2,1};for(iLoop = 0; iLoop < 6; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 6, 0);for(iLoop = 0; iLoop < 7; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 7, 4);for(iLoop = 0; iLoop < 8; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 8, 8);for(iLoop = 0; iLoop < 9; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");return 0;}9.32int fun(int number, int array[]) {int iLoop = 0;int iLoop2;int binLen;int midNumber;int div;int remain;midNumber = number;dodiv = midNumber/2;remain = midNumber%2;midNumber = div;array[iLoop++] = remain;}while(midNumber);binLen = iLoop;for(iLoop2 = 0, iLoop = binLen - 1; iLoop2 < iLoop; iLoop2++, iLoop--) {midNumber = array[iLoop2];array[iLoop2] = array[iLoop];array[iLoop] = midNumber;}return binLen;}9.33#include#include#define N 15void fun(int array[], int arraysize){int x;int iLoop;int iLoop2;for(iLoop = 0; iLoop < arraysize; iLoop++){iLoop2 = 0;x = rand()%20;do{if(x == array[iLoop2] && iLoop > 0){x = rand()%20;iLoop2 = 0;}iLoop2++;}while(iLoop2 < iLoop);array[iLoop] = x;}}int main(){int a[N];int iLoop;fun(a, N);for(iLoop = 0; iLoop < N; iLoop++){printf("%d\n", a[iLoop]);}return 0;}第十章一. 选择题10.1 C 10.2 B 10.3 C 10.4 B 10.5 C 10.6 A 10.7 C 10.8 A 10.9 C 10.10 C二. 填空题10.11 GFEDCB10.12 XYZ10.13 SO10.14 1010.15 Itis10.16 strlen(str)-1 j--10.17 310.18 goodgood!三. 编程题10.19char* mygets(char *str){int iLoop = 0;char ch;while((ch=getchar()) != '\n'){str[iLoop++] = ch;}str[iLoop] = '\0';return str;}char * myputs(char *str)int iLoop = 0;while(str[iLoop]){putchar(str[iLoop++]);}putchar('\n');return str;}10.20#include#includeint fun(char *str){int len;int iLoop1;int iLoop2;int result = 1;len = strlen(str);for(iLoop1 = 0, iLoop2 = len - 1; iLoop1 < iLoop2; iLoop1++, iLoop2--) {if(str[iLoop1] != str[iLoop2]){result = 0;break;}}return result;}int main(){char a[20] = "ABCDCBA";char b[20] = "ABCDEBA";printf("%d\n", fun(a));printf("%d\n", fun(b));return 0;}10.21char fun(char *str, int pos){int len;int iLoop;char ch;len = strlen(str);if(pos > len){return NULL;}ch = str[pos];for(iLoop = pos; iLoop < len - 1; iLoop++) {str[iLoop] = str[iLoop + 1];}str[len-1] = '\0';return ch;}第十一章一. 选择题11.1 D 11.2 B 11.3 A 11.4 C二. 填空题11.5 IJKLEFGHABCD11.6 711.7 811.8 *(s+j) i+1 i11.9 1711.10 (*fun)() (*fun)(a+i*h)/h mypoly三. 编程题11.11#include#include#define N 81int main(int argc, char **argv){char sig;int dig;int pos;char str[N] = {'\0'};char outStr[N] = {'\0'};if(argc < 2){sig = '-';dig = 10;}else{sig = argv[1][0];dig = argv[1][1] - '0';}printf("请输入一个字符串:"); gets(str);if(sig == '-'){pos = strlen(str) - dig;if(pos <= 0){pos = 0;}strcpy(outStr, str + pos);}else if(sig == '+'){strcpy(outStr, str);pos = strlen(outStr);if(pos > dig){pos = dig;}outStr[pos] = '\0';}printf("处理后的字串为:"); printf("%s\n", outStr);return 0;}11.12#include#includevoid movebin(char *bin){int len;int iLoop;len = strlen(bin);for(iLoop = len; iLoop > 0; iLoop--) {bin[iLoop] = bin[iLoop - 1];}return;}void fun(int n, char *bin){int pos;pos = strlen(bin);if(n == 0){return;}if(n == 1){movebin(bin);bin[0] = '1';return;}movebin(bin);bin[0] = (n%2) + '0';n /= 2;fun(n, bin);return;}int main(){int a = 4;char bin[50] = {""};fun(a, bin);printf("%s\n", bin);return 0;}11.13long fun(int n){if(n == 1){return n;}else{return fun(n-1) + n;}}int main(){int num;int sum;printf("请输入一个自然数:"); scanf("%d", &num);sum = fun(num);printf("结果是:%d\n", sum);return 0;}11.14#includeint fun(int n){if(n == 0 || n == 1){return 1;}else{return fun(n-1) + fun(n-2); }}int main(){int result;printf("请输入一个自然数:");scanf("%d", &num);result = fun(num);printf("斐波拉契级数为:%d\n", result);return 0;}第十二章一. 选择题12.1 B 12.2 B 12.3 A 12.4 C 12.5 D 12.6 B 12.7 A 12.8 A二. 填空题12.9 2,5,1,2,3,-212.10 2468第十三章一. 选择题13.1 A 13.2 C 13.3 B 13.4 C 13.5 D 13.6 D 13.7 D二. 填空题13.8 ar=9 ar=9 ar=1113.9 int* s *b三. 编程题13.10#define MYALPHA(C) ((C>='A' && C<='Z') || (C>='a' && C<='z')) ? 1 : 0 13.11#define SWAP(t,x,y) {t tmp; tmp=x; x=y; y=tmp;}13.12#include#includeint main(){int *p;int tmp;int iLoop;int iLoop2;p = (int *)malloc(sizeof(int)*3);scanf("%d%d%d", p,p+1,p+2);for(iLoop = 0; iLoop < 2; iLoop++){for(iLoop2 = 0; iLoop2 < 2 - iLoop; iLoop2++){if(*(p + iLoop2) > *(p + iLoop2 + 1)){tmp = *(p + iLoop2);*(p + iLoop2) = *(p + iLoop2 + 1);*(p + iLoop2 + 1) = tmp;}}}printf("%d %d %d\n", *p, *(p+1), *(p+2));free(p);p = NULL;return 0;}第十四章一. 选择题14.1 D 14.2 D 14.3 D 14.4 A 14.5 C 14.6 C 14.7 C 14.8 B二. 填空题14.9 struct link *next14.10 p->next m>p->data14.11 (struct list*) struct list struct list* struct list return h三. 编程题14.12#include#define N 3struct stud{char num[5], name[10];int s[4];double ave;};void readrec(struct stud array[], int size)int iLoop;for(iLoop=0; iLoop {scanf("%s%s%d%d%d%d", array[iLoop].num, array[iLoop].name, &array[iLoop].s[0], &array[iLoop].s[1],&array[iLoop].s[2], &array[iLoop].s[3]);array[iLoop].ave = (array[iLoop].s[0] + array[iLoop].s[1] +array[iLoop].s[2] + array[iLoop].s[3])/4.0;}return;}void writerec(struct stud array[], int size){int iLoop;for(iLoop=0; iLoop{printf("%s\t%s\t%d\t%d\t%d\t%d\t%f\n",array[iLoop].num,array[iLoop].name,array[iLoop].s[0],array[iLoop].s[1],array[iLoop].s[2],array[iLoop].s[3],array[iLoop].ave);}return;}int main(){struct stud stu[N];readrec(stu, N);writerec(stu, N);return 0;}14.13#include#include#define N 100struct node{int data;struct node* next;int seekMaxValue(struct node *pNode){int max;struct node* pMove;pMove = pNode;max = pMove->data;pMove = pMove->next;while(pMove){if(max < pMove->data){max = pMove->data;}pMove = pMove->next;}return max;}struct node* seekMaxValueAddress(struct node *pNode) {int max;struct node* maxAddress;struct node* pMove;pMove = pNode;max = pMove->data;maxAddress = pMove;pMove = pMove->next;while(pMove){if(max < pMove->data){max = pMove->data;maxAddress = pMove;}pMove = pMove->next;}return maxAddress;}int main()struct node* head;struct node* pNode;int iLoop;head = (struct node*)malloc(sizeof(struct node)); pNode = head;pNode->next = NULL;for(iLoop=0; iLoop {pNode->next = (struct node*)malloc(sizeof(struct node)); pNode = pNode->next;pNode->next = NULL;pNode->data = iLoop;}printf("%d\n", seekMaxValue(head->next));printf("%d\n", seekMaxValueAddress(head->next));return 0;}第十五章一. 选择题15.1 D 15.2 A 15.3 B 15.4 A二. 填空题15.5 1111000015.6 a^a15.7 a|0xffff15.8 x|0xff0015.9 a=(012500>>2)15.10 ch|0x20第十六章一. 选择题16.1 B 16.2 C二. 填空题16.3 3 !feof(f1) f2 fclose(f1) fclose(f2)16.4 fopen(fname,"w") ch16.5 "r" !feof(fp) fgetc(fp)16.6 CCCCBBBBAAAA三. 编程题16.7#include#define N 10#define LEN 81int main(){char *str[N] = {"AAAAAAAAA", "BBBBBBBBB", "CCCCCCCCC", "DDDDDDDDD", "EEEEEEEEE", "FFFFFFFFF", "GGGGGGGGG", "HHHHHHHHH","IIIIIIIII","JJJJJJJJJ"};char str2[N][LEN];FILE *fp;int iLoop;fp = fopen("str.txt", "w");if(fp == NULL){printf("创建文件失败!\n"); return 1;}else{for(iLoop = 0; iLoop < N; iLoop++) {fputs(str[iLoop], fp);fputs("\n",fp);}}fclose(fp);fp = fopen("str.txt", "r");if(fp == NULL){printf("打开文件失败!\n"); return 1;}else{for(iLoop = 0; iLoop < N; iLoop++) {fgets(str2[iLoop], LEN - 1, fp);}}fclose(fp);for(iLoop = 0; iLoop < N; iLoop++) {printf("%s", str2[iLoop]);}return 0;}16.8#include#define N 10int main(){float num;int iLoop;FILE *fp;fp = fopen("num.bin", "wb+");if(fp == NULL){printf("创建文件失败!\n"); return 1;}/* 从键盘读入10个数并写文件*/ printf("请输入%d个数:", N);for(iLoop = 0; iLoop < N; iLoop++) {scanf("%f", &num);fwrite(&num, sizeof(num), 1, fp); }/* 文件指针回到开始处*/ rewind(fp);/* 从文件读出10个数并显示*/ for(iLoop = 0; iLoop < N; iLoop++) {fread(&num, sizeof(num), 1, fp); printf("%f\n", num);}/* 移文件指针到第四个数开始处*/ fseek(fp, 3L*sizeof(num), SEEK_SET); /* 读入一个新数据*/printf("请输入一个新数据:");scanf("%f", &num);fwrite(&num, sizeof(num), 1, fp);/* 文件指针回到开始处*/rewind(fp);/* 从文件读出10个数并显示*/for(iLoop = 0; iLoop < N; iLoop++) {fread(&num, sizeof(num), 1, fp); printf("%f\n", num);}/* 关闭文件*/fclose(fp);return 0;}。
12)计算机能直接执行的程序是(B )。
A)源程序B)目标程序C)汇编程序D)可执行程序13)以下叙述中正确的是( D )A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整例年真题:#include<stdio.h>main(){Int a;A=5; /*给A变量赋值5A+=3; 再赋值后再加3*/Printf(“%d”,a);}(11)以下叙述中正确的是( C )。
A)C 程序的基本组成单位是语句B)C 程序中的每一行只能写一条语句C)简单C 语句必须以分号结束D)C 语句必须在一行内写完(11)以下叙述中正确的是( C )A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中(12)以下选项中,能用作用户标识符的是( C )A)voidB)8_8C)_0_D)unsigned【解析】A:关键字不可以B:不以数字开头C:正确D:关键字(13)以下选项中合法的标识符是( C )A) 1-1 B)1—1 C)-11 D)1—【解析】A:不以数字开头,出现非法字符- 而不是_ B:不以数字开头,非法字符C:正确D: 不以数字开头,出现非法字符(14)以下选项中不合法的标识符是 ( C )A)print B)FOR C)&a D)_00【解析】C:出现非法字符&(15)以下选项中,能用作数据常量的是 ( D )A)o115 B) 0118 C)1.5e1.5 D) 115L【解析】A:八进制以0开头而不是以o开头B:八进制最大值为7,范围0-7 C:指数必须为整数D: 长整型正确(13)以下选项中不能作为C 语言合法常量的是( A )。
A)'cd' B)0.1e+6 C)"\a" D)'\011'【解析】A:字符常量只能有一个字符(16)以下选项中不属于字符常量的是 ( B )A)'C' B)"C" C)'\xCC0' D)'\072'【解析】B:字符常量以单引号作为标志,其为字符串(14)表达式:4-(9)%2的值是( B )A)0B)3C)4D)5【解析】(9)%2=1(取余),4-1=3(14)设变量已正确定义并赋值,以下正确的表达式是 ( C )A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.0【解析】A:等号左边必须为变量,不可以为表达式,y*5是表达式B:%只适用于整型变量D: %只适用于整型变量(15)若有定义语句:int x=10;,则表达式x-=x+x的值为( B )A)-20B)-10C)0D)10【解析】先算右边得20,x-=20,则10-20=-10(14)设有定义:int x=2;,以下表达式中,值不为6的是 ( D )A) x*=x+1 x=x*(x+1)B) x++,2*xC)x*=(1+x)D)2*x,x+=2【解析】逗号表达式的最终结果看最后一个表达式,x+=2,结果为4(17)若变量均已正确定义并赋值,以下合法的C语言赋值语句是 (A)A)x=y==5;B)x=n%2.5;C)x+n=ID)x=5=4+1;【解析】等号左边必为变量,不能为常量或数字排除C 、D,%只能用于整数排除B第三章输入输出习题讲解(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是(A)A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是(D)A)0,0B)1,0C)3,2D)1,2【解析】b=a+b即b=1,a=2*b,a=2(15)程序段:int x=12;double y=3.; printf(“%d%8.6f”,x,y);的输出结果是(A )A)123.B)123.C)12,3.D)12 3.【解析】“%d%8.6f”原样输出,没有,也没有空格,所以x与y相连,小数总共8位,小数点之后6位#include <stdio.h>main(){double a=123.456;printf("%6.2f",a);}结果:123.46例题:int x;x=11/3;int y=5;printf("%%d,%%%d\n",x,y); 结果是:%d,%3【解析】"%%d,%%%d\n"原样输出,%%d中第一个%为转义字符,不是输出占位符,所以原样输出%d,然后%%转义只输出一个%,%d\n只有一个占位符,所以只输出x的值为3[3.5] 若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是( D )A)read(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);【解析】scanf中赋值必须用&(取地址符),即将输入的字符放在指定位置中[3.6] 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c 赋予33,以下不正确的输入形式是( B )A)10 B)10.0,22.0,33.0 C)10.0 D)10 2222 22.0 33.0 3333scanf(“ %f %f %f” ,&a,&b,&c);【解析】输入时可以空格可以回车,但是不可以出现,复合语句:多个语句被{}括起来,当成一条语句来执行。
空语句:最后的表示只有一个;程序举例:1。
编写一个程序,从键盘上输入两个数字,让后让他们互换一下。
#include<stdio.h>main(){int a,b;printf("请输入两个数字:");scanf("%2d%3d",&a,&b);printf("qian:%d %d",a,b);int c;c=a,a=b,b=c;printf("后:%d %d",a,b);}2。
编写程序,对一个double型数据进行四舍五入运算。
要求保留两位有效数字。
123.4567两种算法:(1)#include <stdio.h>main(){double k=1234.4567;k+=0.005;printf("%7.2f",k);}(2)#include <stdio.h>main(){double k=1234.4567;k*=100;k+=0.5;k=(int)k;k/=100;printf("%7.2f",k);}3。
编写程序,使从键盘中输入的三位数倒着输出。
#include <stdio.h>main(){int a,three,two,one;printf("请输入一个三位数:");scanf("%d",&a);three=a/100; //取出百位two=a%100/10; //取出十位one=a%10; //取出个位printf("%d%d%d",one,two,three);}选择题[3.1] 若a、b、c、d、都是int类型变量且初值为0,以下选项中不正确的赋值语句是( C )A)a=b=c=d=100; B)d++; C)c+b; D)d=(c=22)-(b++);【解析】C是表达式,无法完成赋值[3.2] 以下选项中不是C语句的是( C )A){int i; i++; printf(“%d\n”,i);} B);C)a=5,c=10 D){ ; }【解析】C是表达式,没有; 结尾,只有;的语句是空语句[3.3] 以下合法的C语言赋值语句是( D )A)a=b=58 B)k=int(a+b); C)a=58,b=58 D)--i;【解析】语句必须以;结尾,B中强制类型转换的正确写法为k=(int)(a+b);[3.4] 以下程序的输出结果是( C )A)0 B)1 C)3 D)不确定的值main( ){ int x=10, y=3;printf(“%d\n”,y=x/y); }【解析】除法并且两边都为整型,最后也是整型[3.7] 若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是( D )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;[3.8] 若变量已正确定义,以下程序段的输出结果是( D )A) 输出格式说明与输出项不区配,输出无定值 B)5.17C)5.168 D)5.169X=5.16894;Printf(“ %f\n”,(int)(x*1000+0.5)/(float)1000);【解析】其上市四舍五入发,保留3位有效数字[3.9] 若有以下程序段,c3中的值是( A )A)0 B)1/2 C)0.5 D)1int c1=1,c2=2,c3;c3=c1/c2;【解析】不够除,商0[3.10] 若有以下程序段,其输出结果是( B )A)3,0,-10 B)0,0,5 C)-10,3,-10 D)3,0,3int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(“ %d,%d,%d\n”,a,b,c);【解析】a-=a-5得a=5,赋值给c=5,后面将b赋值给a,a=0,b+3执行了,但是并没有改变b的值辨析:int a=0,b=0,c=0;c=((a-=a-5),(a=b,b+3));printf(" %d,%d,%d\n",a,b,c);【解析】a-=a-5得a=5,没有赋值给c,后面将b赋值给a,a=0,b+3执行后赋值给了c;因为逗号表达式永远是最后一个逗号后的值赋值给c,只是相差一个(),结果就不同了。