SISO 2011级 C语言复习指导 灰色部分不需要复习 1.

Slides:



Advertisements
Similar presentations
《C语言程序设计》复习
Advertisements

二级指针与二维数组.
第一章 C语言概述 计算机公共教学部.
C语言基础——指针的高级应用 Week 05.
第九章 指针 目录 指针与指针变量的概念 变量的指针和指向变量的指针变量 数组的指针和指向数组的指针变量
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
C语言程序设计 第十二章 位运算.
第5章 函数与模块化设计 学习目的与要求: 掌握函数的定义及调用方法 理解并掌握参数的传递方法 理解函数的嵌套与递归调用
复习与总结.
C语言程序设计 第五章 选择结构程序设计.
第六章 数 组 主讲教师 贾月乐 联系电话:
由C程序结构所知,一个完整的C语言程序是由一个且只能有一个main()函数(又称主函数)和若干个其他函数组合而成的。而前面各章仅学习main()函数的编程,本章将介绍其他函数的编程,包括其他函数的定义、调用、参数传递及变量的作用域等。
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
第九章 结构体 主讲教师 :贾月乐 电话:
C++程序设计 第二讲 清华大学软件学院.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
项目六 用指针优化学生成绩排名 项目要求 项目分析
C程序设计.
第五章 选择结构程序设计 一、关系运算符和表达式 1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步
第七章 函数 目录 有参的加法函数的开发 函数定义的一般形式 函数参数和函数的值 函数的调用
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第五章 指针 5.1 指针的概念和定义 5.2 指针运算 5.3 指针和数组 5.4 字符串指针 5.5 指针数组 5.6 指向指针的指针
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第二章 C++对C 在非面向对象方面的改进 更简洁,更安全.
C语言 程序设计基础与试验 刘新国、2012年秋.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
第二章 Java语言基础.
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
第五章 习题课 电子信息与计算机科学系 曾庆尚.
第三章 数据类型、运算符与表达式.
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4章 PHP流程控制语句.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
C语言大学实用教程 第5章 函数与程序结构 西南财经大学经济信息工程学院 刘家芬
第 二 章 数据类型、运算符与表达式.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
第六章 指针 C++程序设计中使用指针可以: 使程序简洁、紧凑、高效 有效地表示复杂的数据结构 动态分配内存 得到多于一个的函数返回值.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
第十四章 若干深入问题和C独有的特性 作业: 函数指针 函数作参数 函数副作用 运算 语句 位段 存储类别 编译预处理
C程序设计.
C语言程序设计 李祥 QQ:
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第九节 赋值运算符和赋值表达式.
THE C PROGRAMMING LANGUAGE
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
程序设计基础.
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
C程序设计 实验二 数据类型、运算符和表达式 第6讲
本节内容 指针类型.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
单片机应用技术 (C语言版) 第4章 C51程序设计入门
基本知识 数据类型、变量、常量、运算符.
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
第九章 指针 C程序设计中使用指针可以: 使程序简洁、紧凑、高效 有效地表示复杂的数据结构 动态分配内存 得到多于一个的函数返回值.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C语言基础学习 从外行到入门.
Presentation transcript:

SISO 2011级 C语言复习指导 灰色部分不需要复习 1

2

3

语法考试要求及考题解析 (2007秋~2010春) 1. C语言基本概念 ⑴ 源程序格式、风格和结构。main函数特性。C程序保存。 注释位置。 【考题解析】 [填空题]在一个C语言源程序中,必不可少的是 。 答案: main函数定义 [单选题].以下叙述中正确的是 。 A.在编译时可以发现注释中的拼写错误 B.C语言程序的每一行只能写一条语句 C.main( ){ }必须位于程序的开始 D.C语言程序可以由一个或多个函数组成 答案:D 4

[单选题] 在一个源程序中main函数的位置 。 A.必须在最开始 B.必须在最后 C.必须在预处理命令的后面 D.可以在其他函数之前或之后 [单选题] 下列叙述中正确的是 。 A. main函数必须出现在其他函数之前 B. main函数中至少必须有一条语句 C. C程序总是从main函数的第一条语句开始执行 D. C程序总是在执行完main函数的最后一条语句后结束 答案: C 5

C. 用户定义的函数可以被一个或多个函数调用任意多次 D. 在一个函数体内可以定义另外一个函数 答案:C [单选题] 以下叙述中正确的是 。 A. C语言系统以函数为单位编译源程序 B. main函数必须放在程序开始 C. 用户定义的函数可以被一个或多个函数调用任意多次 D. 在一个函数体内可以定义另外一个函数 答案:C [全国选择题] 以下叙述中正确的是()。 A) C语言程序将从源程序中第一个函数开始执行 B) 可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C) C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D) main可作为用户标识符,用以命名任意一个函数作为主函数 6

