广东海洋大学C程序设计试卷(第1套)


广东海洋大学

—— 学年第 学期



C 程序设计

》课程试题

班级: 姓名: 学号: 试题共 页 加白纸 张 密

16232110 课程号:

√考试 □考查

□A 卷 □B 卷

√闭卷 □开卷



号 一

二 20

三 10

四 10

五 5

六 30







十 总分 100

阅卷教师

各题分数 25 实得分数

一、单项选择题(25 分,每题 1 分) 1. 正确的 c 语言标识符是____________. A. 2name B. DATA_FILE C. (break) D. A @COM 答案:B 知识点:标识符 难度:C 2. 在 c 语言中,数组元素的下标从__________开始. A. 0 B. 1 C. 2 D. 任意 答案:A 知识点: 数组 难度:C 3. 执行下列程序后,a 的值是___________. Int a=9, b, c; a+=2; A. 2 B. 10 C. 11 D. 8 答案:C 知识点:运算符 难度:B 4. 若有以下定义和语句,且, 则___________是对数组元素的正确表示. int a[ ]={1,2,3,4,5}, *p; p=a; A. &(a+2) B. a++ C. p[2] D. &p 答案:C 知识点:数组 难度:A 5 为避免嵌套条件支语句 if~else 的二义性 ,C 语言规定 ,else 总是与 __________组成配对关 系. A. 缩排位置相同的 if B. 同一行的 if C. 在其之前未配对的最近的 if D.在其之前未配对的 if 答案:C 知识点:分支语句 难度:C 6. 若 a=10,b=20,c=30,则表达式________的值为真. A. !(a!=0) B. (a<b)&&(a>c) C. (b>c)||(b>a) D. (c= =a)|| (c= =b) 答案:C 知识点:表达式 难度:B

封 线

7. 若已定义:int a[9],*p=a;并在以后的语句中未改变 p 的值,不能表示 a[1] 地址的表达 式是__________ A.p+1 B.a+1 C.a++ D.++p 答案:C 知识点:指针 难度:A 8. 若 有 以 下 的 说 明 和 语 句 , 则 在 执 行 for 语 句 后 , *(*(pt+l)+2) 表 示 的 数 组 元 素 是 _______________ int t[3][3], *pt([3], k; for (k=0;k<3;k++)pt[k]=&t[k][0]; A.t[2][0] 答案:C B.t[2][2] C.t[l][2] D.t[2][l]

知识点:数组与指针

难度:A

9.设 x 和 y 均为 int 型变量,则下列语句 x+=y; y=x-y; x-=y; 的功能是( ) 。 A.把 x 和 y 按从大到小排序 B.把 x 和 y 按从小到大排序 C.无确定结果 D.交换 x 和 y 的值 (难度系数 B,知识点:+=,-=)答案:D 10.下述描述中不正确的是( )。 A. 字符型数组中可以存放字符串 B. 可以对字符型数组进行整体输入、输出 C. 可以对整型数组进行整体输入、输出 D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 (难度系数 B,知识点:数组)答案:C 11.以下 4 个选项中,不能看作一条语句的是( ) A. {;} B. a=0,b=0,c=0; C. if(a>0); D. if(b==0) m=1;n=2; (难度系数 C,知识点:单行语句)答案:D 12.若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i; 其中 0≤i≤9, 则对 a 数组元素不正确的引用是( ) A. a[p-a] ( B) *(&a[i]) C. p[i] D. a[10] (难度系数 C,知识点:数组元素)答案:D 13.若有 int s[4]={1,2,3,4};,则 s[s[0]+2*s[2]-s[3]]的值是( ) A.1 B.2 C.3 D.4 数组运算(难度系数 C)答案:D 14. 用数组名作为函数的实参时,传递给形参的是( ) 。 A. 数组的首地址 B. 数组的第 1 个元素 C. 数组中的全部元素 D. 数组的元素个数 函数调用(难度系数 C)答案:A 15.表达式'A'+4*25.0-'b'的正确结果是( ) 。 A.67 B.67.0 C. 不确定 D. 67L C 语言表达式运算(难度系数 B)答案:B 16.能表示条件 0≤x≤100 的表达式是( ) 。 A.0<=x<=100 B.)x>=0,x<=100 C.0≤x≤100 D.)x>=0&&x<=100

C 语言表达式运算(难度系数 C)答案:D 17.对字符串"Boy"进行完整赋值的操作是( ) 。 A.char s[3] = {'B','o','y'}; B. char s[] = "Boy"; C.char s[3] = {"Boy"}; D.char s[3]; s="Boy"; 字符串数组运算(难度系数 C)答案:B 18.若有代数式

