C程序设计作业集 联系客服

发布时间 : 星期三 文章C程序设计作业集更新完毕开始阅读099357ed551810a6f52486a1

else { char t ;

fun (【2 】); t = s[l] , s[l]=s[h] , s[h]=t ; } }

六.编程题

1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,且两个整数的输入也在主函数。

2.写一个判素数的函数,在主函数输入一个数,输出是否为素数的信息。

3.写一个函数,使给定的一个二维数组(N×N)转置,即行列互换。(N是不大于10的数,由输入决定)。

4.编写一个fun函数void fun(char s1[],char s2[]),将两个字符串s1和s2连接起来存放在s1中。

5.编写一个fun函数:long fun(char s[]),将一个数字字符串转换为一个整数(不得调用标准库函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。

6.编写一个fun函数:int fun(int a[], int n),删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 7 7 8 9 9 10 10 10,删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10

7.提高题:写一个函数,输入一个4位数字,要求输出这4个数字字符,但每个字符间空一个格。

8.提高题:用递归法将一个整数n转换成字符串。例如:输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。

9.提高题:定义一个函数,可求3行4列整型数组中最大,最小元素值及它们的位置;要求在main中输入输出数组,并在main中输出所要求的数据;该整型数组为全局变量。

第九章 预处理命令 一.选择题

1.以下叙述不正确的是 。 A)预处理命令行都必须以#开始

B)在程序中凡是以#开始的语句行都是预处理命令行 C)C程序在执行过程中对预处理命令行进行处理 D)预处理命令行可以出现在C程序中任意一行上 2.以下叙述中正确的是 。

A)在程序的一行上可以出现多个有效的预处理命令行 B)使用带参数的宏时,参数的类型应与宏定义时的一致 C)宏替换不占用运行时间,只占用编译时间

D)C语言的编译预处理就是对源程序进行初步的语法检查 3.以下有关宏替换的叙述不正确的是 。

A)宏替换不占用运行时间 B)宏名无类型

C)宏替换只是字符替换 D)宏名必须用大写字母表示

4.在“文件包含”预处理命令形式中,当#include后面的文件名用””(双引号)括起时,寻找被包含文件的方式是 。 A)直接按系统设定的标准方式搜索目录

B)先在源程序所在目录中搜索,再按系统设定的标准方式搜索 C)仅仅搜索源程序所在目录 D)仅仅搜索当前目录

5.在“文件包含”预处理命令形式中,当#include后名的文件名用<>(尖括号)括起时,寻找被包含文件的方式是 。 A)直接按系统设定的标准方式搜索目录

B)先在源程序所在目录中搜索,再按系统设定的标准方式搜索 C)仅仅搜索源程序所在目录 D)仅仅搜索当前目录

6.在宏定义#define PI 3.1415926中,用宏名PI代替一个 。

A)单精度数 B)双精度数 C)常量 D)字符串 7.以下程序的运行结果是 。

#define ADD(x) x+x main ( )

{ int m=1,n=2,k=3,sum ; sum = ADD(m+n)*k ; printf(“%d\\n”,sum) ;

A)9 B)10 C)12 D)18 8.以下程序的运行结果是 。

#define MIN(x,y) (x)>(y) ? (x) : (y) main ( )

{ int i=10, j=15 , k; k = 10*MIN(i,j); printf(“%d\\n”,k); }

A)10 B)15 C)100 D)150 9.以下程序的运行结果是 。

#define X 5 #define Y X+1 #define Z Y*X/2 main ( ) { int a=Y;

printf(“%d\\n”,Z); printf(“%d\\n”,--a);

}

A)7 B)12 C)12 D)7 6 6 5 5 10.若有定义

#define N 2

#define Y(n) ((N+1)*n)

则执行语句z=2*(N+Y(5));后,z的值为 。

A)语句有错误 B)34 C)70 D)无确定值 11.若有定义#define MOD(x,y) x%y,则执行下面语句后的输出为 。

int z,a=15; float b=100; z=MOD(b,a);

printf(“%d\\n”,z++);

A)11 B)10 C)6 D)有语法错误 12.在任何情况下计算平方数都不会引起二义性的宏定义是 。 A)#define POWER(x) x*x B)#define POWER(x) (x)*(x) C)#define POWER(x) (x*x) D)#define POWER(x) ((x)*(x)) 13.以下程序的运行结果是 。

#define DOUBLE(r) r*r main ( )

{ int x=1,y=2,t;

t = DOUBLE(x+y) ; printf (“%d\\n”,t); }

A)5 B)6 C)7 D)8 14.以下程序的运行结果为 。

main ( )

{ int b=5,y=3; #define b 2

#define f(x) b*(x) printf(“%d\\n”,f(y+1)); #undef b

printf(“%d\\n”,f(y+1)); }

A)20 B)20 C)8 D)8

8 20 8 20 15.以下程序的运行结果为 。

#define A 4

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

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

printf(“%5.1f\\n”,c); }

A)6.0 B)7.0 C)8.0 D)9.0

二.判断题

1.宏替换时先求出实参表达式的值,然后代入形参运算求值。【 】 2.宏替换不存在类型问题,它的参数也是无类型。【 】 3.在C语言标准库头文件中,包含了许多系统函数的原型声明,因此只要程序中使用了这些函数,则应包含这些头文件,以便编译系统能对这些函数调用进行检查。【 】 4..H头文件只能由编译系统提供。【 】

5.#include命令可以包含一个含有函数定义的C语言源程序文件。【 】 6.使用#include<文件名>命令的形式比使用#include“文件名”的形式更省编译时间。【 】 7.#include “C:\\\\USER\\\\F1.H”是正确包含命令,表示文件F1.H存放在C盘的USER目录下。【 】

8.#include 命令中的文件名是不能包括路径的。【 】 9.可以使用条件编译命令来选择某部分程序是否被编译。【 】 10.在软件开发中,常用条件编译命令来形成程序的调试版本或正式版本。【 】

三.简答题

1.请分析以下一组宏定义所定义的输出格式:

#define NL putchar(?\\n?)

#define PR(format,value) printf(“value=%format\\t”,(value)) #define PRINT1(f,x1) PR(f,x1) ; NL

#define PRINT2(f,x1,x2) PR(f,x1); PRINT1(f,x2) 如果在程序中有以下的宏引用:

PR(d,x)

PRINT1(d,x) PRINT2(d,x1,x2)

写出宏展开后的情况,并写出应输出的结果,设x=5, x1=3, x2=8。

四.编程题

1.三角形的面积为area?s(s?a)(s?b)(s?c),其中s?1(a?b?c),a,b,c为三角形2的三边。定义两个带参数的宏,一个用来求s,另一个用来求area。写程序,在程序中用带实参的宏名来求面积area。

2.提高题:尝试编写一个程序,在主程序(文件MAIN.C)中输入三个数a,b,menu,然后根据menu的值(menu=1,2,3,4),选择四个函数调用并打印结果。该四个函数原型为: int add(int a, int b) 计算a,b的加法 在A1.C中编写 int sub(int a, int b) 计算a,b的减法 在A2.C中编写 int mul(int a, int b) 计算a,b的乘法 在A3.C中编写 int div(int a, int b) 计算a,b的除法 在A4.C中编写

然后编写一个包含上述函数原型的头文件MAIN.H,在主程序文件中使用#include包含它。

第十章