A) C程序中的注释只能出现在程序的开始位置和语句的后面。 B) C程序书写格式严格,要求一行内只能写一个语句 [全国选择题] 以下叙述中正确的是 ( ) 。 A) C程序中的注释只能出现在程序的开始位置和语句的后面。 B) C程序书写格式严格,要求一行内只能写一个语句 C) C程序书写格式自由,一个语句可以写在多行上 D) 用C语言编写的程序只能放在一个程序文件中 答案:C [全国选择题] 以下叙述中正确的是( )。 A)C程序的基本组成单位是语句 B)C程序中的每一行只能写一条语句 C)简单C语句必须以分号结束 D)C语句必须在一行内写完 7

① 系统预定义类型标识符、类型修饰符的使用 ② 基本类型常量的表示及使用 ③ 字符串常量形式 ④ 关键字。标识符。 ⑤ 符号常量的定义与使用 ⑵ 基本类型数据的表示及使用 ① 系统预定义类型标识符、类型修饰符的使用 ② 基本类型常量的表示及使用 ③ 字符串常量形式 ④ 关键字。标识符。 ⑤ 符号常量的定义与使用 ⑥ 基本类型变量的声明、初始化, 直接引用变量 【考题解析】 [单选题] 在C语言源程序中,不带任何修饰符的浮点数直接量(例如:3.14)都是按 类型数据存储的。 答案: double [单选题]已知sizeof(int)的值为2,为将10!的值存储到变量f中(10!=3628800),变量f的类型应声明为 。 A.long int B.int C.short int D.unsigned int 答案:A 8

[单选题] 以下常量表示中正确的是 (22) 。 A. \xff B.5L C. aEb D. 3.14U 答案:B [单选题] 以下常量表示中正确的是 (22) 。 A. \xff B.5L C. aEb D. 3.14U 答案:B [单选题] 以下语句中有语法错误的是 。 printf("%d",0e); B. printf("%f",0e2); C. printf("%d",0x2); D. printf("%s","0x2"); 答案:A 9

[单选题]以下选项中不能用作变量名的是 。 A._float B.switch C.sum D._123 答案: B [单选题]以下选项中不能用作变量名的是 。 A._float B.switch C.sum D._123 答案: B [填空题]在C语言系统中,如果一个变量能正确存储的数据范围为整数-3276832767,则该变量在内存中占 (3) 个字节。 答案: 2 [单选题]以下选项中,不能用作标识符的是 。 print B. FOR C. &a D. _00 答案:C [单选题] 以下选项中, 是C语言关键字。 A. printf B.include C.fun D.default 答案:D [学校单选题] 执行语句“printf(”bye\bye101\101“);”时输出到屏幕的结果为 (22) 。 答案: byye101A 10

[学校单选题] 表达式“1e-8/2+1.0f”值的数据类型是 (3) 。 int B. long C. float D. double [学校单选题]以下局部变量声明中正确的是 (2) 。 int char=2; B. void a=0; C. int a=b=0; D. int a, b=a=0; 11

【考题解析】 ⑶ 运算符和表达式的表示及使用 ① 赋值表达式,赋值运算符的左值要求 ② 算术表达式。++、--运算符左值要求。溢出。 ⑶ 运算符和表达式的表示及使用 ① 赋值表达式,赋值运算符的左值要求 ② 算术表达式。++、--运算符左值要求。溢出。 ③ 关系表达式与逻辑表达式,逻辑表达式优化处理 ④ 逗号表达式 ⑤ 条件表达式 ⑥ 表达式运算中操作数类型自动转换与强制转换 【考题解析】 [单选题] 若有声明“double x=3,c,*a=&x,*b=&c;”,则下列语句中错误的是 。 A.a=b=0; B.a=&c,b=a; C.&a=&b; D.*b=*a; 答案:C 12

[单选题] 若有声明“char ss[8]=”Red“;”,则sizeof(ss)的值是 。 A.8 B.4 C.3 D.1 答案: A [单选题] 设有定义和声明如下: #define d 2 int x=5; float y=3.83; char c='d'; 以下表达式中有语法错误的是 。 x++ B. y++ C. c++ D. d++ 答案: D [单选题] 数学式 在C程序中正确的表示形式为 。 A.sqrt(a)/2*b B.sqrt(a)/2/b C.sqrt(a)/2b D.sqrt a/(2*b) 答案: B 13

