江苏省计算机二级C语言试题笔试(8份)

更新时间:2024-06-17 14:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言考试要求

1.C语言的基本概念。

(1)源程序的格式、风格和结构,main函数及其他函数的基本概念。 (2)基本算术类型数据的表示及使用。

①类型标识符(int,float,double,char)的意义及使用;类型修饰符(long,short,signed,unsigned)的意义及使用。

②基本类型常量的表示及使用:int型常量的十进制、八进制、十六进制形式;float型常量、double型常量的十进制小数形式、十进制指数形式.;char型常量形式,常用转义字符;字符串常量形式;符号常量的命名、定义与使用。

③基本类型变量的命名、声明、初始化及使用。 ④使用函数返回值作为操作数。 (3)运算符和表达式的表示及使用。 ①表达式的一般组成。

②运算符功能、表达式的组成及表达式的值:赋值运算符与赋值表达式,赋值运算符的左值要求;算术运算符与算术表达式,++、- -运算符的左值要求;关系运算符与关系表达式;逻辑运算符与逻辑表达式,含有&&,||运算符的表达式的操作数求值顺序与优化处理;逗号运算符与逗号表达式,逗号表达式的操作 数求值顺序;条件运算符与条件表达式;位运算符与位运算表达式。

③运算符的目数。

④运算符的优先级与结合性。

⑤表达式运算中操作数类型的自动转换与强制转换。 2.基本语句

(1)实现顺序结构的语句:表达式语句(包括函数调用语句)、空语句、复合语句;标准设备文件输入输出函数:printf()、scanf()、getchar()、putchar()、gets ()、puts()。

(2)实现选择结构的语句:if?else?语句、switch语句和break语句。 (3)实现循环结构的语句:while语句、do_while语句、for语句。 (4)其他语句:break、continue、return。 3.构造类型数据。

(1)基本类型数组(一维、二维)。 ①数组的命名、声明及初始化;

1

②数组的存储结构; ③数组元素的引用;

④字符数组的使用(字符串的存储及基本操作)。 (2)结构体变量和数组。

①结构体数据类型的定义;

②结构体变量、结构体数组的声明及初始化;

③结构体变量中成员、结构体数组元素中成员的赋值和引用。 (3)联合体变量和数组。 ①联合体数据类型的定义; ②联合体变量和数组的声明;

③联合体变量中成员、联合体数组元素中成员的赋值和引用。 4.函数。

㈩非递归函数的定义、声明、调用及执行过程

①函数的定义:函数命名;函数类型(返回值类型):基本数据类型、结构体类型、指针类型;函数形式参数的声明;函数体定义、函数返回值与return语句的使用。

②函数的声明(函数原型)。 ③函数的调用。

(2)递归函数的定义、声明、调用及执行过程。 (3)函数调用时参数的传递。

①传数值:将常量或表达式的值传递给函数;将基本类型变量的值传递给函数,将数组元素的值传递给函数;将结构体变量中一个成员的值传递给函数;将结构体变量全部成员的值传递给函数。

②传地址值:将基本类型变量、结构体变量的地址值传递给函数;将基本类型数组元索、结构体类型数组元素的地址值传递给函数。

③函数调用时实际参数类型与形式参数类型的兼容。 (4)函数返回值的产生

①从函数返回一个常量的值、一个表达式的值、一个基本类型变量的值、一个组元素的值、结构体变量中一个成员的值;

②从函数返回一个结构体变量全部成员的值。

(5)变量的作用域:全局变量、局部变量与函数的形式参数变量的作用域。 (6)局部变量、函数形式参数变量的存储类型和生存期。

2

(7)main函数命令行参数。 5.指针类型数据。

(1)指针与地址的概念,取地址运算符&的使用。 (2)基本类型变量的指针操作。 ①基本类型变量指针的获得;

②指向基本类型变量的指针变量的声明。初始化、赋值及使用,指针变量的基本类型

③间接引用运算符*的使用。 (3)基本类型数组的指针操作。

①数组元素指针的获得(指针常量)及算术运算;

②指向数组元素的指针变量的声明、初始化、赋值、算术运算及引用; ③数组行指针的获得(指针常量)及算术运算

④指向数组中一行元素的行指针变量的声明.、初始化、赋值、算术运算及引用。

(4)结构体变量、结构体数组的指针操作。

①、结构体变量指针、结构体数组元素指针的获得: ②指向结构体变量的指针变量的声明、初始化、赋值及引用; ③指向结构体数组的指针变量的声明、初始化、赋值、算术运算及引用。

(5)函数的指针操作。 ①函数的指针的获得

②指向函数的指针变量的声明、初始化、赋值及引用。 (6)指针数组的声明和使用。 (7)二级指针的声明和使用。

