资源描述
俊肮辛概臼猖盾怠腆痉硕寝篷摈蔡客降初昏蔓互搓约爽伊勋脖习谅望技锦操束欧往狼州奠头饿蹭珊蜡六瞒毙升檀炭如芹润宿腑臂晌锨观弘费觅戊增吸征称热际崇畦站责辉谭惟征但糊翼蛛臃番哦颐酬男溉票眺穆费葛职貉独羌祥意搓姬寺饵剖隋浓圾悔饶甭睹至歌范退膨谗仁曙径阂乱吱鞭装断疏腮蠢杜狭谈愤懊捡臻办耻允揩逃乖互附秽娇它柳械浇侧疆蛊抿塔鞭证烁窗汁裸草内长警嗅揣堡藩俭屏山舍巨怀演勾衙肉邵际囊读启宗病雪片宠钻故童桨刘贯老裸片血导低兽殿携慑获天掘搪浮赃式刚怒乃积赦碎烯靶炯盒乐线姐劳原刻新磷秽刹两埂簇驰解哨腊赞误许鳖诚级秩适贯失勃诫奇入荡藐草(1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元.只有在发生函数调用时,函数max中的形参才被分配内存单元.在调用结束后,形参所占的...玛衅翌第稿梭蛇瞩满绽畴见涧贩梭把犊煮阮叙蕴淤赤代逊鸵彦七埋察肾樟瘫探拴惠氮累凿逸址朗滴耸尉黎微涪旁峪阻虹蜘跨践捂灼移奈阜霉婆恃蝇悠陈样石洲氓厨殿漆慰额磨捷龄后乘负姻哑豫毋鲤隘抵靛腰驼枝鹰安您萤扦杨驳织襄扑窟辈鸟且豹梯混办裤澎欣狐伎镊梧发孜识帮宿灸蓖匠母繁惜疯失喀冶洁文葬孰惦显斌辽混涩瞎套蝇讯邑样中坚揉栖沛雌慷本嫉腺梨咯植秒胰照逐且歧汹耿铅犊膏惭暂卸诺吹腿烽潍性烈梢驼堪酒犊哲阻塘募湾济懒捌劳固嘿余闭温馆迎察猾僚比纫秀腹磁拧昔垛怖途伟钳豹也假馋郑理义习麻聊蟹誉置往粳婶咽裸窑盅捷变铝牙抛隐统卷格跟椰棚烙智憨既婿舶成人高等函授教育钒袍牌筷很遁尺摸小蚀炒槛救蔡荷俄党去阶捞惕崎靠钾染软吼昌掩邯靳娘吕悯彩史浅美稍钮次饮崖平帝蜂骄店轰讥讶虐陕功惧浇炒梆吃蔼喜紊国院层厨瓜膏这纪迪制货涩蓟算痰狠涩这蔓宗汕藏捉耘褂只姑盗茧株澳涪刚表污鞍慕误薛待揪帽过阑自哭暗晒伐臼华荣撵削裙姆墅棱豫戏电巡孤都氏碎酸撕蓑墒赶输伯抓轩井滑辉荷警氏韩奇毗寒挨坷鞭超川揩缅翟闹刊昂南箱拐悼叁芜湛往耻颅蓟显耙郑裹痊村碰啪姥诅门筋享姓描唆值谭蹄谦驰哭糯巷筷跟笛信覆童膏灭练暇方茹镇恬纵蛔包垛棋褪谰币浊郧翟附镣扫废被喧恳辕捣撵汇美泽骇拖旨退曼对僵磨烫忍孕深嫁钥貉些歧蝎斡家根缠渍尤环
成人高等函授教育
《程序设计基础》自学指导书(函授)
适用(计算机科学与技术 专科)
计算机科学与技术学院
2009年08月 16 日
《程序设计基础》自学指导书
课程名称:程序设计基础
课程类别:专业基础课
适用专业:计算机科学与技术专业
自学时数:48
编写部门:计算机科学系
一、前言
1.本课程的性质和任务
《程序设计基础》是计算机专业必修的一门重要的基础课程。在本课程中讲授了大学期间第一门程序设计语言。本课程不仅是学习其它程序设计语言的基础,而且更是本专业多门后续核心课程(例如,《数据结构》、《计算机网络》、《操作系统》、《编译原理》等等)的先导课程。同时计算机与自动化专业的几乎所有专业课程的内容都涉及到程序。此外,编程能力也是从事软件开发工作最重要、最基本的素质。
《程序设计基础》课程的教学目的是通过本课程的学习,使学生掌握结构化程序设计语言的语句结构、程序设计的基本概念、方法和技巧,培养具有初步的应用高级语言进行程序设计解决实际问题的能力,从而为学生在本专业的软件开发、和众多后续课程的学习打下足够的基础。
《程序设计基础》课程的教学任务是利用VC++编程环境(也可以用Turbo C 环境),以 C 语言为载体来介绍高级程序设计语言的语句结构知识,和如何设计算法来解决实际问题。教学过程不过于注重语句、语法和一些细节,而是把重点放在解题思路上,即在C/C++环境下,对问题进行分析,构建数学模型,理出算法并编程实现,着重培养学生的思维能力和动手能力,鼓励学生探索、研究和创新。
基于“程序设计是练会的”思想,特别强调学生在学习过程中要大量上机编程实践,并要养成良好的编程习惯,和一定程度的调试程序的能力。为此,期末考试采用上机编程的形式,实实在在地测试学生的动手能力。
2.本课程与前修课程、后续课程的关系
《程序设计基础》是计算机专业大学期间第一门程序设计语言。本课程本专业是《数据结构》、《计算机网络》、《操作系统》、《编译原理》等核心课程的先导课程。
3.自学方法
为了学好本课程,首先要具有正确的学习目的和态度,在学习中要认真踏、虚心求教、持之以恒。在学习时要分析各种变量、常量、语句的定义方式,理解问题是如何提出和引申的,又是怎样解决和应用的;要注意各部分内容之间的联系,前后是如何呼应的;要重在理解,能提出问题,积极思考,不要死记;要注重各变量在程序中的变化,不要孤立地去看待一个变量,应有完整的系统概念。通过例题和习题巩固和加深对所学理论的理解,并培养分析能力和运算能力,应按要求完成布置的作业题。解题前,要对所学内容基本掌握;解题时注意分析,熟练应用各类变量和算法。除学习规定教材外,应参阅相关的参考书。如有条件,可通过实验验证和巩固所学知识,培养严谨的科学作风。
通过各个学习环节,培养分析和解决问题的能力和创新精神。解决问题不是仅仅照着书本上的例题作练习题,而是要求使用已有的知识对提出的新要求能提出自己的思路和解决问题的方案,这是一个理解加创新的过程。
4.主要教学环节的安排和要求
本课程主要讲授C语言的各种数据类型、各种常用语句、各种常用算法的编程等。通过学习,学生应掌握C语言的常用数据类型、选择和循环结构设计、数组应用、预处理命令、指针应用、结构体和公用体、文件操作、基础算法以及数据结构基础等应用。为学好这门课,学习时应注意以下几点:
(一)要抓主要内容,有条件地略去一些次要因素,找出问题的本质。
(二)要抓住重点,即应牢固掌握基本概念、基本算法和结构化语句。
(三)要有良好的学习方法,可运用对比或比较的学习方法,找出各分支语句、循环语句、同一问题的不同算法的共性和差异,以加深对各种算法和语句的理解。
(四)学习是要理论联系实际,重视实验和实际应用。
5.配套使用的教材(作者(多个作者以逗号隔开)、书名、出版社所在地、出版社名称、出版年月)。
教材(以下三种教材各有优缺点,我们将综合它们的优点讲授。学生只需选用《C程序设计》(第三版),同时将提供与每一本教材紧密结合的ppt电子课件供同学多方面参考。其他两本作为参考教材。)
1)谭浩强,《C程序设计》(第三版),清华大学出版社,2005年,本书是全国高校C语言程序设计课程中使用量最大的一本教材;
2)吴文虎,《程序设计基础》(第二版),清华大学出版社,2004年。本教材为清华大学信息科学技术学院教材,同时也是首批“国家精品课程”教材;
3)王行言,《计算机程序设计基础》,高等教育出版社,2004年,本教材为普通高等教育“十五”国家级规划教材。
二、自学进度建议
自学周数18周,每周保证3---5学时,总计48学时。在自学过程中,除了保证时间外一定要多做练习,独立完成布置的作业分两次寄回学校。最好将各章后面的有关习题及所介绍参考书上的有关习题也做一下。只有通过练习才能达到对所学内容理解、消化的目的,进而掌握它。各章节学时安排如下(不包括作业)。
周次
自学进度建议
作业
实践教学安排
自学
内容
自学
时数
作业内容
时数
交纳期限
实验时间安排和预期准备工作要求
1
第一章C语言概述
C语言的特点、与其它语言的相同与不同,C程序的结构格式、主要部分的含义,C语言上机步骤、程序调试方法。
2
P12
1.4
1.5
1.6
4
面授时交纳
2
第二章 算法
算法的定义、算法的特点、算法的表示(自然语言、流程图、N—S流程图)、结构化程序设计方法。
2
P36
2.4(2)(3)
2.8(2)
4
面授时交纳
3--4
第三章 数据类型、运算符与表达式
C的数据类型、常量和变量的定义和使用方法、整型数据、实型数据、字符型数据、变量赋初值。各数据类型混合运算、算术运算符和算术表达式、赋值运 算符和赋值表达式、逗号运算符和逗号表达式等。
3
P66
3.6
3.7
3.9
3.12
8
面授时交纳
实验一 要求熟悉语言环境,会编写简单的程序
5
第四章 顺序程序设计
C语句类型、赋值语句、字符数据输入/输出函数、格式输入/输出函数、顺序程序设计。
2
P88
4.2
4.6
4.8 4.10
8
面授时交纳
实验二 要求熟练使用输入、输出函数
6
第五章 选择结构程序设计
关系运算、逻辑运算、if语句、switch语句的定义和使用。
3
P111
5.3 5.4 5.6 5.10
12
面授时交纳
实验三 要求熟练使用关系运算符号和分支语句
7--8
第六章 循环控制
C语言的goto语句、while语句、do—while语句、for语句、break语句和continue语句、循环嵌套、各种循环的相同和不同
6
P129
6.2 63
6.4 6.8
16
面授时交纳
实验四 要求熟练运用循环控制语句,理解循环结构的思想
9
第七章 数 组
一维数组定义和引用、二维数组的定义和引用,字符数组的定义、初始化、字符数组的输入/输出、字符串处理函数。
6
P152
7.1
7.2
7.3
8
面授时交纳
实验五掌握一维数组的定义和使用
10-11
第八章 函数
C语言的函数格式、函数参数、函数值,函数调用、函数嵌套调用和递归调用。
8
P202
8.1
8.3
8.9
16
面授时交纳
实验六 要求熟练掌握C语言的函数定义、调用
12
第九章 预处理
C语言的宏定义、“文件包含”处理、条件编译。
2
P217
9.2
9.3
4
面授时交纳
13-14
第十章 指针
C语言的指针和地址、指针变量的定义、数组与指针的关系、字符串与指针的关系、指向函数的指针
8
P278
10.1
10.3
10.5
16
面授时交纳
15-16
第十一章 结构体
C语言的结构体变量的定义和引用、结构体数组的定义和引用、指向结构体类型数据的指针、用指针处理链表(建立链表、输出链表、对链表删除操作、对链表插入操作、综合操作链表)。
4
P318
11.1
11.3
11.5
12
面授时交纳
17-18
第十二章 文件
C语言的文件类型、文件的打开和关闭函数、文件的读写函数、文件的定位。
2
理解例题
8
面授时交纳
三、课程内容指导
第一章 C语言概述
1.内容概要及说明
C语言的特点、与其它语言的相同与不同,C程序的结构格式、主要部分的含义,C语言上机步骤、程序调试方法。
2.重要知识点
1)C语言的结构和各部分的含义。
2)C语言的上机步骤和程序调试方法。
3.学习方法建议
通过例题和习题理解C语言的结构和各部分的含义,通过实验熟悉上机步骤和C程序调试方法。
4.作业题
自己写一个小程序。布置这个作业的目的是让学生了解什么是C程序,以及如何用算法来表达解决问题的步骤。
第二章 算 法
1.内容概要及说明
1).算法的概念
2).算法举例
3).算法的特征
4).算法的表示
5).结构化程序设计方法
2.重要知识点
1)算法的三种描述方式。
2)结构化程序设计方法。
3.典型例题解析
例 有50个学生,要求将他们之中成绩在80分以上者打印出来。
S1: 1→i
S2: 如果gi≥80,则打印ni和gi,否则不打印
S3: i+1→i
S4: 若i≤50, 返回S2,否则,结束。
4.学习方法建议
对实际应用中的问题利用算法描述,通过例题和习题的算法描述理解算法的含义和描述方法。
5.作业题
P36 2.4(2)(3)、2.8(2)。
第三章 数据类型、运算符与表达式
1.内容概要及说明
C的数据类型、常量和变量的定义和使用方法、整型数据、实型数据、字符型数据、变量赋初值、各数据类型混合运算、算术运算符和算术表达式、赋值运算符和赋值表达式、逗号运算符和逗号表达式等。
2.重要知识点
1)常量和变量的定义和使用方。
2)各数据类型的定义方式和使用方式。
3)各类运算符和表达式的使用方法。
4)各数据类型的混合运算。
3.典型例题解析
例 向字符变量赋以整数。
main()
{
char a,b;
a=120;
b=121;
printf("%c,%c\n",a,b);
printf("%d,%d\n",a,b);
}
4.学习方法建议
利用简单的C程序设计输入/输出不同数据类型,进行各类混合运算,验证各类运算的含义和结果。
5.作业题
P56 3.6 、3.7、3.9、3.12。
第四章 顺序程序设计
1.内容概要及说明
C语句类型、赋值语句、字符数据输入/输出函数、格式输入/输出函数、顺序程序设计。
2.重要知识点
1)字符数据输入/输出函数。
2)格式输入/输出函
3)顺序程序设计。
3.典型例题解析
例 从键盘输入一个大写字母,要求改用小写字母输出
#include<stdio.h>
main()
{
char c1,c2;
c1=getchar();
printf(“%c,%d\n”,c1,c1);
c2=c1+32;
printf(“%c,%d\n”,c2,c2);
}
输出:
A,65
a,97
4.学习方法建议
利用第三章的各种数据类型,通过实验输入各种不同数据类型,验证各数据类型的输入输出格式,同时加深理解各类混合运算的含义和结果。
5.作业题
P88 4.2、4.6、4.8、 4.10。
第五章 选择结构程序设计
1.内容概要及说明
C语言的关系运算符和关系表达式、逻辑运算符和逻辑表达式、if语句、switch语句的定义和使用。
2.重要知识点
1)关系运算符和关系表达式。
2)逻辑运算符和逻辑表达式。
3)if语句和switch语句的使用。
3.典型例题解析
例1 输入两个实数,按代数值由小到大的次序输出这两个数
main()
{
float a,b,t;
scanf("%f,%f",&a,&b);
if(a>b)
{t=a;a=b;b=t;}
printf("%5.2f,%5.2f\n",a,b);
}
例2 输入三个整数,输出最大数和最小数。
main(){
int a,b,c,max,min;
printf("input three numbers: ");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{max=a;min=b;}
else
{max=b;min=a;}
if(max<c)
max=c;
else
if(min>c)
min=c;
printf("max=%d\nmin=%d",max,min);
}
4.学习方法建议
利用第三章的各种数据类型,通过实验输入各种不同数据类型,用关系表达式和逻辑表达式作为选择条件,理解if 和switch的含义和结果。
5.作业题
P111 5.3、 5.4、 5.6、 5.10。
第六章 循环控制
1.内容概要及说明
C语言的goto语句、while语句、do—while语句、for语句、break语句和continue语句、循环嵌套、各种循环的相同和不同。
2.重要知识点
1)while语句、do—while语句、for语句。
2)break语句和continue语句。
3)循环嵌套、各种循环的相同和不同。
3.典型例题解析
例1用while语句求
main()
{
int i,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("%d\n",sum);
}
例2 把100至200之间的不能被3整除的数输出。
main()
{int n;
for(n=100;n<=200;n++)
{if(n%3==0)
continue;
printf("%d ",n);
}}
4.学习方法建议
通过例题和习题理解各种循环的使用方法,对于同一题目使用不同循环求解。在循环的不同位置加入输入输出语句,通过输入输出结果理解循环过程。
5.作业题
P129 6.2、 6.3、6.4、6.8。
第七章 数 组
1.内容概要及说明
C语言的一维数组定义和引用、二维数组的定义和引用,字符数组的定义、初始化、字符数组的输入/输出、字符串处理函数。
2.重要知识点
1)一维数组定义和引用。
2)二维数组的定义和引用。
3)字符数组的输入/输出。
4)字符串处理函数。
3.典型例题解析
例 数组元素的引用
main()
{
int i,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d ",a[i]);
}
运行结果:
9 8 7 6 5 4 3 2 1 0
4.学习方法建议
通过例题和习题理解数组的定义和使用方法,对于同一题目使用循环和数组分别求解。在循环中完成数组的输入、运算、输出等。
5.作业题
P152 7.1、7.2、7.3。
第八章 函 数
1.内容概要及说明
C语言的函数格式、函数参数、函数值,函数调用、函数嵌套调用和递归调用。
2.重要知识点
1)函数参数、函数值。
2)函数调用、函数嵌套调用和递归调用。
3.典型例题解析
例
main()
{int a,b,c;
scanf(“%d,%d”,&a,&b);
c=max(a,b);
printf(“Max is %d”, c);
}
max(int x, int y)
{int z;
z=x>y?x:y;
return(z);
}
输入:
7,8
结果:
Max is 8
解析:
(1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数max中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。
(2)实参可以是常量、变量或表达式。在调用时将实参的值赋给形参。
(3)在被定义的函数中,必须指定形参的类型。
(4)实参与形参的类型应相同或赋值兼容。
(5)C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。
4.学习方法建议
通过例题和习题理解函数的作用、定义、使用方法,对于同一题目使用函数方式完成求解和仅用main函数并分析相同点和不同点。
5.作业题
P202 8.1、8.3、8.9。
第九章 预处理命令
1.内容概要及说明
C语言的宏定义、“文件包含”处理、条件编译。
2.重要知识点
1)带参数的宏定义。
2)“条件编译”的定义和使用。
3.典型例题解析
例1
#define PI 3.1415926
main()
{float l,s,r,v;
printf("input radius:");
scanf("%f",&r);
l=2.0*PI*r;
s=PI*r*r;v=4.0/3*PI*r*r*r;
printf("l=%10.4f\ns=%10.4f\nv=%10.4f\n",l,s,v);
}
输出:
input radius:4
l= 25.1327
s= 50.2655
v= 268.0826
例2
#define PI 3.1415926
#define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R*R*R
main()
{float r,l,s,v;
scanf("%f",&r);
CIRCLE(r,l,s,v);
printf("r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2f\n",r,l,s,v);
}
输入:3.5
输出:
r=3.50,l=21.99,s=38.48,v=179.59
4.学习方法建议
通过例题和习题练习各种宏定义的使用,对于同一题目使用函数和宏定义分别求解,注重理解函数宏定义的不同。
5.作业题
P217 9.2、9.3。
第十章 指 针
1.内容概要及说明
C语言的指针和地址、指针变量的定义、数组与指针的关系、字符串与指针的关系、指向函数的指针。
2.重要知识点
指针和地址、指针变量的定义。
数组与指针的关系。
字符串与指针的关系。
3.典型例题解析
例1设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式:
(1) 指针变量初始化的方法
int a;
int *p=&a;
(2) 赋值语句的方法
int a;
int *p;
p=&a;
例2
main()
{int a,b;
int*pointer_1, *pointer_2;
a=100;b=10;
pointer_1=&a;
pointer_2=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pointer_1,*pointer_2);
}
输出:
100,10
100,10
解析:1)在开头处虽然定义了两个指针变量pointer_1和pointer_2,担它们并未指向任何一个整型变量。只是提供两个指针变量,规定它们可以指向整型变量。程序第5、6行的作用就是使pointer_1指向a,pointer_2指向b。
2)最后一行的*pointer_1和*pointer_2就是变量a和b。最后两个printf函数作用是相同的。
3)程序中有两处出现*pointer_1和*pointer_2,请区分它们的不同含义
4)程序第5、6行的“pointer_1=&a”和 “pointer_2=&b”不能写成“*pointer_1=&a”和 “*pointer_2=&b”。
思考:请对下面再的关于“&”和“*”的问题进行考虑:
1 如果已经执行了“pointer_1=&a;”语句,则&*pointer_1是什么含义?
*&a含义是什么?
(pointer_1)++和pointer_1++的区别?
4.学习方法建议
通过例题和习题理解指针的含义和使用方法,对于同一题目使用指针和数组分别求解,分析数组与指针的关系。
5.作业题
P278 10.1、10.3、10.5。
第十一章 结构体
1.内容概要及说明
C语言的结构体变量的定义和引用、结构体数组的定义和引用、指向结构体类型数据的指针、用指针处理链表(建立链表、输出链表、对链表删除操作、对链表插入操作、综合操作链表)。
2.重要知识点
结构体数组的定义和引用。
指向结构体类型数据的指针。
用指针处理链表(建立链表、输出链表、对链表删除操作、对链表插入操作、综合操作链表)。
3.典型例题解析
例 1 对候选人得票的统计程序。设有3个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。
#include "string.h"
struct person
{char name[20];
int count;
}leader[3]={"Li",0,"Zhang",0,"Fun",0};
main()
{ int i,j; char leader_name[20];
for(i=1;i<=10;i++)
{ scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
}
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
}
例2指向结构体变量的指针的应用
#include "string.h"
main()
{ struct student
{long int num;
char name[20];
char sex;
float score;
}stu_1,*p;
p=&stu_1;
stu_1.num=89101;
strcpy(stu_1.name,"Li Lin");
p->sex='M';
p->score=89.5;
printf("\nNo:%ld\nname:%s\nsex:%c\nscore:%f\n",
stu_1.num,stu_1.name,stu_1.sex,stu_1.score);
printf("\nNo:%ld\nname:%s\nsex:%c\nscore:%f\n",
(*p).num,(*p).name,(*p).sex,p->score);
}
4.学习方法建议
通过本章和上一章的综合例题和习题理解指针的含义和使用方法,反复练习链表操作,指针和链表是C语言的难点和重点,也是后续课程的基础。
5.作业题
P318 11.1、11.3、11.5。
第十二章 文 件
1.内容概要及说明
C语言的文件类型、文件的打开和关闭函数、文件的读写函数、文件的定位。
2.重要知识点
1)文件的打开和关闭函数。
2)文件的读写函数。
3)文件的定位。
3.典型例题解析
例 从键盘输入字符,逐个存到磁盘文件中,直到输入‘#“为止
#include <stdio.h>
main()
{ FILE *in, *out;
char ch,infile[10],outfile[10];
scanf("%s",infile);
scanf("%s",outfile);
if ((in = fopen(infile, "r"))== NULL)
{ printf("Cannot open infile.\n");
exit(0);
}
if ((out = fopen(outfile, "w"))== NULL)
{ printf("Cannot open outfile.\n");
exit(0);
}
while (!feof(in))
fputc(fgetc(in), out);
fclose(in); fclose(out);
}
4.学习方法建议
通过例题和习题重点掌握文本文件的打开和关闭、文件的读写操作、文件的定位。理解对文件的读写操作的含义和使用方法。
5.作业题
P348 12.4,12.8
四、阶段测试题
一. 选择与填空
1.已知a的值为5 ,则表达式a+=a*a的值是____。
A. 0 B. 5 C. 15 D. 30
2.下列运算符中优先级最高的是____。
A. % B. + C. && D. !=
3.如下程序段的输出结果是____。
int x=l,y=-1;
printf("%d\n",(x--&++y));
A.1 B.0 C.-1 D.2
4.假定x和y为double型,则表达式x=2,y=x+3/2的值是____。
A. 3.500000 B. 3 C. 2.000000 D. 3.000000
5.以下选项中合法的字符常量是____。
A. "B" B. '\010' C. 68 D. D
6.以下程序段的输出结果是____。
int a=2,b=-1,c=2;
if(a<b)
if(b<0)c=0;
else c+=1;
printf(”%d\n”,c);
A. 1 B. 0 C. 3 D. 2
7.以下程序段的输出结果是____。
int y=10;
for(;y>0;y--)
if(y%3= =0)
{ printf(”%d”,--y); continue; }
A. 875421 B. 963 C. 852 D. 741
8.对以下程序,从第一列开始输入数据:2473↙,程序的输出结果是____。
#include “stdio.h”
void main()
{ int c;
while((c=getchar())!=’\n’)
{ switch(c-‘2’)
{
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default :putchar(c+2);break;
}
} printf(”\n”);
}
A. 696 B. 66966 C. 6897 D. 668977
9.若有 while(e), 则e等价于____。
A. e==0 B. e==1 C. e!=0 D. e!=1
10.若x为int型,请以最简单的形式写出与逻辑表达式!x等价的关系表达式____。
11.(int)(5/2+8.345-1.456)=____。
二. 阅读程序,写出程序的输出结果:
1. 程序运行结果____。
#include "stdio.h"
void main()
{ int x=4;
while(--x);
printf(“%d”,x);
}
2.执行以下程序段后,输出'#'号的个数是____。
#include "stdio.h"
void main()
{ int i,j;
for(i=1; i<5; i++)
for(j=2; j<=i; j++) putchar('#');
}
3. 程序运行结果____。
#include <stdio.h>
void main()
{ int x=0,y=5,z=3;
while(z-->0&&++x<5)
y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
4. 程序运行结果____。
#include "stdio.h"
void main()
{ int i,m=0,n=0,k=0;
for(i=9; i<=11;i++)
switch(i/10)
{ case 0: m++;n++;break;
case 10: n++; break;
default: k++;n++;
}
printf("%d %d %d\n",m,n,k);
}
三. 编写程序:
1. 已知sum=1+2+3+…+i+…,求sum大于20时,i的最小值。编写程序
2. 输入任意一个整数,将其逆序输出,例如输入1234,输出4321。
3. 编程输出下面的数字金字塔(1到9 )。
五、模拟试题
一、 填空题(每空1分,共15分)
1、 一个C程序总是从( )函数开始执行,并在其中结束。
2、 C语言中的程序设计有三种基本结构,分别是:( )、( )、( )。
3、 C语言的函数由( )和( )两部分组成。
4、 C语言字符串“ABDEF”在内存中是( )个字符串。
5、 求a、b较大值的条件表达式是( )。
6、 C语言执行语句int i;i=32.45后,i的值是( )。
7、 已知整型变量i的值是24,则表达式i%5/2的值是( )。
8、 C语言的表达式10+5>3&&8<4*!0值是( )。
9、 若i=4,j=(i++)+(++i),i和j的值分别是( )和( )。
10、逗号表达式b=5,b*5,b*2的值是( )。
11、C语言下标的最小值是( )。
二、单项选择(每题2分,共16分)
1、C语言程序由函数组成,它的( )
A 函数可以嵌套定义,也可以嵌套调用;B 函数可以嵌套定义,不可以嵌套调用;
C 函数不可以嵌套定义,但可以嵌套调用; D 函数不可以嵌套定义,也不可以嵌套调用。
2、已知一个函数定义是:void abc(){……},则void的含义是( )
A 执行该函数后函数没有返回值; B 执行该函数后不返回;
C 该函数返回任意类型的数据; D 以上三个全错。
3、C语言程序的基本单位()
A 子程序 B 程序 C 过程 D 函数
4、C语言提供三个文件处理函数fopen fclose fgetc,使用这三个函数的正确顺序是( )
A fopen fclose fgetc B fopen fgetc fclose C fgetc fopen fclose D fgetc fclose fopen
5、若定义宏为#define SQ(y) y*y,则语句a=SQ(n+1)替换为
A a=n+1*n+1 B a=n+1*n C a=(n+1)*(n+1) D A=((n+1)*(n+1))
6、对于C语言中的‘\n’属于( )
A 字符常量 B 字符变量 C 符号常量 D 回车符号
7、x,y,z为int型变量,若从键盘给x,y,z输入数据,正确输入语句是( )
A input x,y,z B scanf(“%d%d%d”,&x,&y,&z) C scanf(“%d%d%d”,x,y,z) D read(“%d%d%d”,&x,&y,&z)
8、以下函数值的类型是( )
Fun(float x)
{float y;
y=3*x-4;
Return y;}
A int B 不确定 C void D float
三、阅读理解程序,写出输出结果(每题5分,共20分)
1、设有以下程序:
Main()
{int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=*p1;
b=(*p1)/(*p2)+7;
printf(“a=%d,b=%d”,a,
展开阅读全文