A. y=x/(10*(n-1)) B. y=x%(10*(n-1)) [单选题] 已知有声明“long x,y;”且x中整数的十进制表示有n位数字(4<n<10),若要求去掉整数x十进制表示中的最高位,用剩下的数字组成一个新的整数并保存到y中,则以下表达式中能正确实现这一功能的是 。 A. y=x/(10*(n-1)) B. y=x%(10*(n-1)) C. y=x%(long)pow(10,n-1) D. y=x%(10(n-1)) 答案:C [填空题] 若有声明“double x=10,y=5;”,则计算xy的库函数调用形式是 。 答案: pow(x,y) 或 pow(10,5) [填空题] 若有声明“int x;”且sizeof(x)的值为2,则当x值为 时“x+1>x”为假。 答案: 32767 14

[单选题] 已知有声明“int a=3,b=4,c;”,则执行语句“c=1/2*(a+b);”后,c的值为 。 [填空题] 若有声明“float y=3.14619;int x;”,则计算表达式“x=y*100+0.5, y=x/100.0”后y的值是 。 答案: 3.15 [单选题] 已知有声明“int a=3,b=4,c;”,则执行语句“c=1/2*(a+b);”后,c的值为 。 A. 0 B. 3 C. 3.5 D. 4 答案:A [填空题] 若有声明“int a=5,b=2;”,则表达式“b+=(float)(a+b)/2”运算后b的值为 。 答案:5 [填空题] 已知有声明“char ch=‘g’;”,则表达式ch= ch-‘a’+‘A’的值为字符 的编码。 答案:G ch-’a’ 表示两个字符之间的距离,结果是6,’A’+6就表示字符’A’后面第6个字符,应该为’G’ 15

[单选题] 已有声明“int a=3,b=3,c=2;”,以下选项中值为0的表达式是 。 !a&&!b&&c B. !a||!b||c C. a==b&&b>=c D. a>=b&&b>c 答案: A [单选题] 已知有声明“int a=3,b=4,c=5; ”,以下表达式中值为0的是 。 a&&b B. a<=b C. a||b&&c D. !(!c||1) 答案:D [填空题] C语言中有!、&& 、|| 三个逻辑运算符,其中优先级高于算术运算符的是 。 答案: ! [单选题] 若有声明“int x=2,y=1,z=0;”,则下列关系表达式中有语法错误的是 。 A. x>y=2 B.z>y>x C. x>y==1 D.x==(x=0,y=1,z=2) 答案:A 16

答案:sqrt(fabs(x))!=4*a/(b*c) 或 sqrt(fabs(x))!=4*a/b/c [单选题] 已知有声明“int a=12,b=15,c;”,则执行表达式“c=(a||(b-=a))”后,变量b和c的值分别为 。 A.3.1 B.15,12 C.15,1 D.3,12 答案: C 短路 [填空题] 数学式 所对应的C语言表达式为pow(x, )。 答案:1.0/3 [填空题] 若有声明“int a=15,b=20,c=25,e;”,则执行语句“e=a>b? --c :++c;”后变量e的值是 。 答案: 26 17

[单选题] 以下选项中,不能表示函数 功能的表达式是 。 A. s=(x>0)?1:(x<0)?-1:0 [单选题] 以下选项中,不能表示函数 功能的表达式是 。 A. s=(x>0)?1:(x<0)?-1:0 B. s=x<0?-1:(x>0?1:0) C. s=x<=0?-1:(x==0?0:1) D. s=x>0?1:x==0?0:-1 答案: C [单选题] 若有程序段“char c=256; int a=c;”,则执行该程序段后a的值是 。 256 B. 65536 C. 0 D. -1 18

*[填空题].若有声明“int r=2;”,则执行语句“printf(”%d“,sizeof(2*3.14*r));”时输出 。 答案:8 [填空题] 设有声明“int a=3, b=4; float x=4.5, y=3.5;”,则表达式“(float)(a+b)/2+(int)x%(int)y”的值是 。 答案: 4.5 3.5+4%3=4.5 *[填空题].若有声明“int r=2;”,则执行语句“printf(”%d“,sizeof(2*3.14*r));”时输出 。 答案:8 [单选题] 已知有声明“int n; float x,y;”,则执行语句“y=n=x=3.89;”后,y的值为 。 3 B. 3.0 C. 3.89 D. 4.0 答案:B x=3.89,n=3,y=3.0 [单选题] 已知有声明“int a=3,b=4;”,下列表达式中合法的是 。 A. a+b=7 B. a=|b| C. a=b=0 D. (a++)++ 答案:C [学校单选题] 已知有声明“int a=1,b=2;”,执行语句 “while(--a > 0&& --b>0)a=b;”后变量a、b的值是 。 0,2 B. 0,1 C. 1,1 D. 2,2 答案:A 短路运算,--b不执行 19