(8)指针作为函数的参数传递给函数:将基本类型变量的指针、结构体变量的指针、数组元素的指针、数组的行指针、函数的指针传递给函数。

6.单向链表的建立与基本操作。 (1)结点的数据类型定义。

(2)使用malloc()函数、free()函数动态申请和释放结点存储区。 (3)链表基本操作:建立一个新链表。遍历一个链表的全部结点豹值、插入新结点、删除结点。

3

7.枚举类型数据。 (1)枚举类型定义。

(2)枚举变量的命名、声明。 (3)枚举常量的使用。 (4)枚举变量的赋值及使用。 8.预处理命令。 (1)预处理的概念和特点。

(2)#define命令及其使用:定义符号常量、定义带参数的宏。 (3)#include命令及其使用。 9.文件操作。 (1)文件指针变量的声明

(2)缓冲文件系统常用操作函数的使用:fopen()、fdose()、fprintf():、fscanf()、

fgetc()、fputc()、fgets()、fputs()、feof()、rewind(),fread(),fwrite(),fseek().

10.其他常用库函数。

(1)数学函数(头文件math.h):abs()、fabs(),sin(),cos()、tan(),asin(),acos()、Atan(),exp(),sqrt(),pow(),fmod(),log(),log10(). (2)字符串处理函数(头文件string.h):strcmp()、strcat()、strcpy(),stilen()。

(3)字符处理函数(头文件ctype.h):isalpha()、isdigit()、idawer()、isupper()、isspace()。

11.应当掌握的一般算法。 (1)基本操作:交换,累加、累乘

(2)非数值计算常用经典算法:穷举,排序(冒泡法。插入法、选择法),归并(或合并),查找(线性法,折半法)

(3)数值计算常用经典算法。

①级数计算(递推法)、一元非线性方程求根(牛顿迭代法)、矩阵转置;

②一元非线性方程求根(半分区间法):定积分计算(梯形法、矩形法)、矩阵乘法。

(4)解决各类问题的一般算法。

4

笔试形式

笔试部分由基础知识和c语言程序设计两部分组成,共60分。基础知识全部为单选题,共20分(每题1分)。c语言程序设计部分分为单选题(10分,每题1分)和填空题(30分,每空1分)。

答题要求:单选题的答案必须涂划在专用答题卡上;填空题的答案必须写在专用答题纸上(填空时注意:每个填空要按标号顺序填,一空占一行,不是一题一行;因为有的题目一题包含多个空)。

c语言考试如何判断合格!

江苏省计算机等级考试的考务细则规定:二级笔试和上机操作考试成绩均须达到规定 标准,方为合格。优秀的考生则要求两部分都必须达到优秀,总分85分以上(含85分)且两部分都达到了优秀标准,而不是两部分加起来达到85分以上。

上机考试形式

上机题总分为40分,其中改错题占18分,编程题占22分。 (1)改错题:改错题中所存在的错误主要是语法错误(如数组的声明错误、函数定义错误等)、运行错误(如包含不正确的头文件)、逻辑错误等。 (2)编程题:编程题程序中,通常都涉及一个有一定难度的算法,考生须按题目要求实现,并且要求考生将算法运行的结果输出到指定文件中。所以,考生必须熟练掌握常用算法和文件的读写操作。

上机编程题的方法和技巧

(1)开始做编程题时,不要急着动手写程序,一定要把题意理解清楚。然后,在纸上写下关键算法的思想和实现的语句。最后,按“输入数据_数据处理_÷输出数据”的流程写出主程序及相关函数。

(2)输出文件处理。

在完成编程题时,通常要求考生把结果输出到文件myf2.out中,但在平时练习或考试完成这项功能时,考生常常会遇到一系列的问题:

①想查看结果是否输出到myf2.out中,却不知道myf2.out如何打开。

找到myf2.out文件后,点击右键,选择“打开方式”,在对话框中选择“记事本”,并选择“始终使用该程序打开这些文件”。以后双击myf2.out

5

文件时,将用记事本打开mym.out。

②每运行一次程序,都要打开一次myf2.out,查看运行结果,很麻烦也很浪费时间。其实在编写程序时,没有必要在一开始就将所有结果都输出到myf2.out中,可先将所有结果都输出到显示器上,这样比较直观。待能够正确输出所有结果后,再加人必要的文件输出语句,这样可节省时间。

③无法写入myf2.out文件。

先检查myf2.out文件的大小,如果文件大小为0K,不用打开文件便可知道文件没有被写入。 导致myf2.out无法写入的主要原因是文件操作有误。正确的文件操作过程如下:

(a)在源程序中使用#include。因为定义文件指针所需要的结构体FILE是

在stdio.h文件中被定义的。