A.x/b/c*y*8 B. 8*x*y/b/c C.8*x*y/b*c D. x*y/c/b*8 C 语言表达式(难度系数 B)答案:C

8 xy ,则不正确的 C 语言表达式是( ) 。 bc

19、下列可以正确表示字符型常数的是 。 A."B" B. '\010' C. 68 D. D (知识点 字符型常数 难度系数 C)正确答案:B

20、 以下程序的输出结果是 void main() {int a[]={1,2,3,4,5,6},*p; p=a; *(p+3)+=1; printf(“%d,%d\n”,*p,*(p+3));} A. 0,5 B. 1,5 C. 0,6 D. 1,6 (难度系数 B)(答案:B )(知识点:指针)



21、若变量 a 是 int 类型,并执行了语句:a='D'+3.5; 则正确的叙述是: A. a 的值是字符 D B.a 的值是 3 C. 不允许字符型和浮点型相加 D. a 的值是字符'D'的 ASCII 值加上 3 (知识点 字符 难度系数 B)正确答案:D 22. 若有说明语句:int a, b, c, *d=&c;, 则能正确从键盘读入三个整数 分别赋给变量 a、b、c 的语句是( )。 A. scanf("%d%d%d",&a,&b,&d); B. scanf("%d%d%d",&a,&b,d); C. scanf("%d%d%d",a,b,d); D. scanf("%d%d%d",a,b,*d); (知识点 键盘读入 难度系数 C)正确答案:B 23.为判断变量 m 是否是数字,可用表达式 ( ) 。 A.0<= m && m<=9 B.'0'<=m && m<='9' C."0"<=m && m<="9" D.、三个答案都错 (知识点 变量 难度系数 B)正确答案:A

24、对于"int *pa[5];"的描述中, 是正确的。 A. pa 是一个指向数组的指针,所指向的数组是 5 个 int 型元素 B. pa 是一个指向某数组中第 5 个元素的指针,该元素是 int 型变量 C. pa[5]表示某个元素的第 5 个元素的值 D. pa 是一个具有 5 个元素的指针数组,每个元素是一个 int 型指针 (知识点 指针 难度系数 B)正确答案:D 25、下列程序段的输出结果是 func(int a,int b) { int c; c=a+b; 。

return c; } main( ) { int x=6,y=7,z=8,r; r=func(x--,y++,x+y),z--); printf("%d\n",r); } A. 18 B. 22 C. 21 D. 19 (知识点 函数 难度系数 A)正确答案:C

