C语言程序设计答案-(陈明晰)中国铁道出版社 下载本文

内容发布更新时间 : 2024/12/26 20:27:31星期一 下面是文章的全部内容请认真阅读。

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

ss= ss* a[i][j] ; printf(\ss=%d\\n\); }

6.以下程序求任意10个实数的最大值和最小值。 #include main() { int i;

float a[10],max,min; for(i=0;i<10;i++) scanf(\max=min=a[0];

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

{ if(max

if(min>a[i]) min=a[i] ; }

printf(\最大值=%f\\n\printf(\最小值=%f\\n\}

7.以下程序求二维数组中每行元素的最大值。 #include #define M 4 #define N 5 main()

{ int a[M][N],amax,i,j; for(i=0;i

for(j=0;j

scanf(”%d”,&a[i][j]); for(i=0;i

{ amax=a[i][0] ; for(j=1;j

if(a[i][j]>amax) amax=a[i][j]; printf(\ } }

三、上机练习题

1.输入一串字符,统计其中数字字符的个数。 2.输入10个数,将这10个数按由大到小的次序排序后输出。 3.输入一个5行6列的二维数组,求该数组每列元素之和,输出结果。 4.向数组a中输入30个整数,编程序分别将这30个数中的正数存入数组az中,负数存入数组af中,并分别输出az和af中的内容。 四、编程题

1.编写程序,将10个数34、3、29、63、70、16、85、82、90、93存放于一个数组,求出这10个数的和及平均值、最大值、最小值。 2.编写程序,读50个数存放于一数组,求出该数组中最大值、最小值及所在位置。 3.将存放于上题数组中的50个数分别按升序、降序排序。 4.编写程序,从键盘输入某班学生C语言课程考试成绩,评定每个学生C语言成绩等级。如果高于平均分10分,等级为优秀;如果低于平均分10分,等级为一般;否则等级为中等。 5.编写程序,将一个一维数组进行逆置。例如,原来顺序为1、3、5、7,则逆置后的顺序为7、5、3、1。 6.编写程序,从键盘输入两个4×4的矩阵A和B,求出两矩阵的和及差,并按矩阵形式输出。进一步考虑求出矩阵A与B的乘积。 7.编写程序,将一个二维数组的行列互换。进一步考虑用函数实现。 8.编写程序,输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 9.有一篇文章,共3行,每行有80个字符。编写程序,统计其中大写字母、小写字母、数字空格、其他字符各有多少个。 10.编写n个学生、m门课程的成绩处理程序: ① 实际学生人数、课程门数由键盘输入。 ② n个学生、m门课程的成绩用二维实型数组描述,并可相关考虑学生姓名、学号。 ③ 求出每个学生的总成绩、平均成绩,并按总成绩排序。 ④ 求出每门课程的平均成绩。 习 题 六

一、选择题

1.以下叙述不正确的是( D )。 A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main()函数 C.C程序的基本组成单位是函数 D.C程序中的注释说明只能位于一条语句的后面 2.以下关于C语言函数参数的说法不正确的是( B )。 A.实参可以是常量、变量或表达式 C.实参可以为任意类型 A.地址传递 C.单向值传递 A.float型 B.形参可以是常量、变量或表达式 D.形参应与其对应的实参类型一致 B.由实参传给形参再由形参传回给实参 D.由用户指定传递方式 C.long型 D.double型 3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( C )。 4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。 B.int型 5.C语言规定,函数返回值的类型是由( D )。 A.return语句中的表达式类型所决定 C.调用该函数时系统临时决定 B.调用该函数时的主调函数类型所决定 D.定义函数时所指定的函数类型所决定 6.在C语言程序中,以下正确的描述是( C )。 A.函数可以嵌套定义,但不可以嵌套调用 B.函数的定义和调用均可以嵌套 C.函数不可以嵌套定义,但可以嵌套调用 D.函数的定义和调用均不可以嵌套 7.若用数组名作为函数调用的实参,传递给形参的是( A )。 A.数组的首地址 B.数组第一个元素的值 D.数组元素的个数 B.在该函数中有效 D.为非法变量 C.数组中全部元素的值 8.如果在一个函数中的复合语句中定义了一个变量,以下关于该变量正确的说法是( A )。 A.只在该复合语句中有效 C.在本程序范围内均有效 9.以下不正确的说法为( D )。 A.在不同函数中可以使用相同名字的变量 B.形式参数是局部变量 C.在函数内定义的变量只在本函数范围内有效 D.在函数内的复合语句中定义的变量在本函数范围内有效 10.以下程序的正确运行结果是( A )。 #include

main()

{ int k=4,m=1,p;

p=func(k,m);printf(\p=func(k,m);printf(\}

func(int a,int b)

{ static int m=0,i=2; i+=m+1; m=i+a+b; return(m); }

A.8,17 B.8,16 C.8,20 D.8,8 11.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用<>(尖括号)括起时,寻找被包含的文件的方式是( C )。 A.仅仅搜索当前目录 B.先在源程序所在目录搜索,再按系统设定的标准方式搜索 C.直接按系统设定的标准方式搜索目录 D.仅仅搜索源程序所在目录 12.以下程序的正确运行结果是( A )。 int d=1;

fun(int p) { int d=5; d+=p++;

printf(\}

main()

{ int a=3; fun(a); d+=a++;

printf(\}

A.84 B.99 C.95 D.44 13.若有以下调用语句,则不正确的fun()函数的首部是( D )。 main()

{ …

int a[50],n; …

fun(n,&a[9]); … }

A.void fun(int m,int x[ ]) C.void fun(int p,int *s) f(int a) { int b=0;

static int c=3; b++;c++;

return(a+b+c); }

main()

{ int a=2,i;

B.void fun(int s,int h[41]) D.void fun(int n,int a) 14.下面的程序执行后输出的结果是( A )。 for(i=0;i<3;i++) printf(\}

A.7 8 9 B.7 9 11 C.7 10 13 D.7 7 7 15.以下程序执行后的输出结果是( B )。 int a, b;

void fun()

{ a=100;b=200; } main()

{ int a=5,b=7; fun();

printf(\}

A.100,200 A.包含文件 B.5,7 C.200,100 C.宏定义 D.7,5 D.连接 16.下列不属于编译预处理的是( D )。 B.条件编译 17.下列语句中正确的是( D )。 A.#define MYNAME=\C.for(i=0;i<10;i++); B.#include string.h D.#include B.#include \18.下列语句中错误的是( A )。 A.#define PI=3.1415926 C.if(2); D.for(;;)if(1)break; 19.设有以下宏定义,则执行语句“z=2*(N+Y(5+1));”后,z的值为( B )。 #define N 3

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

A.出错 B.42 C.48 D.54 20.以下程序中的for循环执行的次数是( C )。 #include \

#define N 2 #define M N+1

#define NUM (M+1)*M/2 main()

{ int i,n=0;

for(i=1;i<=NUM;i++) printf(\}

A.5 二、填空题

B.6 C.8 D.9 1.C语言中的函数,从能否可以返回值上可分为 有返回值 函数和 无返回值 函数。 2.定义函数时,在函数头中除有函数名称外,还应有 函数类型 、 参数类型 和 名称 等信息。 3.必须对函数 定义 才能确立函数可实现的功能,只有对函数 调用 才能实现函数的功能。 4.C语言中,函数的调用有 函数语句 、 函数表达式 和 函数实参 三种方式。 5.C语言中,每个变量都有作用域和生存期,变量的作用域是 变量有效范围 ,变量的生存期是 变量作用域 。 6.对函数或变量的 声明 是告诉系统此程序段要用到在其后面才定义的函数或变量,使函数或变量的作用域得以扩展。 7.C语言中,变量的存储类型有 4 种,存储方式有 2 种。 8.以下程序的输出结果是 246 。 void fun()

{ static int a=0; a+=2;

printf(\}

main() { int cc;

for(cc=1;cc<4;cc++) fun() printf(\}

9.以下程序的运行结果是 111 。 main()

{ increment(); increment(); increment(); }

increment() { int x=0; x+=1;

printf(\}

10.以下程序执行后输出的结果是 34 。 #include f(int a) { int b=0; static c=3: a=c++,b++; return(a); }

main()

{ int a=2,i,k;

for(i=0;i<2;i++) k=f(a++);

printf(\}

11.以下程序执行后输出的结果是 4 。 long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2)); else return(2); }

main()

{ printf(\

12.以下程序执行后输出的结果是 14 。 #include

long sum(register int x,int n) { long s; int i;

register int t; t=s=x;

for(i=2;i<=n;i++) { t*=x; s+=t; } return(s); }

main()

{ int x=2, n=3;

printf(\}

13.设有定义如下:#define F(N) 2*N, 则表达式F(2+3)的值是 7 。