西安交通大学14春学期《程序设计基础》离线作业.docx

上传人:b****8 文档编号:9423086 上传时间:2023-02-04 格式:DOCX 页数:34 大小:33.97KB
下载 相关 举报
西安交通大学14春学期《程序设计基础》离线作业.docx_第1页
第1页 / 共34页
西安交通大学14春学期《程序设计基础》离线作业.docx_第2页
第2页 / 共34页
西安交通大学14春学期《程序设计基础》离线作业.docx_第3页
第3页 / 共34页
西安交通大学14春学期《程序设计基础》离线作业.docx_第4页
第4页 / 共34页
西安交通大学14春学期《程序设计基础》离线作业.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

西安交通大学14春学期《程序设计基础》离线作业.docx

《西安交通大学14春学期《程序设计基础》离线作业.docx》由会员分享,可在线阅读,更多相关《西安交通大学14春学期《程序设计基础》离线作业.docx(34页珍藏版)》请在冰豆网上搜索。

西安交通大学14春学期《程序设计基础》离线作业.docx

西安交通大学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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1