(b)定义文件指针。例如,“FILE *out;”。

(c)打开文件。把要进行读写的文件与磁盘中实际存储的数据文件建立关联。

例如:

out=fopen(”myf2.out”,”w”);

”w”表示为输出打开文件myf2.out。注意它与”a”的不同,”a”是在文件尾部增加数据,而\”是用新数据覆盖原有数据。

(d)对文件进行写操作。可使用fprinff对文件进行写操作,函数的格式如下:

fprintf(文件指针,格式字符串,输出列表) 例如:

fprintf(out,”%d”,m); fread(f,4,2,fp);

(e)文件使用完毕后,使用函数关闭文件。 例如:

fclose(out);

(3)上机编程题是按步给分的,每项操作都有相应的分值。所以,即便不能编写出完整程序,也不要轻易放弃。要尽量把变量定义和可能要用的程序结构写出来。

6

江苏省计算机等级考试

- 学年 第 学期 c程序设计 试卷( )

题号 得分 总一 二 三 四 五 六 七 八 九 分 一、选择题(本题共20道小题,共40分。) 1. 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是 A)*p=&a; scanf(\ B)p=(double*)malloc(8);scanf(\C) p=&a;scanf(\ D)p=&a; scanf(\

2. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 main( ) { int x; scanf(\if(x + + >5) printf(\

else printf(\ }

A) 7和5 B) 6和3 C) 7和4 D) 6和4

3. 下面程序的输出是

A) xyzabcABC B) zabcABC #include #include main()

{ char *p1=\strcpy(str+2,strcat(p1,p2)); printf(\

4. 若有以下说明:

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;

则数值为4的表达式是

A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]

5. 以下叙述中不正确的是

7

C) yzabcABC D) xyabcABC

A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量

C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量

6. 请选出以下程序段的输出结果 #include

#define MIN(x,y) (x)<(y)? (x):(y) main() { int i,j,k; i=10; j=15; k=10*MIN(i,j); printf(\}

A) 15 B) 100 C) 10 D)150

7. 在C程序中,可把整型数以二进制形式存放到文件中的函数是 A) fprintf函数 B) fread函数 C) fwrite函数 D) fputc函数

8. 设有以下语句:

struct st {int n; struct st *next;};

static struct st a[3]={5,&a[1],7,&a[2],9,'\\0'},*p; p=&a[0];

则表达式_____的值是6。

A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n

9. C语言中形参的缺省存储类别是 A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern) 10. 执行下面的程序段后,变量k中的值为 int k=3, s[2]; s[0]=k; k=s[1]*10;

A) 不定值 B) 33 C) 30 D) 10 11. 已知字母A的ASCII码为十进制的65,下面程序的输出是 main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3';

printf(\A) 67,D B) B,C

C) C,D

D) 不确定的值

12. 语句:printf(\,12 &012);的输出结果是

8

A) 12 B) 8 C) 6 D) 012

13. 以下说法中正确的是

A) C语言程序总是从第一个的函数开始执行

B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行

D) C语言程序中的main()函数必须放在程序的开始部分

14. 以下程序运行后,输出结果是 main( ) {

char *s=\s+=2;

printf(\,s); }

A)cde B)字符c的ASCII码值 C)字符c的地址 D)出错

15. 设x和y均为int型变量,则执行下的循环后,y值为 for(y=1,x=1;y<=50;y++) {

if(x>=10)break;

if(x%2==1){x+=5;continue;} x-=3; }

A)2 B)4 C)6 D)8

16. 当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为 if(a

A)1 B)2 C)3 D)6

17. 设所有变量均为int型,则表达式(a=2,b=5,b++,a+b)的值是 A.7 B.8 C.6 D.2

18. 设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型数据的取值范围为: A) 0-255

9

B) 1-32767 C) 0-65535 D) 0-2147483647

19. 下面的程序 main()

{ int x=3,y=0,z=0; if(x=y+z)printf(\else printf(\A) 有语法错误不能通过编译 B) 输出* * * *。

C) 可以通过编译,但是不能通过连接,因而不能运行。 D) 输出# # # #。

20. 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是 A)3 B)4

二、填空题(每空1分,共10分。)

1. 若有定义:double x[3][5],则x数组中行下标的下限为_________,列下标的下限为__________。

2. 设有说明语句\a[3][4]={{1,2},{3,4,5},{6,7,8}};\则a[0][2]的初始化值为_____________,a[2][2]的初始化值为______________。

3. 表达式7/2的结果是____________。表达式7%2的结果是____________。 4. 若已知a=1.5,b=15,c=1,则表达式a*b&&c的运算结果是____________。 5. C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为______________。

6. 定义int a[]={1,2,3,4,5,6},*p=a;表达式(*++p)++的值是____________。 7. 已有int i,j; float x;为将-10赋给i,12赋给j,410.34赋给x;则对应scanf(\调用语句的数据输入形式是__________

三、判断题(本题共10道小题,共10分。)

1. 在实际编程中,do-while循环完全可以用for循环替换( ) 2. do-while循环中,根据情况可以省略while( )

3. 若调用一个函数,且此函数中没有return语句,则返回一个不确定的值( ) 4. 函数调用:strcat(strcpy(str1,str2),str3)的功能是将串str2复制到串str1中后再将串str3连接到串str1之后( )

5. 自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式( ) 6. 全局变量使得函数之间的\耦合性\更加紧密,不利于模块化的要求( )

10

C)5 D)6

7. 函数的定义可以嵌套,但函数的调用不可以嵌套( ) 8. 一个变量在内存中占据一定的存储单元( )

9. 在while循环中允许使用嵌套循环,但只能是嵌套while循环( ) 10. 字符型数组中可以存放字符串( )

四、程序填空(本题共5道小题,每题4分,共20分。) 1. 设有以下程序: main() { int n1,n2; scanf(\while(n2!=0) { n1=n2; n2=n2/10; printf(\} }

程序运行后,如果从键盘上输入1298;则输出结果为_________。 2. 以下程序输出的最后一个值是__________。 int ff(int n) { static int f=l; f=f*n; return f; } main() { int i;

for(I=1;I<=5;I++ printf(\}

3. 编写程序,计算s=1+(1+2)+(1+2+3)+?+(1+2+3+?+n)的值。 #include main() {

int n,s,sum=0; scanf(\ for(int i=1;i<=n;i++) {

____________; for(int j=1;j<=i;j++) _____________; sum+=s; }

printf(\}

11

4. 若输入3个整数3,2,1,则下面程序的输出结果是____________。 #include void sub( n,uu) int n, uu[ ]; { int t;

t=uu[n--]; t+=3*uu[n]; n=n++; if(t>=10)

{ uu[n++]=t/10; uu[n]=t;} else uu[n]=t; } main( )

{ int i, n, aa[10]={0,0,0,0,0,0} scanf( \for(i=1; i

5. 下列程序的输出结果是___________。 int ast(int x,int y,int * cp,int * dp) { *cp=x+y; *dp=x-y; } main() { int a,b,c,d; a=4;b=3; ast(a,b,&c,&d); printf(\}

五、编程题(本题共2道小题,共20分。) 1. 打印出杨辉三角形(要求打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

12

2. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

江苏省计算机等级考试

- 学年 第 学期 c程序设计 试卷(参考答案)

题号 得分

一、选择题(本题共20道小题,共40分。) 1. D 2. A 3. D 4. D 5. D 6. A 7. A 8. D 9. A 10. A 11. A 12. B

13

总一 二 三 四 五 六 七 八 九 分 13. C 14. C 15. C 16. B 17. B 18. C 19. D 20. A

二、填空题(每空1分,共10分。) 1. 2 , 4 2. 0 , 8 3. 3 , 1 4. 1

5. 字母数字或下划线 6. 3

7. 10,12,410.34

三、判断题(本题共10道小题,共10分。) 1. 对 2. 错 3. 对 4. 对 5. 对 6. 对 7. 错 8. 对 9. 错 10. 错

四、程序填空(本题共5道小题,每题4分,共20分。)1. 8921 2. 120 3. s=0 , s+=j 4. 2 7 2 1 或2721 5. 7 1

五、编程题(本题共2道小题,共20分。) 1. main() {int i,j; int a[10][10]; printf(\

14

for(i=0;i<10;i++) {a[i][0]=1; a[i][i]=1;} for(i=2;i<10;i++) for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++) {for(j=0;j<=i;j++) printf(\ printf(\ } } 2. main() {

static int k[10]; int i,j,n,s; for(j=2;j<1000;j++) { n=-1; s=j;

for(i=1;i { if((j%i)==0) { n++; s=s-i; k[n]=i; } } if(s==0) {

printf(\ for(i=0;i printf(\ printf(\ } } }

江苏省计算机等级考试

– 学年 第 学期 C

语言程序设计试卷

15

题号 一 二 三 四 五 六 七 八 九 得分 一、选择题(本大题共10小题,每题3分,共30分)

1. 以下选项中属于C语言的数据类型是( )

A.复数型 B .逻辑型 C .双精度型 D. 集合型

2. 要判断char型变量m是否是数字,可以使用下列表达式( )

A.0<=m && m<=9 B. ‘0’<=m && m<=’9’

C. “0”<=m && m<=”9” D. 前面三个答案均是错误的 3. 为了判断两个字符串s1和s2是否相等,应当使用( )

A.if (s1= =s2) B. if (s1=s2)

C. if ( strcpy (s1,s2) ) D. if ( strcmp( s1,s2)= =0 ) 4. 以下说法正确的是( )

A. C语言程序总是从第一个定义的函数开始执行

B. 在C语言程序中,要调用的函数必须在main()函数中定义 C. C语言程序总是从main()函数开始执行

D. C语言程序中的main()函数必须放在程序的开始部分 5. 以下错误的描述是( )

A. 不同函数中可以使用相同的变量名 B. 形式参数是局部变量

C. 一个函数内部定义的变量只能在本函数范围内有效

D. 在一个函数内部的复合语句中定义的变量可以在本函数范围内有效 6. 要说明一个有10个int 元素的数组,应当选择语句( )

A.int a[ 10 ]; B. int a[ 2, 5 ] C. int a[ ]; D. int *a[ 10 ]; 7. 说明语句”int ( * p ) ( ) ;”的含义是( )

A. p是一个指向一维数组的指针变量 B. p是指针变量,指向一个整型数据

C. p是一个指向函数的指针,该函数的返回值是一个整型 D. 以上都不对

8. 已知:char b[ 5 ] , *p=b; 则正确的赋值语句是( )

A. b=”abcd”; B. *b=”abcd”; C. p=”abcd” ; D. *p=”abcd”; 9. 下面的四个运算符中,优先级最低的是( )

A.( ) B. . C. —> D. + + 10. C语言中标准输入文件stdin 是指( )

A.键盘 B. 显示器 C. 鼠标 D. 硬盘

二、写出运行结果(本大题共4小题,每题5分,共20分)

1.# include main ( ) { char ch;

总 分 16

ch=getchar( ); switch( ch ) { case 65:

printf(“%c”, ‘A’); case 66:

printf(“%c”,’B’); default:

printf(“%s\\n”,”other”); } } 如程序可以正常运行,当从键盘输入 字母A时,输出结果为( ) 2. # include

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

printf(“%d”,d); }

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

printf(“%d”,d); }

运行结果是

3.# include main( ) { int i=0 , j=0; while(i<10) i++;

While( j++<10) ;

Printf(“i=%d, j=%d\\n”, i,j);

}

运行结果是

4.# include main( )

, static char a* +=”Program”, *ptr; for( ptr=a;ptr

putchar ( *ptr ); }

三、阅读程序、填空(每空2分,共18分)

1、下面程序输出3到100之间的所有素数。

17

# include main( ) { int i,j;

for ( i=3; i<=100; i++) { for(j=2;j<=i-1; j++) if ( ) break;

if ( )

printf(“M”,i);

}

}

2、 下面的函数sum(int n )计算1~n的累加和

sum(int n) { if (n<=0)

printf(“data error!\\n”);

if (n= =1) ; else ; }

3、 下面的程序是使用冒泡法对输入的10个浮点数从小到大进行排序。

# include main( )

{ float a[ 10 ],x;

int i,j;

printf(“input 10 numbers please\\n”); for( i=0; ; i++) scanf(“%f”,&a*i]); printf(“\\n”);

for( i=1; ; i++) for (j=0; ;j++) if ( ) { x=a[j]; ; a[j+1]=x; }

四、 设计题(本题共3小题,1、2每题10分,3题12分,共32分)1、写一函数,求方程aX2+bX+c=0的根。从主函数输入a、b、c的值

18

2、 写一函数,输入一个二进制数,输出相应的十进制数

3.建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,将此结点删去

一、选择题(10*2’) 1 c 2 b 3 d 4 c 5 d 6 a 7 c 8 c 9 d 10 a 二、写出程序运行结果(6*3’) 1 ABother 2 .8 4 3 I=10,j=11 4 Porm 三、填写程序(9*3’) 1 I % j = =0 j= =i 2 return(1) return(sum(n-1)+n) 3 I<10 I<9 j<10-I a[j]>a[j+1] a[j]=a[j+1] 1 # include float x1,x2,disc,p,q;

19

greater_than_zero(float a, float b) { x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a); }

equal_to_zero(float a,float b) { x1=x2=(-b)/(2*a); }

smaller_than_zero(float a,float b) { p= -b/(2*a);

q=sqrt(disc)/(2*a);

}

main( )

{ float a,b,c;

scanf(“%f,%f,%f”,&a,&b,&c); disc=b*b-4*a*c; if ( disc>0)

{ greater_than_zero(a,b);

printf(“x1=%5.2f\\tx2=%5.2f\\n\\n”,x1,x2);else if(disc = =0)

{ equal_to_zero( a,b);

printf(“x1=%5.2f\\tx2=%5.2f\\n\\n”,x1,x2); } else

{smaller_than_zero( a,b);

printf(“x1=%5.2f\\tx2=%5.2f\\n\\n”,x1,x2); } } a) #include # define MAX 100 main( )

{ char t[MAX];

i=0; flag=0; flag1=1;

while((c=getchar())!=’\\0’ && I

else if( flag) , t*I+=’\\0’; c=getchar();

if (c= =’N’||c= = ‘n’) flag1=0;

20

else

{ flag=0; I=o;

Printf(“ input a hex number:”,htoi(t)); } } } }

htoi( char s[ ]) { int I, n; n=0;

for(I=0;s*I+!=’\\0’;I++)

n=n*2+s[I]-‘0’; return(n); }

3 #define NULL 0

#define LEN sizeof( struct student) struct student { char num[6]; char name[8]; char sex[2]; int age;

struct student * next; } stu[10]; main( )

{ struct stuent * p; *pt, * head; int I,length,iage,flag=1; int find=0; while(flag= =1)

, scanf(“%d”,&length); if (length<10) flag=0; }

for( I=0;I

{ p=(struct student *)malloc(LEN); if(I= =0)

head=pt=p; else

pt->next=p; pt=p;

scanf(“%s”,p->num); scanf(“%s”,p->name); scanf(“%s”,p->sex);

21

scanf(“%d”,&p->age); }

p->next=NULL;

printf(“input age:”); scanf(“%d”,&iage); pt=head; p=pt;

if( pt->age= =iage) { p=pt->next; head=pt=p; find=1; } else

pt=pt->next; while (pt!=NULL) { if(pt->age= = iage) { p->next=pt->next; find=I; } else p=pt; pt=pt->next; }

if(!find)

printf(“not found\\n”); p=head;

while(p!=NULL)

, printf(“%4s%8s”,p->num,p->name); printf(“%6sm\\n,p->sex,p->age); p=p->next; }

江苏省C等级考试(四)

一、选择题(本题共20道小题,共40分。) 1. (14)

指针s所指字符串的长度为

char *s=\A) 19 B) 15 C) 18

D)说明不合法

2. 若有下面的程序片段: int a[12]={0}, *p[3], **pp, i;

22

for(i=0; i<3; i++) p[i]=&a[i*4]; pp=p;

则对数组元素的错误引用是 A) pp[0][1]

3. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为

A) a<>0 B) !a C) a=0

