一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
1,在C语言中,合法的长整型常数是()
A. OxOL
B. 4962710M
C. 324562&
D. 216D
2,设有定义: int a[10],*p=a+6,*q=a; ,则下列运算哪种是错误的()
A. p-q
B. p+q
C. p+3
D. p>q
3,下列语句中符合C语言语法的赋值语句是()
A. a=1+b+c=a+1;
B. a=(1+b,c-atl);
C. a=(1+b,b++,a+1);
D. a=l+b,c=a+1
- 下面的叙述中不正确的是()
A.用typedef可以定义各种类型名,但不能用来定义变量
B.用typedef可以增加新类型
C.用typedef只是将已存在的类型用一个新的标识符来代表
D.使用typedef有利于程序的通用和移植
5,设有数组定义: char array [7]-“China”;则数组array所占的空间为()
A. 4 个字节
B. 5个字节
C. 6个字节
D. 7个字节
6.已知字母a的ASCII值为十进制的97,下面程序的输出是()
#include <stdio.h>
void main
{
char cl,c2;
cl=‘a’+6’-2’; c2=‘a’+‘6’-‘3’;
printf(“%c,%din”,c2,cl);
}
A. 输出不确定的值
B. d,e
C. e, f
D. d, 101
7,以下正确定义一维数组的选项是()
A. mta[5]={0, 1,2,3,4,5);
B. char a[]= “ABC”;
C. char a[]= “ABC”😭. char a=“ABC”;
D. int a[5]=“123”;
8若定&inti;则以下循环语句的循环执行次数是(forfi=2; i=0;) printf(“%d”, i-)
A.无限次
B. 0次
C. 1次
D. 2次
- 与以下定义等价的是()
int*p4
A. int p4]
B. intp
C. int (p4])
D. int (*p)[4]
10.假定a和b为int型变量,则执行以下语句后b的值为()
a=1;b=10;
do {b-=a;a++;)
while(b–<0);
A. 9
B. -2
C. -1
D. 8
- 请选出正确的程序段()
A. int p;
scanf(“%d”,p);
‘’‘’
B. int *s,k;
*s=100;
C. int *s, k;
char *p, c;
s=&k;
p=&c;
*p=‘a’;
D. int *s, k;
char *p, c;
s=&k;
p=&c;
S-p;
*s=1;
…
12.若有以下的说明和语句:
#include <stdio.h>
void main()
{ int t[3][2], *pt[3],k;
for(k=0; k<3;k++) pt[k]=t[k]; }
A. &t[3][2]
B. *pt[0]
C. *(pt+1)
D. &pt[2]
- 若有以下定义和语句:doubler=50,*p=&r; *p-T; 则以下正确的叙述是()
A. 两处的p 含义相同,都说明给指针变量p赋值
B.在double r-50,p-&r;中,把r的地址赋值给了p所指的存储单元
c.语句p-T:把变量r的值赋给指针变量p
D.语句p-t:取变量r的值放回r中
14.执行以下程序后, y的值是()
#include <stdio.h>
void main ()
{
int a0={2,4,6,8,10};
int y=1,x.p;
p=&a[1];
for(x=0;x<3;x++) y+=(p+x);
printf(“%d\n”,y);
}
A17
B18
C19
D20
15.当说明一个共用体变量时,系统分配给它的内存是()
A.第一个成员所需内存空间
B. 各成员所需内存空间之和
c. 各成员所需内存空间的最大值
D.最后一个成员所需内存空间
16, 设ntx=1, y-1:表达式(! x++&&y-) 的值是()
A.0
B. I
C. 2
D. -1
- 要求函数的功能是交换x 和y中的值,且通过正确调用返回交换结果。能正确执行功能的函数是()
A. funa (intx, inty) {int*p: *p=*x: x=*y: y=*p: }
B. fund (intx,inty) {intt; tx; xy: yt: }
C. fune (int xs intg) {*x=*y: *y=x: }
D. fund fintx, int *y) {*x=*x+*y; *y=*x-*y: *x=*x-*y: }
18以下程序的输出结果是()
#include <stdio.b>
#include < string.h>
void mainz()
{ char *s1=“ABCDEF”,*s2=“aB”;
sl++;s2++;一printf(“%d”,strcmp(s1,s2));
}
A. 正数
B. 负数
C. 零
D.
19.一下程序的运行结果是()
#include <stdio.h>
void sub(int s[], int *y) {
static int t = 3;
*y = s[t];
t--;
}
int main() {
int a[] = {1, 2, 3, 4};
int i, x = 0;
for (i = 0; i < 4; i++) {
sub(a, &x);
}
printf("%d\n", x);
return 0;
}
A. 1234
B. 4321
C. 0000
D. 4444
- 以下不能正确赋值的是()
A. char s1[10];s1=“test”;
B. char s20={t’e’s,'t}
C. char s3[20]=“test”;
D. char s4[4]={‘t’,‘e’,‘s’,‘t’}
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结果填写在答题纸的相应位置上。)
#include <stdio.h>
void main()
{ int n='c';
switch(n++)
{default: printf("error"); break;
case 'a': case 'A': case 'b': case 'B': printf("good"); break;
case 'c': case 'C': printf("pass");
case 'd': case 'D': printf("warn");
}
}
#include <stdio.h>
void main() {
char s[] = "ABCD";
char *p;
for (p = s; p < s + 4; p++) {
printf("%c\n", *p);
}
}
#include<stdio.h>
void main() {
int a[3][4] = {
{1, 3, 5, 7},
{9, 11, 13, 15},
{17, 19, 21, 23}
};
int (*p)[4], i, j, k = 0;
p = a;
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
k += *(*(p + i) + j);
}
}
printf("%d\n", k);
}
#include <stdio.h>
static int m = 0, i = 2;
int func(int a, int b) {
i += m + 1;
m = i + a + b;
return m;
}
int main() {
int k = 4, p;
p = func(k, m);
printf("%d\n", p);
p = func(k, m);
printf("%d\n", p);
return 0;
}
#include <stdio.h>
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int f(int n) {
if (n - 1) {
return (n * f(n - 1) + a[n] / (n + 1));
} else {
return a[0];
}
}
int main() {
int n = 6;
printf("f(%d) = %d\n", n, f(n));
return 0;
}
三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上
- 函数 void fun(float * sn,int n)的功能是:根据以下公式计算 S,计 结果通连形 A指锥 s 传回: n通过形参传入,n的值大于等于0。
#include <stdio.h>
void fun(float *sn, int n) {
float s = 0.0, w, f = -1.0;
int i = 0;
for (i = 1; i <= n; i = i + 2) {
f =_________; // Toggle the sign for each iteration
________=s;
}
- 以下程序用来显示如下图案,请填空。
#include <stdio.h>
int main() {
int a[5][5], i, j;
for (i = 0;________; i++) {
for (j = 0; ________; j++) {
if (i == j) {
a[i][j] = ________;
} else {
a[i][j] = _________;
}
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
3.以下程序中函数fun的功能是:统计person所指结构体数组中所有年龄>60的记录的个数,存入变量n中,并作为函数值返回。请填空。
#include <stdio.h>
#define N 3
typedef struct {
int num;
char name[10];
int age;
} SS;
int fun(SS person[]) {
int i, n = 0;
for (i = 0; i < N; i++) {
if (____________) {
n++;
}
}
return n;
}
int main() {
SS W[N] = {{1, "AA", 60}, {2, "BB", 73}, {3, "CC", 62}};
int n;
n =_________;
printf("n = %d\n", n);
return 0;
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)
-
编程:分别输出 1!到n!(要求用静态变量)
-
编程:从字符串 str 中截取一子串。要求该子串是从 str 的第 m个字符开始,由 n个字符组成。
3,从键盘输入某班学生的学号以及某门课的成绩(每班人数最多不超过40入,其体人数由键盘输入),计算并输出最高分及相应学生的学号。
要求:1.输入数据用子函数实现。2.计算最高分用子函数实现。3.在主函数输出结果。