① 表达式语句,空语句,复合语句,函数调用语句 2. 语句 ⑴ 实现顺序结构的语句 ① 表达式语句,空语句,复合语句,函数调用语句 ② 标准输入输出库函数printf(), scanf(),getchar() , putchar() ,gets(),puts() 【考题解析】 [单选题] 已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的是 。 printf("%d",32768); B. printf("%ld",32768); C. printf("%f",32768); D. printf("%c",32768); 答案:B 20

[学校单选题] 已知某编译系统中sizeof(int)的值为2,在该编译系统中执行以下 (10) 语句时输出结果不是39999。 A. printf("%u",39999); B. printf("%d",39999); C. printf("%ld",39999); D. printf("%lu",39999); 答案: B [单选题] 若有声明“float f=123.45678;”,则执行语句“printf( ”%.3f“,f );”后,输出结果是 。 A. 1.23e+02 B. 123.457 C. 123.456780 D. 1.234e+02 21

@[单选题] 已知有声明“char s[80];”,若需要将键盘输入的一个不含空格的字符串保存到s数组中,则下列语句中正确的是 。 scanf("%s",s); B. scanf("%s",s[0]); C. s=gets(); D. s=getchar(); 答案:A [填空题] 已知有声明和语句“int a;scanf(”a=%d“,&a);”,欲从键盘上输入数据使a中的值为3,则正确的输入应是 。 答案:a=3 [单选题] 若有声明“long a,b;”且变量a和b都需要通过键盘输入获得初值,则下列语句中正确的是 。 scanf("%ld%ld,&a,&b"); B. scanf("%d%d",a,b); C. scanf("%d%d",&a,&b); D. scanf("%ld%ld",&a,&b); 答案:D 22

⑵ 实现选择结构的语句: if-else,switch 【考题解析】 [单选题] 若在一个C语言源程序中“e1”和“e3”是表达式,“s;”是语句,则下列选项中与语句“for(e1; ;e3)s;”功能等同的语句是 。 A. e1;while(10)s;e3; B. e1;while(10){s;e3;} C. e1;while(10){e3;s;} D. while(10){e1;s;e3;} 答案:B [单选题] 已知有声明“int x,y;”,若要求编写一段程序实现“当x大于等于0时y取值1,否则y取值-1”,则以下程序段中错误的是 。 A. if(x>=0)y=1;else y=-1; B. y=x>=0?1:-1; C. switch() D. switch(x-abs(x)) { case x>=0: y=1; break; { case 0: y=1; break; default: y=-1; default: y=-1; } } 答案:C 23

[学校单选题] 已知有声明“int a=1,b=2,c=0;”,执行语句“if(a>b) c=a;a=b;b=c;”后变量a、b的值是 (21) 。 答案: 2,0 24

[阅读程序] 下列程序运行后的输出结果第一行是 (1) ;第二行是 (2) 。 #include <stdio.h> [阅读程序] 下列程序运行后的输出结果第一行是 (1) ;第二行是 (2) 。 #include <stdio.h> main( ) { int i,a=0,c=2; for(i=0;i<2;i++) switch(++a , a*c) { case 1: printf("1"); case 2: printf("2"); case 3: printf("3\n");break; default: printf("other\n"); } 答案: (1) 23 (2) other 25

[阅读程序] 以下程序运行时输出结果为 (6) #include <stdio.h> void main() [阅读程序] 以下程序运行时输出结果为 (6) #include <stdio.h> void main() { int i,sum=0; for (i=0;i<5;i++) { switch(i) { case 0: case 1: sum++; case 3: sum++; case 4: sum--; break; } printf("%d\n",sum); 答案: 1 26

⑶ 实现循环结构的语句: while,do-while,for,goto 【考题解析】 [单选题] 若有声明“int i,k=1; unsigned j;”,则下列语句执行时会出现无限循环的语句是 。 A.for(j=15;j>0;j-=2) k++; B. for(j=0;j<15;j+=2) k++; C.for(i=0;i<15;i+=2) k++; D.for(i=15;i>0;i-=2) k++; 答案: A [学校单选题] 以下语句中有语法错误的是 。 for(; ;); B. do ; while(1); C. while(); D. p: ; goto p; 答案:C 27

[阅读程序] 以下程序运行时输出结果最后一行是 。 #include<stdio.h> void main() [阅读程序] 以下程序运行时输出结果最后一行是 。 #include<stdio.h> void main() { int a=1,b=1,i; for(i=1;i<=2;i++) { a=a+b; printf("%d / %d , ",b,a); b=a+b; printf("%d / %d \n",a,b); } printf("\n"); 答案: 3/5,5/8 28

#include <stdio.h> main() { int s=1,n=235; do { s*=n%10; n/=10; [阅读程序] 以下程序运行时输出结果是 。 #include <stdio.h> main() { int s=1,n=235; do { s*=n%10; n/=10; }while(n); printf("%d\n",s); } 答案: 30 29

⑷ 跳转语句: break,continue,return 【考题解析】 [全国选择题] 有以下程序 #include <stdio.h> main() { int x=8; for(;x>0;x--) { if(x%3) { printf("%d,", x--);continue;} printf("%d,", --x ); } 程序的运行结果是( )。 A) 7,4,2, B) 8,7,5,2, C) 9,7,6,4, D) 8,5,4,2, 答案:D 30

A.int a[2]; B.int a[ ]={0,1}; C.int a[3]=0; D.int a[3][4]={0}; 答案: C 3. 构造类型数据 ⑴ 基本类型数组(一维,二维) ① 数组声明及初始化 ② 数组存储结构 ③ 使用数组名引用数组元素 【考题解析】 [单选题] 以下声明中错误的是 。 A.int a[2]; B.int a[ ]={0,1}; C.int a[3]=0; D.int a[3][4]={0}; 答案: C [全国单选题] 下列选项中,能正确定义数组的语句是()。   A)int num[0..2008] ;     B) int num[];   C)int N=2008;   D)  #define N 2008       int num[N];    int num[N]; 答案:D 31

[单选题] 设有声明“int p[10]={1,2},i=0;”,以下语句中与“p[i]=p[i+1],i++;”等价的是 。 A. p[i]=p[i++]; B. p[++i]=p[i]; C. p[++i]=p[i+1]; D. i++,p[i-1]=p[i]; 答案:D [全国单选题] 已知有声明“int m[]={5,4,3,2,1},i=0;”,下列对m数组元素的引用中,正确的是 。 m[--i] B)m[2*2] C)m[m[0]] D)m[m[i]] 答案:B 32

[填空题] 若有声明“char s1[10]=″ABCDE″,s2[10]=″A\\0″;”,则语句 “printf(″%d″,strlen(strcpy(s1,s2)));”的输出结果是 。 答案: 3 [全国选择题] 有以下程序  #include<stdio.h> main() {int a[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0; for(i=0;i<5;i++)s=s+a[b[i]]; printf("%d\n",s); } 程序运行后的输出结果是():   A)6        B)10        C)11       D) 15 答案:  C 33

A.s="Good"; B.s[20]="Good"; C.strcat(s,"Good"); D.strcpy(s,"Good"); [单选题] 已知有声明“char s[20]=”Hello“;”,在程序运行过程中,若要想使数组s中的内容修改为“Good”,则以下语句中能够实现此功能的是 。 A.s="Good"; B.s[20]="Good"; C.strcat(s,"Good"); D.strcpy(s,"Good"); 答案:D 34

A.*(a+2)+3 B.*(*(a+2)+3) C.*(a[2]+3) D.a[2][3] 答案:A [单选题] 已知有声明“int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};”,若需要引用值为12的数组元素,则下列选项中错误的是 。 A.*(a+2)+3 B.*(*(a+2)+3) C.*(a[2]+3) D.a[2][3] 答案:A 35

[阅读程序] 以下程序运行时输出结果中第一行是 (1) ,第三行是 (2) 。 #include <stdio.h> [阅读程序] 以下程序运行时输出结果中第一行是 (1) ,第三行是 (2) 。 #include <stdio.h> #define N 5 void main() { static char a[N][N]; int i,j,t,start=0,end=N-1; char str[ ]="123",ch; for(t=0;t<=N/2;t++) { ch=str[t]; for(i=j=start;i<end;i++) a[i][j]=ch; for(j=start;j<end;j++) a[i][j]=ch; for(i=end;i>start;i--) a[i][j]=ch; for(j=end;j>start;j--) a[i][j]=ch; if(start==end) a[start][end]=ch; start++,end--; } for(i=0; i<N; i++) { for(j=0;j<N;j++) printf("%c", a[i][j]); printf("\n"); } 生成矩阵: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 答案:(1) 11111 (2) 12321 36