4. 若已定义:

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]

5. 以下程序的输出结果是 main( )

{ int x=10,y=10,I; for(i=0;x>8;y=++i)

printf(\,%d \,x--,y); }

A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1 6. 下面程序的输出是 void prtv(int *x) printf(\main() { int a=25; prtv(&a);}

A) 23 B) 24 C) 25 D) 26

7. 下面能正确进行字符串赋值操作的语句是

A)char s[5]={\ B)char s[5]={'A'、'B'、'C'、'D'、'E'}; C) char *s;s=\ D)char *s; scanf(\,s);

8. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为 x=y=z=1;t=++x||++y&&++z;

A)不定值 B)2 C)1 D)0

9. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是

23

B) a[10] C) p[3][1] D) *(*(p+2)+2)

D) a

A)k=*p1+*p2; B)p2=k; C)p1=p2; D)k=*p1 *(*p2);

10. 请读程序: #include #define SUB(X,Y) (X)*Y main() { int a=3, b=4;

printf(\}

上面程序的输出结果是

A) 12 B) 15

C) 16 D) 20

11. sizeof(float)是: A) int B) float C) double D) 不确定

12. 若执行下面的程序时从键盘上输入3和4,则输出是 main() { int a,b,s;

scanf(\s=a; if(a

printf(\

A) 14 B) 16 C) 18 D) 20 13. 以下程序的输出结果是 # include main()

