华南农业大学C语言试卷

发布时间 : 星期四 文章华南农业大学C语言试卷更新完毕开始阅读

【习题5】

一、填空题

5.1 若有定义int a[3][5];则排列在数组中的第9个元素是( a[1][3] )。 5.2 strlen(\的值是( 12 )。 5.3 C语言中字符串结束的标志是( '\\0' )。

5.4 写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是( float s[6]={0}; )。

5.5 strcmp(\的值是( 32 或>0 )。 二、选择题

5.6 若有int s[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是( D ) A.1 B.2 C.3 D.4 5.7 对数组的描述正确的是( B )。

A.数组一旦定义其大小是固定的,但数组元素的类型可以不同。 B.数组一旦定义其大小是固定的,但数组元素的类型必须相同。 C.数组一旦定义其大小是可变的,但数组元素的类型可以不同。 D.数组一旦定义其大小是可变的,但数组元素的类型必须相同。 5.8 对字符串\进行完整赋值的操作是( B )。 A.char s[3] = {'B','o','y'}; B. char s[] = \ C.char s[3] = {\ D.char s[3]; s=\

5.9在c语言中引用数组元素时,其数组下标的数据类型允许是( C )。 A.整型常量 B.整型表达式

C.整型常量或整型表达式 D.任何类型的表达式 5.10对以下说明语句的正确理解是( B )。 int a[10]={6,7,8,9,10};

A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10]

D.因为数组长度与初值的个数不相同,所以此语句不正确 三、看程序写结果 5.11 main()

{int a[3][3] = {{1,0,2}, {2,2},{0,2}}, c[3][3],i,j; for(i=0; i<3; i++) {

for(j=0; j<3; j++) {

c[i][j] = a[a[i][j]][a[j][i]]; printf(\} }

printf(\}

运行结果为: 2 2 0 0 0 2 2 0 1

5.12当运行以下程序时,从键盘输入:Ah2MA A3ha,请写出输出结果。

8

main()

{ char s[80], c='a'; int i=0;

scanf(\ while(s[i++]!='\\0')

if(s[i] == c) s[i]=s[i]-32;

else if(s[i]==c-32) s[i]=s[i]+32; puts(s); }

运行结果为:AH2Ma 四、编程题

5.13 用数组方法定义一个矩阵,求其转置矩阵。

提示:已知a[3][2],转置后的结果存放在b[2][3]; 则b[j][i]=a[i][j];

5.15 从键盘输入9个不同的整数,组成三行三列的二元数组,找出每一列中的最大元素,

并输出其行、列下标。

提示:已知a[3][3],max,row,col分别用来存放一列的最大值,行下标和列下标。 5.15利用一个二维数组,打印出以下杨辉三角形,要求打印出10行。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1 ∶ ∶

提示:定义一个10行10列的二维数组,并且通过两重循环对第1列所有元素赋值1,主对角线也赋值。根据a[i][j]=a[i-1][j]+a[i-1][j-1]求出其它元素的值。 5.16 从键盘上输入一串字符(长度小于50个字符),找出其中最前面的一个X和最后面的

一个X之间的子串,并输出子串的长度。

提示:定义一个长度为81的字符数组,从左边查找第一字符'X'的下标,从右边查找第一个字符'X'的下标。 5.17 矩阵A是一个3×3的矩阵,B是一个3×2的矩阵,编程求C=A?B。

提示:定义一个3X2的数组c[3][2],该数组的元素值由A数组的一行元素分别与B的一列元素相乘得到。譬如:c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]。 5.18 把30个学生的学号和两门课程的成绩输入到一个二维数组中,求出的每个学生的两门

课程的总成绩也放于此数组中,请按学生总分的高低打印出成绩单(包括学号、两门课程成绩和总分)。

提示:定义一个30行4列的数组。为了先快速测试算法是否正确?可以定义一个3行4列的数组,并且通过赋初始值,减少调试程序时反复输入数据的麻烦,算法调试成功后在加上输入数据部分。实现从高到低打印出成绩可以通过排序(降序);也可以通过另外定义1个一维数组作为索引,再通过索引打印成绩。 5.19 不用现有的函数求计算字符串长度的程序。

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

9

提示:首先计算字符串的长度,在从右边逐一显示字符,直到下标等于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

联系合同范文客服:xxxxx#qq.com(#替换为@)