[阅读程序] 以下程序运行时输出结果的第一行是 (1) ,第三行是 (2) 。 #include <stdio.h> [阅读程序] 以下程序运行时输出结果的第一行是 (1) ,第三行是 (2) 。 #include <stdio.h> void main( ) { int i,j,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i<j) a[i][j]=1; else a[i][j]=i-j+1; { for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n"); } 生成矩阵: 1 1 1 2 1 1 3 2 1 答案: (1) 1 1 1 (2) 3 2 1 37

⑵ 结构类型变量与数组 ① 定义结构类型 ② 结构类型变量、数组声明及初始化 ③ 用变量名引用结构变量(结构数组元素)的全体成员 ⑵ 结构类型变量与数组 ① 定义结构类型 ② 结构类型变量、数组声明及初始化 ③ 用变量名引用结构变量(结构数组元素)的全体成员 ④ 用变量名引用结构变量(结构数组元素)的基本类型成员 【考题解析】 [单选题] 若有结构类型定义 “typedef struct test{ int x,y[2]; }TEST;”,则以下声明中正确的是 (27) 。 A.struct test x; B.struct x; C.test x ; D.struct TEST x; 答案:A 38

[单选题] 以下结构变量stu1的声明形式中,错误的是 。 A.typedef struct stu{char name[10];float score;}STU ; STU stu1; B.#define STU struct stu STU {char name[10];float score; }stu1; C.struct stu{char name[10];float score;}stu1; D.struct stu{char name[10];float score;}STU; STU stu1; 答案:D [学校单选题] 若有定义 “struct c{ double x,y;}c1={1.2,1.3},c2={1.2,1.3},c3; struct d{ double x,y;}d1={1.2,1.3},d2={1.2,1.3},d3;”, 则以下表达式中正确的是 。 c3=0 B. c1==c2 C. c3=c1 D. d3=c1 答案:C 39

[阅读程序] 以下程序运行后的输出结果第一行是 (1) ;第二行是 (2) 。 #include <stdio.h> [阅读程序] 以下程序运行后的输出结果第一行是 (1) ;第二行是 (2) 。 #include <stdio.h> struct num { int x,y ; } st[ ]={{1,10},{2,20},{3,30},{4,40},{-1,-1}},s1[2],s2[2]; main() { int i=0,j=0,k; for(k=0; st[k].x != -1; k++) { if(st[k].x%2) s1[i++]=st[k]; else s2[j++]=st[k]; } printf (" %d \n %d \n",s1[0].y ,s2[0].y ); 答案: (1) 10 (2) 20 40

指向基本类型变量的指针变量声明、初始化与赋值。 ② 引用指针变量指向的基本类型变量(使用运算符*) 【考题解析】 4. 指针类型数据 ⑴ 基本类型变量的指针操作 ① 基本类型变量地址的获取与保存。 指向基本类型变量的指针变量声明、初始化与赋值。 ② 引用指针变量指向的基本类型变量(使用运算符*) 【考题解析】 [填空题] 若有声明char *p="%d,%d\n"; int a=1,b=2; 则执行语句“printf(p,a,b);”时输出 (4) 。 答案:1,2 [全国选择题] 若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是()。 A)scanf(”%f%f”,x,y);                    B) scanf(”%f%f”,&x,&y); C) scanf(”%lf%le”,px,py);            D) scanf(”%lf%lf”,x,y); 答案:C 41

[全国 选择题] 有以下程序 #include<stdio. h> main() { int m=1,n=2,. p=&m, [全国 选择题] 有以下程序 #include<stdio.h> main() { int m=1,n=2,*p=&m,*q=&n,*r; r=p; p=q; q=r; printf(“%d,%d,%d,%d\n”,m,n,*p,*q); } 程序运行后的输出结果是 A)1,2,1,2     B)1,2,2,1    C)2,1,2,1    D)2,1,1,2 答案:B 42

#include<stdio.h> #include<stdlib.h> int fun(int n) [全国选择题] 有以下程序 #include<stdio.h> #include<stdlib.h> int fun(int n) { int *p; p=(int *)malloc(sizeof(int)); *p=n; return *p; } main() { int a; a=fun(10); printf(“%d\n”,a+fun(10)); } 程序的运行结果是()。 0 B) 10 C) 20 D) 出错 答案:C 43