{ printf(\ }

A) 不确定的(因变量无定义) B)0 C)-1 D)1

14. 请读程序: #include f(char *s) { char *p=s; while( *p!='\\0') p++; return(p-s);

24

} main()

{ printf(\上面程序的输出结果是

A) 3 B) 6

15. 下面各语句行中,能正确进行赋字符串操作的语句行是 A) char st[4][5]={\C) char *s; s=\

16. 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是 A) *p=&a; scanf(\,p); B) p=(long *)malloc(8); scanf(\,p); C) scanf(\,p=&a); D) scanf(\,&a);

17. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是

A) p+1 B) a+1 C) a++ D) ++p

18. 下面程序的输出是 main()

{ enum team {my,your=4,his,her=his+10}; printf(\A) 0 1 2 3 B) 0 4 0 10 19. 以下程序输出结果是 main( ) { int m=5;

if(m++>5)printf(\,m); else printf(\,m--); }

A)7 B)6 C)5 D)4

20. 以下程序运行后,输出结果是 int d=1; fun(int p) { int d=5; d+=p++; printf(\,d); } main()

25

C) 8 D) 0

B) char s[5]={'A','B','C','D','E'};

D) char *s; scanf(\

C) 0 4 5 15 D) 1 4 5 15

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

printf(\,d); }

A)84 B)99 C)95 D)44

二、填空题(每空1分,共10分。)

1. 程序由主要由__________、_________组成。

2. 在C语言中,不同运算符之间运算次序存在_________的区别,同一运算符之间运算次序存在________的规则。

3. 欲将字符串S1复制到字符串S2中,其语句是 ____________ 。

4. 结构化程序设计中的三种基本结构是_________、__________、___________。 5. 表达式x=x+1表示成增量表达式为___________。

6. 定义int a[]={1,2,3,4,5,6},*p=a;表达式(*++p)++的值是____________。

三、判断题(本题共10道小题,共10分。)

1. 在不得已的情况下(例如提高程序运行效率),才使用goto语句( ) 2. 条件表达式可以取代if语句,或者用if语句取代条件表达式( ) 3. 在C程序中对用到的所有数据都必须指定其数据类型( ) 4. 可以对字符型数组进行整体输入、输出( )

5. 函数中的静态变量在函数每次调用时,都会重新设置初值( ) 6. 实参和与其对应的形参共占用一个存储单元( ) 7. 一个实型变量的值肯定是精确的( ) 8. 在不同函数中可以使用相同名字的变量( )

9. 函数调用:strcat(strcpy(str1,str2),str3)的功能是将串str2连接到串str1之后再将串str1复制到串str3中( )

10. 系统不允许用户重新定义标准库函数( )

四、程序填空(本题共5道小题,每题4分,共20分。) 1. 22、 main() { int i=5;

char c[6]=\; do {

c[i]=c[i―1]; }while(――i>0);

26

下面程序的运行结果是________。

#include

puts(c); }

2. 以下程序的执行结果是____________。 #include<stdio.h> main( ) {

int a[3][3]={1,2,3,4,5,6,7,8,9},i,s=0; for(i=0;i<=2;i++) s=s+a[i][i];

printf("s=%d\\n",s); }

3. 以下程序中, for循环体执行的次数是______________。 #define N 2 #define M N+1 #define K M+1*M/2 main() { int i;

