1、福建省二级 C 语言-1 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:20,分数:40.00)1.一个 C 语言源程序中,main 函数的位置_。(分数:2.00)A.必须在最开始B.必须在自定义函数的前面C.可以放在某一用户函数定义之前,也可以放在某一用户函数定义之后D.必须在自定义函数的后面2.在 C 语言中,不正确的浮点型常量是_。(分数:2.00)A.-123e-3.0B.-.123C.-1.23e-1D.-0.1233.已定义 C 为字符型变量,则下列语句中,正确的是_。(分数:2.00)A.c=“97“B.c=“97“C.c=97D.c=“a“4
2、.在 C 语言中,要求运算数必须是整型的运算符是_。(分数:2.00)A./B.%C.+D.*5.根据以下已有定义和数据的输入方式,输入语句的正确形式为_。 已定义:float x, y; 数据的输入方式:3.62 2.8(分数:2.00)A.scanf(“%f, %f“, B.scanf(“%f%f“, C.scanf(“%3.2f%2.1f“, D.scanf(“%3.2f, %2.1f“, 6.判断 char 型变量 c 是否为大写字母的正确表达式为_。(分数:2.00)A.“A“=c=“Z“B.(“A“=c)|(c=“Z“)C.(c=A) int a; float x; double
3、y; ,则表达式 c*a+y-x 值的数据类型为_。(分数:2.00)A.doubleB.floatC.charD.int8.阅读以下程序,若从键盘输入 5,则正确的输出结果是_。 #includestdio.h int main() int x; scanf(“%d“, if(x-5) printf(“%d“, x); else printf(“%d“, x+); return 0; (分数:2.00)A.3B.4C.5D.69.以下程序运行结果是_。 #includestdio.h int main() int i, x=1; for(i=3; i0; i-) x=(x+1)*3; pri
4、ntf(“%d/n“, x); return 0; (分数:2.00)A.9B.27C.66D.5410.在定义:int a10; 之后,对数组 a 元素引用正确的是_。(分数:2.00)A.a10B.a9+3C.a(7)D.a10-111.以下不能对二维数组 a 进行正确初始化的语句是_。(分数:2.00)A.int a3=1, 3, 5, 2, 4, 6;B.int a3=1, 3, 5, 0, 2, 4;C.int a23=2, 1, 3, 4, 6, 5;D.int a23=0;12.以下对 C 语言字符数组描述中,正确的是_。(分数:2.00)A.可使用 printf 函数实现字符数
5、组中的字符串输出,遇到字符“/0“结束输出B.字符数组只能存放英文字母,而不能存放数字符号C.可用 len 函数计算字符数组中字符串的长度D.可通过赋值语句实现字符数组的整体赋值13.下列叙述正确的是_。(分数:2.00)A.在调用函数中对被调函数的声明是必不可少的B.函数可以返回一个值,但不能什么值都不返回C.声明函数时必须明确其参数类型和返回类型D.函数的定义和调用都不可以嵌套14.以下程序的运行结果是_。 #includestdio.h #define M 5 #define N 8 int main() printf(“%d/n“, M*N); return 0; (分数:2.00)A
6、.8B.5C.40D.1315.若已定义:int*p, a; ,以下正确的语句是_。(分数:2.00)A.p=*a;B.a=p;C.a=*p;D.p=16.以下程序的运行结果是_。 #includestdio.h int main() char str=“JAVA“, *p; for(p=str+1; pstr+4; p+) printf(“%s/n“, p); return 0; A B C D (分数:2.00)A.B.C.D.17.在说明一个结构变量时系统分配给它的存储空间是_。(分数:2.00)A.该结构变量中第一个成员所需存储空间B.该结构变量中最后一个成员所需存储空间C.该结构变量
7、中占用最大存储空间的成员所需存储空间D.该结构变量中所有成员所需存储空间的总和18.以下程序的运行结果是_。 #includestdio.h Struct St int n; float x; *p; int main() struct st arr5=10, 5.6, 12, 7.1, 14, 6.7, 16, 6.2, 18, 6.9; p=arr; printf(“%d/n“, +p-n); p+; printf(“%d, %.2f/n“, p-n, p-x); return 0 A B C D (分数:2.00)A.B.C.D.19.若有以下说明和定义: typedef int*INT
8、EGER; INTEGER p, *q; 以下叙述中,正确的是_。(分数:2.00)A.p 是 int 型变量B.p 是基类型为 int 的指针变量C.q 是基类型为 int 的指针变量D.程序中可用 INTEGER 代替 int 类型名20.当已存在一个 abc.txt 文件时,执行函数 fopen(“abc.txt“, “r+“)的功能是_。(分数:2.00)A.打开 abc.txt 文件,清除原有的内容B.打开 abc.txt 文件,只能写入新的内容C.打开 abc.txt 文件,只能读取原有内容D.打开 abc.txt 文件,可以读取和写入新的内容二、程序填空题(总题数:1,分数:20
9、.00)(在每对/*/之间填写内容,完成题目的要求)(分数:20.00)(1).以下程序用以实现:输入运算标志 m 和圆的半径 r,按照运算标志进行指定运算。 运算标志 运算 a 圆的面积 C 圆的周长 b 二者都计算 #includestdio.h #define PI 3.1415926 int main() /*/ 1/*/ m; float r, a, c; printf(“Input mark a or c or b and r:“); scanf(“%c %f“, if(m=“a“)|(m=“c“)|(m=“b“) printf(“area is %f/n“, a); else i
10、f(/*/ 2/*/) c=2*PI*r; printf(“circle is %f/n“, c); else a=PI*r*r; c=2*PI*r; printf(“area is %f, circle is %f/n“, a, c); else printf(“Data are error!/n“); return 0; (分数:10.00)(2).以下程序用以统计从键盘输入字符串中所有字符个数 n 和元音字符个数 v。 #includestdio.h int main() char c; int n=0, v=0; /*/ 1/*/ switch(c=getchar() case“a“:
11、case“A“: case“e“:case“E“: case“i“:case“I“: case“o“:case“O“: case“u“:case“U“: v+; /*/ 2/*/ n+; while(c!=“/n“); printf(“n=%d, v=%d/n“, n-1, v); return 0; (分数:10.00)三、程序改错题(总题数:1,分数:20.00)(修改每对/*/之间存在的错误,完成题目的要求)(分数:20.00)(1).以下程序用以查找字符串 sub 是否是字符串 str 的子串。若是,则输出 sub 在 str 中首次出现的下标,否则输出“Not Exist!”。 #i
12、ncludestdio.h int main() char str100, sub80; int i, j, k, key=0; printf(“Enter a string:“); gets(str); printf(“/nEnter a sub string:“); gets(/*/ 1 for(i=0; stri!=“/0“; i+) for(j=i, k=0; subk!=“/0“ j+) k+; if(subk=“/0“) printf(“%d“, i); key=1; /*/ 3 continue/*/; if(key=0) printf(“Not Exist!/n“); retu
13、rn 0; (分数:10.00)(2).以下程序中的 scut 函数实现截取字符串从第 m 个字符开始的 n 个字符。 #includestdio.h #includestring.h void scut(char str, int m, int n) /*/ 1 char p; str2100; /*/ int i=0; p=str+m-1; while(in) /*/ 2 str2i=*p+; /*/ str2i=“/0“; printf(“sub string is:%s/n“, str2); int main() char str1100; int m, n, len; printf(
14、“Enter a string:“); gets(str1); printf(“/nEnter m, n:“); scanf(“%d, %d“, len=strlen(str1); if(m-1+nlen) printf(“Can“t run with %d and %d!/n“, m, n); else /*/ 3 scut(str1; m; n); /*/ return 0; (分数:10.00)四、编程题(总题数:1,分数:20.00)(补充每对/*/A 间的程序段,完成题目的要求)(分数:20.00)(1).程序中的 fun()函数用以完成如下数学表达式。 (分数:10.00)_(2)
15、.编写程序中的 fun()函数,通过递归调用该函数计算以下表达式的值。 s=1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+n)#includestdio.h int fun(int n) /*/ /*/ int main() int i=1, n, sum=0; printf(“Please input a integer number:“); scanf(“%d“, while(i=n) sum=sum+fun(i); i+; printf(“s=%d/n“, sum); return 0; (分数:10.00)_福建省二级 C 语言-1 (1)答案解析(总分:100.00,
16、做题时间:90 分钟)一、选择题(总题数:20,分数:40.00)1.一个 C 语言源程序中,main 函数的位置_。(分数:2.00)A.必须在最开始B.必须在自定义函数的前面C.可以放在某一用户函数定义之前,也可以放在某一用户函数定义之后 D.必须在自定义函数的后面解析:2.在 C 语言中,不正确的浮点型常量是_。(分数:2.00)A.-123e-3.0 B.-.123C.-1.23e-1D.-0.123解析:3.已定义 C 为字符型变量,则下列语句中,正确的是_。(分数:2.00)A.c=“97“B.c=“97“C.c=97 D.c=“a“解析:4.在 C 语言中,要求运算数必须是整型的
17、运算符是_。(分数:2.00)A./B.% C.+D.*解析:5.根据以下已有定义和数据的输入方式,输入语句的正确形式为_。 已定义:float x, y; 数据的输入方式:3.62 2.8(分数:2.00)A.scanf(“%f, %f“, B.scanf(“%f%f“, C.scanf(“%3.2f%2.1f“, D.scanf(“%3.2f, %2.1f“, 解析:6.判断 char 型变量 c 是否为大写字母的正确表达式为_。(分数:2.00)A.“A“=c=“Z“B.(“A“=c)|(c=“Z“)C.(c=A) int a; float x; double y; ,则表达式 c*a+
18、y-x 值的数据类型为_。(分数:2.00)A.double B.floatC.charD.int解析:8.阅读以下程序,若从键盘输入 5,则正确的输出结果是_。 #includestdio.h int main() int x; scanf(“%d“, if(x-5) printf(“%d“, x); else printf(“%d“, x+); return 0; (分数:2.00)A.3B.4 C.5D.6解析:9.以下程序运行结果是_。 #includestdio.h int main() int i, x=1; for(i=3; i0; i-) x=(x+1)*3; printf(“
19、%d/n“, x); return 0; (分数:2.00)A.9B.27C.66 D.54解析:10.在定义:int a10; 之后,对数组 a 元素引用正确的是_。(分数:2.00)A.a10B.a9+3C.a(7)D.a10-1 解析:11.以下不能对二维数组 a 进行正确初始化的语句是_。(分数:2.00)A.int a3=1, 3, 5, 2, 4, 6;B.int a3=1, 3, 5, 0, 2, 4;C.int a23=2, 1, 3, 4, 6, 5; D.int a23=0;解析:12.以下对 C 语言字符数组描述中,正确的是_。(分数:2.00)A.可使用 printf
20、函数实现字符数组中的字符串输出,遇到字符“/0“结束输出 B.字符数组只能存放英文字母,而不能存放数字符号C.可用 len 函数计算字符数组中字符串的长度D.可通过赋值语句实现字符数组的整体赋值解析:13.下列叙述正确的是_。(分数:2.00)A.在调用函数中对被调函数的声明是必不可少的B.函数可以返回一个值,但不能什么值都不返回C.声明函数时必须明确其参数类型和返回类型 D.函数的定义和调用都不可以嵌套解析:14.以下程序的运行结果是_。 #includestdio.h #define M 5 #define N 8 int main() printf(“%d/n“, M*N); retur
21、n 0; (分数:2.00)A.8B.5C.40 D.13解析:15.若已定义:int*p, a; ,以下正确的语句是_。(分数:2.00)A.p=*a;B.a=p;C.a=*p;D.p= 解析:16.以下程序的运行结果是_。 #includestdio.h int main() char str=“JAVA“, *p; for(p=str+1; pstr+4; p+) printf(“%s/n“, p); return 0; A B C D (分数:2.00)A. B.C.D.解析:17.在说明一个结构变量时系统分配给它的存储空间是_。(分数:2.00)A.该结构变量中第一个成员所需存储空间
22、B.该结构变量中最后一个成员所需存储空间C.该结构变量中占用最大存储空间的成员所需存储空间D.该结构变量中所有成员所需存储空间的总和 解析:18.以下程序的运行结果是_。 #includestdio.h Struct St int n; float x; *p; int main() struct st arr5=10, 5.6, 12, 7.1, 14, 6.7, 16, 6.2, 18, 6.9; p=arr; printf(“%d/n“, +p-n); p+; printf(“%d, %.2f/n“, p-n, p-x); return 0 A B C D (分数:2.00)A.B.C.
23、 D.解析:19.若有以下说明和定义: typedef int*INTEGER; INTEGER p, *q; 以下叙述中,正确的是_。(分数:2.00)A.p 是 int 型变量B.p 是基类型为 int 的指针变量 C.q 是基类型为 int 的指针变量D.程序中可用 INTEGER 代替 int 类型名解析:20.当已存在一个 abc.txt 文件时,执行函数 fopen(“abc.txt“, “r+“)的功能是_。(分数:2.00)A.打开 abc.txt 文件,清除原有的内容B.打开 abc.txt 文件,只能写入新的内容C.打开 abc.txt 文件,只能读取原有内容D.打开 ab
24、c.txt 文件,可以读取和写入新的内容 解析:二、程序填空题(总题数:1,分数:20.00)(在每对/*/之间填写内容,完成题目的要求)(分数:20.00)(1).以下程序用以实现:输入运算标志 m 和圆的半径 r,按照运算标志进行指定运算。 运算标志 运算 a 圆的面积 C 圆的周长 b 二者都计算 #includestdio.h #define PI 3.1415926 int main() /*/ 1/*/ m; float r, a, c; printf(“Input mark a or c or b and r:“); scanf(“%c %f“, if(m=“a“)|(m=“c“
25、)|(m=“b“) printf(“area is %f/n“, a); else if(/*/ 2/*/) c=2*PI*r; printf(“circle is %f/n“, c); else a=PI*r*r; c=2*PI*r; printf(“area is %f, circle is %f/n“, a, c); else printf(“Data are error!/n“); return 0; (分数:10.00)解析:char m=“c“(2).以下程序用以统计从键盘输入字符串中所有字符个数 n 和元音字符个数 v。 #includestdio.h int main() ch
26、ar c; int n=0, v=0; /*/ 1/*/ switch(c=getchar() case“a“:case“A“: case“e“:case“E“: case“i“:case“I“: case“o“:case“O“: case“u“:case“U“: v+; /*/ 2/*/ n+; while(c!=“/n“); printf(“n=%d, v=%d/n“, n-1, v); return 0; (分数:10.00)解析:do defauh:三、程序改错题(总题数:1,分数:20.00)(修改每对/*/之间存在的错误,完成题目的要求)(分数:20.00)(1).以下程序用以查找
27、字符串 sub 是否是字符串 str 的子串。若是,则输出 sub 在 str 中首次出现的下标,否则输出“Not Exist!”。 #includestdio.h int main() char str100, sub80; int i, j, k, key=0; printf(“Enter a string:“); gets(str); printf(“/nEnter a sub string:“); gets(/*/ 1 for(i=0; stri!=“/0“; i+) for(j=i, k=0; subk!=“/0“ j+) k+; if(subk=“/0“) printf(“%d“,
28、 i); key=1; /*/ 3 continue/*/; if(key=0) printf(“Not Exist!/n“); return 0; (分数:10.00)解析:sub strj=subk break(2).以下程序中的 scut 函数实现截取字符串从第 m 个字符开始的 n 个字符。 #includestdio.h #includestring.h void scut(char str, int m, int n) /*/ 1 char p; str2100; /*/ int i=0; p=str+m-1; while(in) /*/ 2 str2i=*p+; /*/ str2
29、i=“/0“; printf(“sub string is:%s/n“, str2); int main() char str1100; int m, n, len; printf(“Enter a string:“); gets(str1); printf(“/nEnter m, n:“); scanf(“%d, %d“, len=strlen(str1); if(m-1+nlen) printf(“Can“t run with %d and %d!/n“, m, n); else /*/ 3 scut(str1; m; n); /*/ return 0; (分数:10.00)解析:char
30、*p, str2100; str2i+=*p+; scut(str1, m, n);四、编程题(总题数:1,分数:20.00)(补充每对/*/A 间的程序段,完成题目的要求)(分数:20.00)(1).程序中的 fun()函数用以完成如下数学表达式。 (分数:10.00)_正确答案:()解析:double y; if(x1) y=x; else if(x10) y=sqrt(2*x-1); else y=log(3*x); return y;(2).编写程序中的 fun()函数,通过递归调用该函数计算以下表达式的值。 s=1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+n)#includestdio.h int fun(int n) /*/ /*/ int main() int i=1, n, sum=0; printf(“Please input a integer number:“); scanf(“%d“, while(i=n) sum=sum+fun(i); i+; printf(“s=%d/n“, sum); return 0; (分数:10.00)_正确答案:()解析:int k; if(n=1) k=1; else k=n+fun(n-1); return k;