① 基本类型数组元素地址的获取、保存与算术运算。 ② 引用指针变量指向的基本类型数组元素 ③ 二维数组行地址的获取、保存及算术运算。 (2) 基本类型数组的指针操作 ① 基本类型数组元素地址的获取、保存与算术运算。 ② 引用指针变量指向的基本类型数组元素 ③ 二维数组行地址的获取、保存及算术运算。 行指针变量的声明、初始化。 ④ 引用行指针变量指向的基本类型数组元素 【考题解析】 [单选题] 设指针变量占2个字节的内存空间,若有声明 “char *p=”123“;int c;”,则执行语句“c=sizeof(p);”后,c的值为 。 A. 1 B. 2 C. 3 D. 4 答案: B [全国选择题] 若有定义语句: double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x; 则错误引用x数组元素的是()。 *p B)x[5] C)*(p+1) D)*x 答案:B 44

[单选题] 若有声明“int x[10]={0,1,2,3,4,5,6,7,8,9},*p;”,则值不为4的表达式是 。 A.p=x,*(p+4) B.p=x+4,*p++ C.p=x+3,*(p++) D.p=x+3,*++p 答案: C [单选题] 已知有程序段 “char str[ ][10]={"Aoyun","Beijing"}, *p=&str[0][0]; printf("%s\n",p+10);”, 则执行printf语句后输出为 。 A.Beijing B.Aoyun C.ing D.ng 答案: A 45

for(i=0;i<10;i++) a[i]=i+1; B. for(i=0;i<10;i++) p[i]=i+1; [单选题] 已知有声明“int i,a[10],*p=a;”,现需要将110保存到a[0]a[9]中,以下程序段中不能实现这一功能的是 。 for(i=0;i<10;i++) a[i]=i+1; B. for(i=0;i<10;i++) p[i]=i+1; C. i=1;while(p<a+10) *p++=i++; D. i=1;while(p<a+10) *a++=i++; 答案:D [填空题] 已知有声明 “int a[3][2]={{1,2},{3,4},{5,6}},*p=a[0];”,则执行语句“printf(”%d\n“,*(p+4));”后的输出结果为 。 答案:5 [单选题] 若有声明“int a[3][4], *p=a[0] ,(*q)[4]=a;”,则下列叙述中错误的是 。 A. a[2][3]与q[2][3]等价 B. a[2][3]与p[2][3]等价 C. a[2][3]与*(p+11)等价 D. a[2][3]与p=p+11,*p等价 答案:B 46

“int a[3][3]={0},*p1=a[1],(*p2)[3]=a;”,以下表达式中与“a[1][1]=1”不等价的表达式是 。 [单选题] 已知有声明 “int a[3][3]={0},*p1=a[1],(*p2)[3]=a;”,以下表达式中与“a[1][1]=1”不等价的表达式是 。 A. *(p1+1)=1 B. p1[1][1]=1 C. *(*(p2+1)+1)=1 D. p2[1][1]=1 答案:B [填空题] 若有声明“char s[10]=”remind“;”,执行“puts(s+2);”后的输出结果是 。 答案: mind [单选题] 已知有声明: “char a[ ]="It is mine", *p="It is mine";”, 下列叙述中错误的是 。 A. strcpy(a,“yes”)和strcpy(p,“yes”) 都是正确的 B. a=“yes”和p=“yes”都是正确的 C. *a 等于*p D. sizeof(a)不等于sizeof(p) 47

[全国完善程序] 以下程序的功能是:借助指针变量找出数组元素中的最大值所在数组元素的下标值。 #include<stdio.h> main() {  int a[10],*p,*s;    for(p=a;p-a<10;p++)   scanf(“%d”,p);    for(p=a,s=a;p-a<10;p++)   if(*p>*s)  s=__________;    printf(“index=%d\n”,s-a); } 答案:p 48

① 结构变量地址、结构数组元素地址的获取与保存。 指向结构变量指针变量的声明、初始化与赋值。 (3) 结构类型变量、数组的指针操作 ① 结构变量地址、结构数组元素地址的获取与保存。 指向结构变量指针变量的声明、初始化与赋值。 ② 引用指针指向的结构类型变量(结构类型数组元素)的基本类型成员 结构变量成员的地址、结构数组元素成员的地址获取与保存。 指向结构变量成员的指针变量声明、初始化与赋值。 【考题解析】 49

[单选题] 已知有结构定义和变量声明如下: struct student { char name[20]; int score; struct student *h; }stu,*p; int *q; 以下选项中错误的是 。 A.p=&stu; B.q=&stu.score; C.scanf("%s%d",&stu); D.stu.h=p; 答案: C 50