二、填空题(20 分,每题 2 分) 1. 下列程序的输出结果是 ( #include main( ) { char b[30]; strcpy(&b[0],"CH"); strcpy(&b[1],"DEF"); strcpy(&b[2],"ABC"); printf("%s \n",b); } 答案:CDABC 知识点: 内部函数,字符数组 ) 。 难度:A 2. 下列程序的输出结果是 ( int t(int x,int y,int cp,int dp) { cp=x*x+y*y; dp=x*x-y*y; } main( ) { int a=4,b=3,c=5,d=6; t(a,b,c,d); printf("%d %d \n",c,d); } 答案:5 6 知识点:函数 难度:B 3.十进制数 1385 转换成十六进制数为___________ 答案:569 知识点: 进制转换 难度:B:考试大-计算机二级考试 4.语句:printf("%d",(a=2)&&(b= -2);的输出结果是_________ 答案:1 知识点:运算符 难度:C 5. 以下程序的输出结果是_____________ { int x=10,y=10,I; for(i=0;x>8;y=++i) printf("%d,%d ",x--,y); } 答案:10 10 91 知识点:for 循环 ) 。

难度:B

6、若有说明:int a[3][4]={{1,2},{0},{4,6,8,10}},则 a[1][2]= (知识点 数组 难度系数 C)答案:0 7、已知 x=2.5,a=7,y=4.7,则 x+a%3*(int)(x+y)%2/4 的值为:______ (知识点 变量 难度系数 B)答案:2.5 8、设 i,j 均为 int 型变量,则执行完下面的 for 循环后,k 的值为 。 for(i=1,j=10; i<=j; i++,j--) k=i+j; (知识点 变量 难度系数 B)答案:50 9、定义 b 为共有 10 个元素的一维数字数组、同时定义 p 为指向 a 数组首地址的指针变量的 语句为 。 (知识点 数组 难度系数 B)答案:int b[20] ,*p=a; 10、若 b=10,则(++b)+( ++b)+( ++b) 的值为: (知识点 ++运算符 难度系数 A)答案:39

三、判断题(10 分,每题 1 分) 1、 ( )所有的变量在使用前都必须予以申明。 (难度系数 C,知识点:变量声明)答案:错 2、 ( )switch 选择结构中必须有 default 子句。 (难度系数 C,知识点:switch 选择结构)答案:错 3、 ( )求余运算符%只能用于两个整数操作数。 (难度系数 C,知识点:求余运算符%)答案:对 4、 ( )若有说明 int c;则 while (c=getchar());是错误的 C 语句。 (难度系数 B,知识点:while 语句)答案:错 5、 ( )使用 continue 和 break 语句,都可以使得 C 程序的执行直接从循环中跳出。 (难度系数 C,知识点:跳出循环语句)答案:错 6、 ( )注释内容太多会影响程序的执行效率。 知识点:C 程序执行(难度系数 C)答案:错 7、 ( )C 程序执行的入口是 main()函数,所以 main 函数必须放在程序的开头。 知识点:C 程序执行(难度系数 C)答案: 错 8、 ( )若定义的函数没有参数,则函数名后的圆括号可以省略。 知识点:函数定义(难度系数 C)答案: 错 9.( )在一个函数内中定义的变量可以在本函数范围内有效。 (知识点 函数 难度系数 B)答案:对 10.( )全局变量和静态变量没有初始时,初始值为 0。 (知识点 变量 难度系数 B)答案:对

四、程序填空题(10 分,每题 5 分)

1、下面程序的功能是:求一个 5×5 矩阵对角线元素之和。

#define N 5 main( ) { int a[N][N], sum=0; int i, j; for (i=0; i<N; i++) for (j=0; j<N; j++) scanf("%d", &a[i][j]); for (i=0; i<N; i++) } (难度系数 B,知识点:二维数组求和)答案:sum=sum+a[i][i]; 2、输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。 用下标为 0 元素统计字符“0”的个数,下标为 1 的元素统计字符“1”的个数。 程 序如下 #include “stdio.h” void main() { char c[80];int i=0,k,a[10]={0}; gets(c); while( ) ① { k=c[i]-48; ② ; i++;} for(i=0;i<10;i++) printf("\n %d", ③ ); } (知识点 数组 难度系数 B)答案: ①c[i]!='0' ②a[k]++或 a[k]+1 ③a[i] printf("sum=%4d\n", sum);

五、读程序写结果(5 分,每题 5 分)

1、#include<stdio.h> #include<string.h> struct Worker { char name[15]; //姓名 int age; //年龄 float pay; }; //工资 void main() {Worker x; char *t="WeiRong"; int d=45; float f=4000; strcpy(x.name,t); x.age=d; x.pay=f; printf("%s %d %f \n", x.name, x.age, x.pay);} 该程序的运行结果是:___________________________________ (知识点 指针,字符 难度系数 B)答案:WeiRong 45 4000

六、编程题(30 分,每题 10 分)

1、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的 三次方+3 的三次方。 答案: #include "stdio.h" main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n<1000;n++) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } } printf("\n"); } 知识点: 循环结构,分支结构 难度:B

2、编写程序判断某一个数 m 是否为素数,如果是则输出"m is a prime",否则就 输出"m is not a prime"。 (难度系数 C,知识点:素数)答案: main( ) { int i, m; printf("please input a number m:\n"); scanf("m=%d", &m); for (i=2; i<m; i++) { if (m%i==0) { printf("%d is a prime\n", m); break ; } else continue ; } if (i==m) printf("%d is not a prime\n", m); } 3.编程将字符数组中的字符串逆序存放并将前后结果输出,要求在一个函数中用

指针来实现字符串逆序存放。 C 语言指针使用(难度系数 A)答案: char strrev(char *s) {char *head=s,*tail; char temp; tail=s+(strlen(s)-1); while(head<tail) { temp=*tail; *tail=*head; *head=temp; tail--;head++; } } main() {char test[]={“this is the test.”}; printf(“%s\n”,test); strrev(test); printf(“%s\n”,test); }


相关文档

更多相关文档

广东海洋大学C语言考试A试卷选择
广东海洋大学 c++程序设计 谭浩强
概率论与数理统计09-10试卷A卷(广东海洋大学)
广东海洋大学概率论试题2012-2013
广东海洋大学概率统计试题
电脑版