for(i=1;i

4. 以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。 void sstrcpy(char *s,char *t) { while(*s++=_____________);} main( )

{ char str1[100],str2[]=\ sstrcpy(str1,str2); printf(\}

5. 14、 以下fun函数把ch中的大写字母转换成字母序列中的下一个大写字母,字母Z转换成字母A,其它字符不变,返回转换后的字母或其它字符。请填空。 char fun(char ch) {

if(ch= ='Z') ch=__________;

else if(ch>='A'&&ch<='Y') ch=__________; return ch; }

27

五、编程题(本题共2道小题,共20分。)

1. 从键盘输入一个一维数组,将这个数组逆序输出。

2. 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。

江苏省C等级考试(四)

一、选择题(本题共20道小题,共40分。) 1. B 2. C 3. D 4. D 5. D 6. D 7. C 8. C 9. B 10. A 11. C 12. B 13. B 14. B 15. C 16. A 17. C 18. C 19. B 20. A

二、填空题(每空1分,共10分。) 1. 数据结构 ,算法 2. 先后 , 结合性 3. strcpy(s2,s1)

4. 顺序 , 选择 ,循环 5. x++或++x 6. 3

28

三、判断题(本题共10道小题,共10分。) 1. 错 2. 错 3. 对 4. 错 5. 错 6. 错 7. 错 8. 对 9. 错 10. 对

四、程序填空(本题共5道小题,每题4分,共20分。)1. aabcd 2. s=15 3. 4 4. *t++ 5. 'A' , ch+1

五、编程题(本题共2道小题,共20分。) 1. #define N 5 main()

{ int a[N]={9,6,5,4,1},i,temp; printf(\ for(i=0;i

printf(\for(i=0;i

2. #include \#include \#include \

int fun(char *str,char *substr) { int i,n=0,s=strlen(str); for(i=0;i

29

if((str[i]==substr[0])&&(str[i+1]==substr[1])) n++; return n; } main() {

char str[81],substr[3]; int n; clrscr(); printf(\gets(str); printf(\gets(substr); puts (str); puts(substr); n=fun(str,substr); printf(\}

江苏省C等级考试(五)

一、选择题(本题共20道小题,共40分。) 1. 以下程序运行后,输出结果是 main( ) {

char *s=\s+=2;

printf(\,s); }

A)cde B)字符c的ASCII码值 C)字符c的地址 D)出错

2. 下面程序的运行结果是 main() {

char ch[7]={\int i,s =0

for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2) s=10*s+ch[i]-'0' printf(\,s);

30

scanf(\ p->next='\\0'; return(ph); } main()

{ struct list *head; head=creatlist();}

4. 设有以下程序: main()

{ int a, b, k=4, m=6, *p1=&k, *p2=&m; a=pl==&m; b=(*p1)/(*p2)+7; printf(\printf(\}

执行该程序后,a的值为_________,b的值为__________。

5. 以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。 #include #define N 10 invert(s,i,j) int *s,i,j;

{ int t; if(i

for(i=0;i

for(i=0;i

五、编程题(本题共2道小题,共20分。)

1. 计算1-1/2+1/3-1/4-...+1/99-1/100的值,并显示出来。

2. 从键盘输入一个5*5整型数组赋值,找出其中的最小值并显示出来。

江苏省C等级考试(五)

一、选择题(本题共20道小题,共40分。) 1. C

36

2. C 3. D 4. D 5. D 6. B 7. D 8. B 9. D 10. C 11. A 12. B 13. C 14. A 15. B 16. C 17. C 18. B 19. C 20. C

二、填空题(每空1分,共10分。) 1. 0 , 数据类型 2. 1 ,2 ,4 ,4 3. 函数 ,main() ,函数 4. a+i或*(a+i)

三、判断题(本题共10道小题,共10分。) 1. 错 2. 对 3. 对 4. 错 5. 对 6. 对 7. 错 8. 对 9. 错 10. 对

四、程序填空(本题共5道小题,每题4分,共20分。)1. (c=getchar()) , +65 或 +'A' 2. I , return 1 或 return (1) 3. struct list * , q

37

4. 0 , 7 5. i+1 , i

五、编程题(本题共2道小题,共20分。) 1. #include \ main() { int c,s; float ch; ch=0;

for (c=1;c<100;c++) {if(c%2==0) s=-1; else s=1;

ch+=s*(1/(float)c); }

printf(\}

2. #include \ main() {

int i=0,j=0,Max=0; int but[5][5]; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf(\scanf(\Max=but[0][0]; for(i=0;i<5;i++) for(j=0;j<5;j++) if (Max>but[i][j]) Max=but[i][j];

printf(\最小值是%d\}

江苏省二级C语言考试一、选择题(本题共20道小题,共40分。) 1. 有下列程序 #include main()

38

{ union { int k; char i[2]; }*s,a; s=&a;

s->i[0]=0x39;s->i[1]=0x38; printf(\}

输出结果是

A)3839 B)3938 C)380039 D)390038

2. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf(\

为了把100和765.12分别赋给i和f,则正确的输入为 A)100<空格>765.12<回车> B)i=100,f=765.12<回车> C)100<回车>765.12<回车> D)x=100<回车>,y=765.12<回车>

3. 设已有定义: char *st=\下列程序段中正确的是 A) char a[11], *p; strcpy(p=a+1,&st[4]); B) char a[11]; strcpy(++a, st); C) char a[11]; strcpy(a, st); D) char a[], *p; strcpy(p=&a[1],st+2);

4. 设j为int型变量,则下面for循环语句的执行结果是 for(j=10;j>3;j--) { if(j%3)j--; --j;--j; printf(\}

A)6 3 B)7 4 C)6 2 D)7 3

5. 以下程序的输出结果是 main() {

int i,k,a[10],p[3]: K=5;

for (i=0;i<10;i++) a[i]=i; for (i=0;i<3;i++) p[i]=a[i*(i+1)];

39

for (i=0;i<3;i++) k=p[i]*2; printf(\}

A)20 B)21 C)22 D)23 6. 若有以下说明:

int w[3][4]o={{0,1},{2,4},{5,8}}; int(*p)[4]=w; 则数值为4的表达式是 A) *w[1]+1 B) p++,*(p+1)

C) w[2][2] D) p[1][1]

7. 若k是int型变量,且有下面的程序片段: k=-3

if(k<=0) printf(\else printf(\上面程序片段的输出结果是

A) #### B) &&&& C) ####&&&& D) 有语法错误,无输出结果

8. 以下程序运行后,输出结果是 main( ) {

int y=18,i=0,j,a[8]; do {

a[i]=y%2;i++; y=y\\2; } while(y>1=1); for(j=i-1;j>=0;j--) printf(\,a[j]); printf(\}

A)10000 B)10010 C)00110 D)10100 9. 以下叙述中不正确的是

A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量

C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量

10. 请读程序: #include func( int a, int b)

40

本文来源:https://www.bwwdw.com/article/kvk3.html

Top