[阅读程序] 以下程序运行时输出结果的第一行是 (1) ,第二行是 (2) #include <stdio.h> [阅读程序] 以下程序运行时输出结果的第一行是 (1) ,第二行是 (2) #include <stdio.h> struct s { int x,*y; }*p; int d[5]={10,20,30,40,50}; a[5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]}; void main( ) { p=a; printf("%5d",p->x++); printf("%5d\n",p->x); printf("%5d",*p->y); printf("%5d\n",*++p->y); } 答案: (1) 100 101 (2) 10 20 51

A. (*y).code[0]='2'; B. y[0].code[0]='2'; [单选题] 设有结构定义及变量声明如下: struct product { char code[5]; float price; }y[4]={"100",100}; 以下表达式中错误的是 。 A. (*y).code[0]='2'; B. y[0].code[0]='2'; C. y->price=10; D. (*y)->price=10; 答案: D 52

[全国单选题] 有以下程序 #include<stdio.h> main() (4) 指针类型数组的声明和使用 【考题解析】 [全国单选题] 有以下程序 #include<stdio.h> main() { char *a[ ]={"abcd","ef","gh","ijk"}; int i; for(i=0;i<4;i++) printf("%c",*a[i]); } 程序运行后输出的结果是 A)aegi      B)dfhk    C)abcd     D)abcdefghijk 答案:A [全国单选题] 若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是()。 A) p=a      B) q=a      c) q[0]=a    D)p=&a[2][1] 答案:B 53

[全国填空题] 有以下程序 #include<stdio.h> main() { int a[]={1,2,3,4,5,6},*k[3],i=0; while(i<3) { k[i]=&a[2*i]; printf("%d",*k[i]); i++; } 程序运行后的输出的结果是___________ 答案:135 54

5. 函数 ⑴ 函数定义、函数声明、函数调用 (2) 函数调用时基本类型实参的传递与使用。实参与形参的类型兼容性要求。实参类型的自动转换 5. 函数 ⑴ 函数定义、函数声明、函数调用 (2) 函数调用时基本类型实参的传递与使用。实参与形参的类型兼容性要求。实参类型的自动转换 【考题解析】 [单选题] 以下函数定义中正确的是 (25) 。 A. double fun(double x,double y){ } B. double fun(double x;double y){ } C. double fun(double x,double y);{ } D. double fun(double x,y){ } 答案:A 55

[单选题] 以下选项均为fun函数定义的头部,其中错误的是 。 A. int fun(int x,int y[ ]) B. int fun(int x,int y[x]) C. int fun(int x,int y[3]) D. int fun(int x,int *y) 答案:B [学校单选题] 已知函数fun定义的头部为“void fun(int x, int y[])”,以下fun函数声明中正确的是 。 void fun(int x,int y[ ]); B. void fun(int x, int *y); void fun(int ,int); D. void fun(int ,int * ); 答案:C [单选题] 若有声明 “long fun(int *x,int n,long *s);int a[4]={1,2,3,4}; long b,c;”,则以下函数调用形式中正确的是 。 A. c=fun(a,4,b); B. c=fun(a[ ],4,&b); C. c=fun(a[4],4,b); D. c=fun(a,4,&b); 答案:D 56

[单选题] 若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是 。 A. 实参和其对应的形参占用同一存储单元 [单选题] 若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是 。 A. 实参和其对应的形参占用同一存储单元 B. 形参不占用存储单元 C. 同名的实参和形参占用同一存储单元 D. 形参和实参占用不同的存储单元 答案:D [全国选择题] 函数调用语句func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8))); 中func函数的实参个数是()。 A)3 B)4 C)5 D)8 答案:A 57

#include <stdio.h> void func(int b) { int a; a=b; b=10; } [阅读程序] 以下程序运行时输出结果是 。 #include <stdio.h> void func(int b) { int a; a=b; b=10; } void main() { int a=10,b=20; func(b); printf("%d,%d",a,b); 答案: 10, 20 58

[阅读程序] 以下程序运行时输出到屏幕的结果是 。 #include <stdio.h> [阅读程序] 以下程序运行时输出到屏幕的结果是 。 #include <stdio.h> void swap(int a,int b) { int t; if(a>b)t=a,a=b,b=t; } void main() { int x=13, y=11, z=12; if(x>y) swap(x,y); if(x>z) swap(x,z); if(y>z) swap(y,z); printf("%d\t%d\t%d\n", x,y,z); 答案:8. 13 11 12 59

#include<stdio.h> int f(int x, int y) { return x+y; } [阅读程序] 以下程序运行时输出结果是 。 #include<stdio.h> int f(int x, int y) { return x+y; } void main() { double a=5.5, b=2.5; printf("%d",f(a,b)); } 答案: 7 60