西安交通大学14春学期《程序设计基础》离线作业.docx
- 文档编号:9423086
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:34
- 大小:33.97KB
西安交通大学14春学期《程序设计基础》离线作业.docx
《西安交通大学14春学期《程序设计基础》离线作业.docx》由会员分享,可在线阅读,更多相关《西安交通大学14春学期《程序设计基础》离线作业.docx(34页珍藏版)》请在冰豆网上搜索。
西安交通大学14春学期《程序设计基础》离线作业
第一章程序设计基础
本章要点:
1.计算机基础
2.程序设计的基础与发展
3.结构化程序设计
4.面向对象程序设计
本章目标:
1.了解C语言的背景
2.掌握C语言程序的结构
3.领会C语言程序设计的风格
4.会绘制流程图
本章重点:
1.面向对象设计
2.C程序结构
3.流程图的绘制
本章难点:
1.C程序结构
2.流程图的绘制
作业题
一、填空题
1.计算机系统是由()、()两部分组成。
2.一台计算机从硬件系统看主要由四个部件组成:
()、()、()()。
3.软件系统包括()、()两部分.
4.C语句大致可分为以下几类:
()、()、()、()、()。
5.一个程序包括两方面内容:
()和().
二、选择题
1.下列哪个不是算法的特征()
A.有穷性B.可行性C.不确定性D.输入
2.()是用来描述对象的属性和行为的
A.实体B.类C.对象D.现象
3.下列哪些是算法的描述方法()
A.自然语言描述法B.流程图描述法C.伪代码描述法D.N-S流程图描述法
4.计算机算法可以分为两大类()
A.数值运算算法B.非数值运算算法C.符号运算算法D.非符号运算算法
5.每条C语句后面都要有一个()
A.逗号B.冒号C.分号D.括号
三、问答题
1.简述结构化程序设计的特征.
2.简述C程序的特点.
3.用文字描述C程序的执行过程.
4.请用伪代码描述:
判断并输出3到100之间的素数.
5.用N-S流程图描述第4题的伪代码:
第二章C语言基本数据类型、运算符和表达式
本章要点:
1.C语言基本语法单位
2.常量和变量
3.C语言基本数据类型
4.运算符和表达式
5.位运算
6.数据类型转换
本章目标:
1.了解基本类型及其常量的表示法
2.掌握变量的定义及初始化方法
3.掌握运算符与表达式的概念
4.领会C语言的自动类型转换和强制类型转和赋值的概念
本章重点:
1.常用的数据类型、运算符
2.C语言表达式的表示
本章难点:
1.类型之间的转换
2.表达式的书写
作业题
一、填空题
1.程序执行过程中其值保持不变的量称为()。
它又可以分为()、()、()。
2.程序运行过程中不断改变的量称为(),在C语言中,它必须“(),后使用”。
3.实型变量分为()、()两种类型。
4.五种算术运算符分别是()、()、()、()、()。
5.由关系运算符连接表达式构成的式子,称为().其值为()或()。
二、选择题
1.下列关于标识符的说法不正确的是()
A.第一个字符必须是字母或下划线
B.第一个字符以后必须由字母、下划线或数字组成
C.大小写字母表示相同意义
D.标识符不能用C中的关键字
2.设:
x=9;y=++x;,则产生的结果是()
A.x=9;y=9;B.x=10;y=10;C.x=9;y=10;D.x=10;y=9;
3.下列说法不正确的是:
()
A.++、--只能用于变量B.++、--比负号运算符的优先级要高
C.++、--的结合方向是:
自右至左D.++、--常用于循环变量表达式中
4.下列运算符优先级最高的是()
A.&&B.>C.++D.!
5.设:
inta=4,b=5;则表达式8>4-!
0||2&&5>4的结果为()
A.0B.1C.-1D.无法计算
三.简答题
1.字符常量和字符串常量有什么区别?
2.求下列算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
3.写出下面程序运行的结果.
(1)#include
voidmain()
{
inti,j,m,n;
i=8;j=10;
m=++i;n=j++;
printf("%d,%d,%d,%d\n",i,j,m.n);
}
(2)#include
voidmain()
{
inta=1,b,c;
b=a+1;
printf("
(1)b=%d\n",b);
a=b+1;
printf("
(2)a=%d\n",a);
c=(a+b)/2;
printf("(3)c=%d\n",c);
b=c+b;
printf("(4)b=%d\n",b);
c+=a+b;
printf("(5)c=%d\n",c);
}
4.设:
inta=3,b=2,c=1,d=4;写出下列表达式的结果
(1)a+b>c+d
(2)c>a+b
(3)a>b!
=c
(4)a==c+b
(5)a=b>c
5.写出下面赋值表达式运算后a的值,设原来a=12,n=5。
a和n都定义为整型变量。
(1)a+=a
(2)a-=2(3)a
=2+3
(4)a%=(n%=2)(5)a/=a+a(6)a+=a-=a
=a
第三章C语言语句与结构化程序的三种基本结构
本章要点:
1.顺序结构程序设计
2.分支程序设计
3.循环程序设计
本章目标:
1.掌握几种常用的C语言语句
2.能够读懂基本的C语言程序
3.能够综合运用几种语句编写程序
本章重点:
1.几种语句的书写格式,使用方法
2.简单C语句的编写
本章难点:
1.各种语句的控制
2.简单C程序的编写
作业题
一、填空题
1.C语言的语句根据语句执行是否改变程序流程分为四类:
()、()、()、().
2.使用输入/输出函数的时候,要在源程序的开始位置,包含一个编译预处理命令:
()
3.()语句的作用是从switch、for、while或do-while语句中跳出来,终止这些语句的执行,把控制转到被中断的循环语句或switch语句之后去执行.
4.若有语句:
if(x z=x; elsez=y; 则可以用条件表达式来表示: (). 5.putchar()函数的函数功能是()。 二.选择题 1.下列类型中错误的是() A.unsignedB.unsignedfloatC.unsignedlongintD.unsignedint 2.下列说法错误的是() A.else总是和它上面的,离它最近的if配对 B.条件表达式可以不用括号括起来. C.整个if语句在程序中被看作是一条语句 D.if语句中的各语句可以是一条语句,也可以是复合语句 3.关于switch语句说法不正确的是() A.case的次序不影响执行结果 B.每个case语句后面的常量可以不同 C.在执行完一个case语句后转到下一个case语句执行 D.每个case语句后面表达式只能是常量 4.下列说法错误的是() A.for语句中,<表达式1>、<表达式2>和<表达式3>都可以缺省. B.<表达式2>缺省,系统会认为此处的值是0 C.for语句的三个表达式可以是任何类型的表达式 D.for语句可以嵌套使用 5.下面关于do-while语句和while语句说法正确的是() A.while语句和do-while语句肯定都要执行 B.两者运行结果不同 C.do-while在判断条件之前先执行循环体一次 D.while语句至少执行一次 三、问答题 1.编写一个程序,要求能够将输入的任意一个三位数颠倒过来. 2.将三个整数输入计算机,编写程序,将居中的值显示出来. 3.编写一个求一元二次方程 的根的程序. 4.用双重循环输出9*9口诀。 5.编写如下程序: 从键盘先输入两个实数,再输入四则运算符“+”、“-”、“*”、“/”中的一个,然后进行四则运算.若输入其他字符,则显示出错信息. 第四章数组 本章要点: 1.一维数组 2.二维数组 3.字符数组 4.数组综合应用 本章目标: 1.了解一维数组、二维数组的基本概念 2.掌握数组类型变量的定义与引用 3.掌握数组元素的引用 本章重点: 1.一维数组、二维数组的定义与引用 2.字符数组的定义与引用、常用字符串处理函数及字符处理函数 3.数组的应用 本章难点: 1.数组引用与地址之间的关系 2.数组的综合应用 作业题 一、填空题 1.我们定义了一个含有N各元素的数组,那么下标的取值范围为()。 2.inta[4][5]定义了一个二维数组,假设a数组在内存中的起始地址为1000,则a[2][1]的地址为()。 3.对于数组inta[5][6]的数组元素的引用最多到()。 4.标准字符串处理函数的头文件是()。 5.Staticchara[15]={‘H’‘,’‘a’‘,’‘p’‘,’‘p’‘,’‘y’‘,’‘.’};这个初始化语句中有9个数组元素没有给出初值,系统会自动对它们赋值为()或()。 二、选择题 1.关于数组,下列说法错误的是() A.在任何一个数组中,数组元素的类型都是一致的 B.<常量表达式>不允许是变量 C.一维数组中的各个元素在内存中是按顺序存放的 D.C语言运行时要检查数组的边界,即下标值超界时,系统会报错 2.关于数组,下列说法正确的是() A.对数组的初始化操作在定义数组的同时进行 B.给数组赋初值时,必须所有数组元素都被赋值 C.给数组元素全部赋初值时,一定要指明数组的大小. D.引用数组元素的时候,可以一次引用数组中的全部元素 3.字符数组chara[]=”Howdoyoudo? ”;的大小为() A.10B.11C.14D.15 4.有如下的数组staticinta[10];则() A.该数组没有被初始化B.数组的所有元素都被赋值为0 C.数组的第一个元素是a[1]D.数组共有11个元素 5.关于字符数组,下列说法错误的是() A.字符型数组中的每一个元素只能存放一个字符型数据 B.逐个输入输出字符时,要用“%c”格式符 C.scanf(“%s”,&s);的写法是正确的 D.数组名就是数组的起始地址 三.问答题 1.计算fibonacci数列的前15个数.Fibonacci数列具有以下特点: 第1和第2个数分别是0和1,从第3个数开始每个数是它前两个数之和. 2.用选择法对任意输入的一个10元整数数组排序(从小到大). 3.利用冒泡法将10个数组元素按从小到大顺序排列. 4.求一个3×3矩阵对角线元素之和. 5.输入一行字符,统计其中有多少个单词.(单词以空格分隔,例如: 输入“Iamaboy”,有4个单词) 第五章函数 本章要点: 1.函数定义 2.函数参数与函数的返回值 3.函数的调用 4.函数嵌套调用和递归调用 5.数组作为函数参数 6.变量作用域 7.变量存储类别与生存周期 8.内部函数和外部函数 本章目标: 1.掌握函数的定义与调用 2.掌握函数参数的传递方式 3.领会变量存储类型的概念及各种存储类型变量的生存期和有效范围 4.领会函数的嵌套调用与递归调用 本章重点: 1.函数定义、函数调用、函数声明等基本概念 2.函数的嵌套调用与递归调用 3.数组作为函数的参数、变量的存储类别与作用域 本章难点: 1.函数的嵌套调用与递归调用 2.各种存储类型变量的生存期和有效范围 作业题 一、填空题 1.程序设计中,常常将重复使用的功能或功能独立的模块定义成一个()。 2.形参与形参的类型说明可以分开描述,如 fun(x,y,z) intx,y,z; 也可以放在一起,写成: ()。 3.C程序必须从()函数开始执行。 4.静态存储变量分为: ()、()。 5.根据函数是否能被其他源程序文件调用,又将函数分为()和()。 二/选择题 1.以下说法错误的是() A.C语言函数分为由系统提供的标准库函数和由程序员自己定义的函数 B.在主函数main()中可以调用其他函数,其他函数之间不可以相互调用 C.C语言的程序是由一个函数或多个函数组成的 D.对于一个很大的任务,一般把它分解成若干源文件,分别编写和调试 2.以下说法错误的是() A.C程序必须从main()函数开始执行 B.所有函数在定义上讲都是相互独立的,不存在嵌套定义 C.C语言中有两类函数,系统提供的库函数和用户自定义的函数 D.参数的作用是向函数传递不同的数据 3.关于形式参数,下面说法错误的是() A.对于形参,虽然定义了它,只有当函数被调用时,形参才在内存中开辟空间 B.调用结束后,形参自动从内存中被释放掉 C.在函数定义中,可以不给出形参类型,调用的时候再定义。 D.实参与形参的关系是赋值与被赋值的关系 4.关于return语句,下面说法错误的是() A.它的功能是将表达式的值作为函数的返回值返回 B.函数中可以有多个return语句,执行到哪个就从那一个return语句返回 C.return可以返回多个值 D.return(表达式)语句中的表达式值的类型应与定义函数时函数的类型一致 5.关于函数调用,下面说法错误的是() A.被调用函数必须是已经存在的函数、库函数或用户已定义过的函数 B.没有头文件也可以对库函数进行调用 C.如果使用用户自定义的函数,还要在主调用函数中说明用户函数的返回值类型. D.在主函数main()中可以调用其他函数,其他函数也可以相互调用 三、简答题 1.指出下列程序中的错误或不合理之处,并改正. main() { ints,x,n; s=power(x,n); } power(y) { inti,p=1; for(i=1;i<=n;++i) p=p*y; } 2.编写一个程序,从键盘输入立方体的长、宽、高,在屏幕上输出立方体的体积. 3.编写一个程序,求1+1/2+1/3+……+1/n的值 4.写出下面程序的运行结果. #include"stdio.h" sqr(x) intx; { x=x*x; return(x); } voidmain() { inti=25; printf("Thevalueofiinmain()beforcallingsqr(x)is%d\n",i); printf("Callingsqr(x): sqr(%d)=%d\n",i,sqr(i)); printf("Thevalueofiinmain()aftercallingsqr(x)is%d\n",i); getch(); } 5.编写一程序,利用函数的递归调用求x的n次方的值,其中n为正整数. 第六章指针 本章要点: 1.指针的概念 2.指针变量 3.数组与指针 4.字符串与指针 5.函数与指针 6.指针数组与指向指针的指针 本章目标: 1.了解指针与地址的概念 2.掌握指针变量的定义、初始化及指针的运算 3.掌握指针与数组、指针数组、二级指针等知识 4.了解指针与函数的概念 5.掌握指针作为函数参数的应用 本章重点: 1.指针与地址的基本概念、指针与变量的关系 2.指针与数组 3.指针与字符串、指针数组与二级指针 4.指针的应用 本章难点: 1.指针与数组的关系 2.指针与字符串、指针数组与二级指针 作业题 一、填空题 1.如果有一个变量专门用来存放另一个变量的地址,则它称为(),当它的值为零时,我们称它为()。 2.写出下面3个表达式的含义: (1)(*s)++: () (2)(*++s): () (3)(*s++): () 3.有如下的表达式: inta[20],*p; p=a; 那么p+3表示的是()的地址. 4.任何能由数组下标完成的操作,都可以用()实现。 5.在C语言中,字符串实际上是指字符串第一个字符的(),所以字符串数组中的每一个元素实际上是每一个字符串的()。 6.由于指针变量直接指向变量,所以称为()。 而如果通过指向指针的指针变量来访问变量则构成()。 二、选择题 1.下面关于表达式: inti,*ip=&i说法正确的是() A.此表达式写法错误 B.此表达式表示用&i对ip进行初始化 C.此表达式表示用&i对*ip进行初始化 D.此表达式表示用&i分别对*ip和i进行初始化 2.关于指针,下列说法错误的是() A.指针变量是用来存放内存地址的 B.&表示取变量地址运算 C.*表示取指针变量所指向的变量内容的运算 D.可以将整数赋给指针变量 3.对于如下的表达式: inta[3][4],*p; p=*a; 执行p++操作之后,*p表示取()的内容. A.a[0][0]B.a[1][0]C.a[1][1]D.a[0][1] 4.以下说法错误的是() A.int(*p)();表示p被定义为一个指向返回值为整数的函数的指针 B.使用指向函数的指针是结构化程序设计的一种有效手段. C.char**p相当于char*(*p) D.指针数组的元素补仅能存放地址,还可以存放其他数组的元素. 三、问答题 1.用指针设计一个可以计算字符串长度的程序. 2.编写一个可以实际交换两个变量数值的函数. 3.想输出a数组10个元素,用以下程序行不行? 为什么? 请修改程序使之能实现题目要求. #include voidmain() { inta[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=0;i<10;i++,a++;) { printf("%d",*a); } } 4.写出下面2个程序的运行结果. (1) #include intmax(intx,inty) { return(x>y? x: y); } voidmain() { inta=10,b=12; int(*p)(); p=max; printf("%d",(*p)(a,b)); } (2) #include voidmain() { char*ps="thisisabook"; intn=10; ps+=n; printf("%s\n",ps); } (3) #include voidmain() { inta[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int*pa[3]; int*p=a,i; for(i=0;i<3;i++) pa[i]=a[i]; for(i=0;i<3;i++) printf("%p--%d\n",pa[i],*pa[i]); for(i=0;i<3;i++) { intj; for(j=0;j<3;j++) {printf("%p--%d",p,*p);p=p+1;} printf("\n"); } } 5.写一个程序,求一个字符串的长度,在main函数中输入字符串,并输出其长度. 6.什么是双重指针? 请自己编写一个使用双重指针的程序,并运行之. 第七章结构体与共同体 本章要点: 1.结构体的概念与定义 2.结构体数组 3.结构体与指针 4.结构体作为函数参数 5.动态数据结构――链表 6.位段 7.共同体 本章目标: 1.掌握结构体和共用体类型的说明、结构体和共用体变量的定义及初始化方法 2.掌握结构体与共用体变量成员的引用 3.领会存储动态分配和释放 4.领会链表的基本概念和基本操作 5.领会枚举类型变量的定义 6.了解typedef的作用 本章重点: 1.结构体的基本概念、结构类型及变量的定义、结构数组 2.用指针处理链表 3.共用体及枚举类型的基本概念、typedef的基本概念 本章难点: 1.存储动态分配和释放 2.用指针处理链表 作业题 一、填空题 1.C语言用()描述由多个有一定内在联系、但通常类型不完全相同的数据项组合而成的数据。 2.在C语言中,为了直观和使用方便,可以把(*pstu).score改用为()来代替。 3.在编制程序时,有时需要把一个结构变量的值传给另一个函数,但是旧的C标准不允许把结构整体作为一个参数传给另一个函数。 结构传递给函数时,一般采用()传递方式。 4.链表的每个结点包含()和()两部分,链指针总是指向链表中的()。 5.使用动态申请空间的标准库函数的时候,必须包含头文件()。 6.所谓建立链表是指从无到有地建立起一个链表,即()。 7.链表的遍历是指()。 二、选择题 1.结构体如下所示: structemployees; { charname[30]; intage; floatwage; }; 下面说法错误的是: () A.上述形式的定义在程序运行时不会为该结构体类型分配内存空间。 B.结构体变量在内存中存放时,占用连续的一段存储空间 C.上述结构体必须有关键字struct D.上述结构体成员的类型不可以是已经定义过的结构体类型。 2.关于结构体,下列说法错误的是() A.不能将一个结构体变量作为一个整体进行输入和输出。 B.对成员变量可以像普通变量一样进行各种运算。 C.结构体变量的地址主要用作函数参数传递结构体的地址。 D.结构体变量赋初值与数组不同,可以不一一对应。 3.关于链表,下列说法错误的是() A.链表是动态分配的一种结构,它根据需要开辟内存单元 B.链表有头指针变量head,它是链表的第一个结点 C.如果要在链表中增加新的结点,需要申请存储空间 D.如果不再使用链表,则应释放所占的存储空间 4.以下函数,哪个不属于动态申请空间的标准库函数() A.malloc()B.calloc()C.free()D.strcmp() 5.关于链表的插入和删除,下列说法错误的是() A.插入位置包括表头、表中和表尾 B.从链表中删除一个结点,就是把它从内存中抹掉。 C.要删除链表中的某个结点,需自己定义删除函数。 D.删除结点要注意删除的结点是否是头结点 三、问答题 1.写出下面程序的运行结果 #include"stdio.h" structstudent { intx; charc; }a; f(structstudentb) { b.x=20; b.c='y'; } main() { a.x=3; a.c='a'; f(a);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计基础 西安交通大学 14 学期 程序设计 基础 离线 作业