《C语言》答案(3)

2019-08-17 12:50

绩。

5.19 不用现有的函数求计算字符串长度的程序。

提示:通过循环从前到后计算字符个数,遇到字符串结束标志'\\0'结束。 5.20 从键盘上输入一串字符,将其逆向显示。

提示:首先计算字符串的长度,在从右边逐一显示字符,直到下标等于0为止。

5.21 找出一个二位数组中的鞍点的位置,即该位置上的元素在该行上最大,在

该列上最小。如果有,输出其所在的行、列号,如果没有,则输出提示信息。 提示:先找出行的最大元素,根据列下标找出列的最大元素。

5.22 从键盘上输入一串字符,将字符串中的所有A去掉后组成新的字符串,并

将两字符串输出。

提示:简单的方法是通过定义两个一维数组,逐个读出原字符串的字符,如果不为'A',则存入目的数组。当然也可以只用一个一维数组实现,通过两个下标指示来实现。

10

【习题6】

一、 填空题

6.1 C语言程序执行的开始处是 main函数 。

6.2 C程序中的一个函数由两部分组成,即 声明部分 和 执行部分 。 6.3为了保证被调用函数不返回任何值,其函数定义的类型应为 void 。 6.4若一个局部变量的存储类型是static,则该变量的值在 程序执行完成 时被释放。

6.5预处理命令#include的作用是 文件包含 。

6.6定义一个宏,功能是判断两个数是否相等,相等为1,不等为0。 #define EQU(a,b) (a)==(b)?1:0 6.7 变量的存储类别有 自动型 、 静态型 、 寄存器型 、和 外部类型 共4种,它们分别用 auto 、 static 、 register 、 extern 标识。 二、 选择题

6.8下述函数定义形式正确的是(C)。 A. int f(int x; int y) B. int f(int x,y) C. int f(int x, int y) D. int f(x,y: int) 6.9 关于函数参数,说法正确的是(A)。

A. 实参与其对应的形参各自占用独立的内存单元 B. 实参与其对应的形参共同占用一个内存单元

C. 只有当实参和形参同名时才占用同一个内存单元 D. 形参是虚拟的,不占用内存单元

6.10 用数组名作为函数的实参时,传递给形参的是(A)。 A. 数组的首地址 B. 数组的第1个元素 C. 数组中的全部元素 D. 数组的元素个数 6.11复合语句中定义的变量的作用范围是(D)。 A. 整个源文件 B. 整个函数 C. 整个程序 D. 所定义的复合语句 6.12一个函数的返回值由( D )确定。 A. return语句中的表达式 B. 调用函数的类型

C. 系统默认的类型 D. 被调用函数的类型

6.13在一个C源文件中,若要定义一个只允许本源文件所有函数使用的全局变量,其他文件中不允许使用,则该变量需要使用的存储类别是(D)。 A. auto B. register C. extern D. static

三、 判断题

6.14若定义的函数没有参数,则函数名后的圆括号可以省略。(?) 6.15函数的函数体可以是空语句(?)。 6.16只有main函数才能调用其他函数。(?)

6.17return语句中表达式的类型必须与函数定义的类型一致。(?) 6.18函数的实参和形参可以是相同的名字。(?)

6.19函数调用中,形参与实参的类型和个数必须保持一致。(?) 6.20外部类型的变量只能定义一次,但可在不同地方声明多次。(?) 6.21外部类型的变量作用范围大,编程中应多用外部变量。(?) 6.22预处理命令行必须以#开头,且最后要用分号结尾。(?) 6.23宏命令的处理占用编译时间,而不占用运行时间。(?)

11

四、 看程序写结果 6.24

int fun(int n) {int f=1; f = f*n*2; return(f); }

main() { int i,j;

for(i=1; i<=5; i++)

printf(\}

程序运行结果:2 4 6 8 10 6.25

int x1=30, x2=40; main()

{int x3=10,x4=20; sub(x3,x4); sub(x2,x1);

printf(\}

sub(int x,int y) {int x1=x; x=y; y=x1; }

程序运行结果:x1=30,x2=40,x3=10,x4=20 6.26

#define A 4

#define B(x) A*x/2 main()

{float c, a = 4.5; c=B(a);

printf(\}

程序运行结果:c= 9.0 五、 编程题 6.25写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。

提示:最大公约数可以采用?辗转相除法?,最小公倍数将两数乘积除于最大公约数。?辗转相除法?:设两个数分别用m,n表示且m>n,临时变量t,t=m%n;m=n;n=t;直到n等于0。

6.26有3?3的矩阵A和3?2的矩阵B,编制一个函数,求C=AX?B。 提示:参照习题5.17,A,B,C三个数组作为函数参数。

12

6.27编写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。

提示:一维字符数组用来存放字符串,并且将它传递到函数,在函数中通过元素值交换来完成反序存放。

6.28编制一个函数,由参数传入一个字符串,统计此字串中字母、数字、和其他字符的个数,在主函数中输入字符串并显示统计结果。

提示:参照例题6.10。

6.29 定义一个宏,实现将两个数互换,并写出程序,输入两个数作为使用参数,并显示结果。

提示:带参数宏,swap(a,b,t).... 6.30编写以下函数:①输入职工的姓名和职工号;②按职工号由小到大排序,姓名顺序也随之调整;③输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。

提示:定义一个二维数组来存放职工信息;用数组名作函数的参数传递;通过?起泡算法?或?选择算法?;折半查找法先决条件是数据已经有序。

13

【习题7】

1.1 语句int a,*p=&a;的含义是什么?

答:定义整型变量a,和整型指针变量p,并且p指向变量a。 1.2 写出下列数组元素的指针法表示。 (1)num[3] (2) data[4][2] 答:(1)*(num+3) (2) *(*(data+4)+2) 1.3 写出下列数组元素的下标法表示。

(1) *(*(a+1)+2) (2) (*(a+3))[4] (3) *(a[2]+5) 答:(1)a[1][2] (2) a[3][4] (3) a[2][5] 1.4 分析程序,写出程序输出结果。

(1) main()

{ int a[5]={1,2,3,4,5}; int *p=&a[1];

printf(\ }

输出结果:4 (2) main()

{ char a[]=\ char *p=a; p=p+2;

printf(\ }

输出结果:love China! (3) main()

{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*pa)[4]=a; pa++;

printf(\}

输出结果:11 (4) main()

{ char *str[]={\ int i;

for (i=0;i<4;i++)

printf(\ }

输出结果:zqsl

(5) void sub(int x,int y,int *z) { *z=y-x; } main() {

int a,b,c;

sub(10,5,&a); sub(7,a,&b);

14


《C语言》答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:分类修改病句

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: