求一份大一c语言考试试卷,加答案

求一份大一c语言考试试卷,加答案,第1张

附件上传失败

C语言期末考试题及答案(1)

1、构成C语言的基本单位是___B____。

过程

函数

语句

命令

2、设x为整型变量,不能正确表达数学关系:5<x<10的c语言表达式是__B___。

5

x>5&&x<10

x==6||x==7||x==8||x==9

!(x<=5)&&(x<10)

3、在C语言中,逻辑运算符的优先级从高到低的排列顺序为__D___。

&&、||、!

||、&&、!

&&、!、||

!、&&、||

4、下面语句中,正确的是__D___。

printf("%c\n","student");

printf("%c\n","c");

printf("%s\n",&a);

printf("%s\n","hello");

5、对于for(表达式1;;表达式3)可以理解为__B___。

for(表达式1;0;表达式3)

for(表达式1;1;表达式3)

for(表达式1;表达式1;表达式3)

for(表达式1;表达式3;表达式3)

6、执行下面程序段的结果是__B___。 main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d",a,b); }

a=1,b=1

a=2,b=1

a=1,b=0

a=2,b=2

7、执行下面程序段的结果是__D___。 int x=0; do { printf(“%2d”,x--); }while(x);

打印出321

打印出23

不打印任何结果

陷入死循环

8、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___。 If(x>y) if(y>z)x=y; else z=y;

7

6

5

4

9、如果一个函数被说明为static,那么__B___。

该函数只能被main函数调用

该函数能被当前文件的函数调用,但不能被其他文件的函数调用

该函数不能被当前文件的函数调用,可以被其他文件的函数调用

任何文件的函数都可以调用该函数

10、下面关于局部变量的描述中,错误的是__D___。

函数的局部变量的有效范围只能在本函数

函数的形式参数也是局部变量

局部变量的名称不能和函数同名称

不同的函数中不能定义相同名称的局部变量

11、下列初始化字符数组的语句中,错误的是__A___。

char str[5]="hello";

char str[]={'h','e','l','l','o','\0'};

char str[5]={"hi"};

char str[100]="";

12、引用数组元素时,数组下标可以是__D___。

整型常量

整型变量

整型表达式

以上均可

13、 已知:char str[10],p=str; 下面的语句中正确的是__B___。

str="ABC";

p="ABC";

str="ABC";

p="ABC";

14、下面语句中,错误的是___D__。

int i;int p;p=&i;

int i,p;p=&a;

int i,p=&a;

int i,p;p=i;

15、下面对于结构体类型的描述正确的是__A___。

结构体类型的大小为各成员变量所占内存的总和

结构体类型变量与简单数据类型变量的引用规则一致。

结构体类型的大小为其成员中所占内存空间最大的变量的大小

结构体类型的大小为其最后一个成员中所占内存空间的大小

16、C语言规定:在一个源程序中,main函数的位置____C____。

必须在最开始

必须在系统调用的库函数的后面

可以任意

必须在最后

17、表达式18/4sqrt(40)/8值的数据类型是 ___C____。

int

float

double

不确定

18、在c语言中,char型数据在内存中的存储形式是 ___D___。

补码

反码

原码

ASCII码

19、阅读以下程序,当输入的数据形式为:25,13,10<CR>时,正确的输出结果为___D___。 main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("x+y+z=%d\n",x+y+z); }

x+y+z=48

x+y+z=35

x+z=35

不能确定

20、有如下程序 void main() { float x=20,y; if(x<00) y=00; else if(x<100) y=10/x; else y=10; printf(“%f\n”,y); } 该程序的输出结果是( C )。

0000000

0250000

0500000

1000000

21、判断char型变量s是否为小写字母的正确表达式是__C____。

'a'<=s<='z'

(s>='a')&(s<='z')

(s>='a')&&(s<='z')

('a'<=s)and('z'>=s)

22、执行以下语句后,y 的值为___A___。 int x,y,z; x=y=z=0; ++x || ++y && ++z;

0

1

2

不确定值

23、有如下程序段: int number=0; while(number++<=3) printf(“%d\n”,number++); 则正确的执行结果是___C___。

2 3 4

0 1 2

1 3

2 4

24、有如下程序 void main() { int n=9; while(n>6) { n--; printf(“%d”,n); } } 该程序段的输出结果是__B___。

987

876

8765

9876

25、要使以下程序段输出10个整数,请在空格中填入一个整数。 for(i=0;i<=___B___;printf("%d\n",i+=2));

15

18

20

10

26、设函数fun的定义形式为: fun(char ch,float x){…} 则以下对函数fun的调用语句中正确的是___B___。

fun(“abc”,3)

t=fun(‘D’,5)

fun(‘ab’,3)

fun(‘78’,1)

27、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 Main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。

s=s+n;return s;

s=s+i;return s;

return s;

return s+=I;

28、设函数fun的定义形式为 int fun(int a[],int n) { int s=0,i=0; for(i=0;i<n;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(&a[2],2)); } 则程序的运行结果为___C___。

3

5

7

9

29、若有说明:int a[10];则对数组元素的正确引用是___D____。

a[10]

a[3,5]

a(5)

a[10-10]

30、以下不正确的定义语句是___B___。

double x[5]={20,4,0,6,0,8,0,100};

int y[5]={0,1,3,5,7,9};

char c1[]={'1','2','3','4','5'};

char c2[]={'\x10','\xa','\x8'};

31、下面程序的运行结果是___B____。 #include "stdioh" main() { char str[]="SWLIA",c; int k; for(k=0;(c=str[k])!='\0';k++) { switch(c) { case 'I':++k;break; c

SWA

SW

SWA

SW

32、以下能正确进行字符串赋值 *** 作的是___D___。

char s[5]={"12345"};

char s[5]={'1','2','3','4','5',‘6’};

char s;s="12345";

char s="12345";

33、以下程序段的运行结果是___C___。 Char a[ ]="program", p; p=a; while (p!='g') { printf("%c", p-32); p++; }

PROgram

PROGRAM

PRO

proGRAM

34、若有说明:char pc[ ]={"aaa", "bbb", "ccc", "ddd"};,则以下叙述正确的是__C____。

pc[0]代表的是字符串"aaa"的首地址

pc[0]代表的是字符'a'的首地址

pc[0]代表的是字符串"aaa"的首地址

pc[0]代表的是字符'a'的首地址

35、下列程序的运行结果是___B___。 #include <stdioh> #include <stringh> void f (char s, int n) { char a,q1,q2; q1=s;q2=s+n-1; while(q1<q2) { a=q1++; q1=q2--; q2=a;} } main() { char b[]="ABCDEFG"; f(b, s

GAGGAGA

AGAAGAG

GFEDCBA

AGADAGA

36、定义如下的结构体描述同学信息 struct Student { unsigned long id; char name[30]; char class[30]; }s; 假设此同学的序号为1002,姓名为黎明,班级为冶金3班,则描述正确的为___C__。

id=1002; name=黎明; class=冶金3班;

id=1002; name=”黎明”; class=”冶金3班”;

sid=1002; sname=”黎明”; sclass=”冶金3班”;

sid=1002; sname=黎明; sclass=冶金3班;

37、用来描述C程序中注释的是__C___。

//

38、下列变量中合法的定义是__A___。

short _a=2-1

long if=0xabcL

double 1_d=15e2

float a=15e27

39、当c的值不为0时,能够将c的值赋给变量a和b的是__C___

c=b=a

(a=c)||(b=c)

(a=c)&&(b=c)

a=c=b

40、设有以下程序段,执行后的输出结果是___B__ int x=100,y=200; printf("%d",(x,y));

100

200

100,200

编译出错

C语言期末考试题及答案(2)

1、若执行下面的程序时从键盘输入10,则输出是__B__ main( ) { int a; scanf(“%d”,&a); if(a++>10) printf(“%d\n”,++a); else printf("%d\n",a--); }

12

11

10

9

2、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);

打印出321

打印出23

不打印任何结果

陷入死循环

3、执行与句:for(n=0;n++<4; ); 后,变量n的值是__C__。

3

4

5

不定

4、以下关于循环的描述中,错误的是__D___。

可以用for语句实现的循环一定可以用while语句实现

可以用while语句实现的循环一定可以用for语句实现

可以用do…while语句实现的循环一定可以用while语句实现

do…while语句与while语句的区别仅仅是关键字while的位置不同

5、下面的描述错误的是__C__。

函数可以有多个形式参数

函数可以没有返回值

函数内可以嵌套定义函数

函数可以被其他函数调用

6、函数返回值的类型是由__A__决定的。

定义函数时指定的返回类型

函数中return语句的表达式类型

主调函数的实际参数类型

主调函数的返回值类型

7、定义了一维int型数组a[10]后,下面错误的引用是__B__。

a[0]=1;

a[10]=2;

a[0]=52;

a[1]=a[2]a[0];

8、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__。

24

25

18

17

9、下面语句中,错误的是__D__。

int i; int p; p=&i;

int i,p; p=&a;

int i,p=&a;

int i,p; p=i;

10、 已知int型二维数组a[3][4],数组元素a[1][2]的地址不能表达为__C__。

&a[1][2]

a[1]+2

a[1]+2

(a+1)+2

11、C语言中,5种基本数据类型的存储空间长度的排列顺序为___A___。

char

char=int

char

char=int=long int<=float

12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 ___B___。

7

8

6

2

13、若有说明语句:char c='\72';则变量c ___A___。

包含1个字符

包含2个字符

包含3个字符

说明不合法,c的值不确定

14、若x,y均定义为整型,z定义为double型,以下不合法的scanf函数调用语句是___C___。

scanf("%d%lx,%le",&x,&y,&z);

scanf("%2d %d%lf",&x,&y,&z);

scanf("%x%d%o",&x,&y,&z);

scanf("%x%o%62f",&x,&y,&z);

15、若输入字符串:abcde<回车>,则以下while循环体将执行___A___次。 while((ch=getchar())=='e') printf("");

1次

死循环

0次

5次

16、执行下面的程序段后,k的值是___C___。 k=1;n=263; do{k=n%10;n/=10;}while(n);

3

63

36

2

17、下面程序段中循环的执行次数是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a>=0);

10

3

5

4

18、下面程序段的运行结果是__D____。 x=2; do{printf("");x--;}while(!x==0);

没有输出

19、下面程序段的运行结果是___B___。 i=1;s=1;a=0; do{a=a+si;s=-s;i++;}while(i<=10); printf("%d",a);

2

-2

3

0

20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b<0) c=0; else c++; printf("%d\n",c); } 该程序的输出结果是___A___。

0

1

2

3

21、程序中对fun函数有如下说明 void fun(); 下面说明是错误的是___B___。

fun函数无返回值

fun函数的返回值可以是任意的数据类型

fun函数没有形式参数

void 可以省略

22、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。

s=s+n; return s;

s=s+i; return s;

return s;

return s+=i;

23、 有以下程序 int f1(int x,int y){return x>yx:y;} int f2(int x,int y){return x>yy:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___

4,3,7

3,4,7

5,2,7

2,5,7

24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。

2

3

4

无确定值

25、判断字符串s1是否大于字符串s2,应当使用___D____。

if(s1>s2)

if(strcmp(s1,s2))

if(strcmp(s2,s1)>0)

if(strcmp(s1,s2)>0)

26、当运行以下程序时,从键盘输入:AhaMA Aha<CR> <CR>表示回车,则下面程序的运行结果是___A____。 #include "stdioh" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c)

ahAMa

AhAMa

AhAMa ahA

ahAMa ahA

27、以下程序执行后a的值为___C____。main( ) { int a,m=2, k=1, p=&k; a=p!=&m; printf("%d\n",a); }

-1

0

1

2

28、以下能正确读入字符串的程序段是____C___。

char p;scanf("%s", p);

char str[10];scanf("%s", &str);

char str[10], p;p=str; scanf("%s", p);

char str[10], p=str;scanf("%s", p[1]);

29、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是___B___。

i=x[1][1]

i=((x+1))

i=((x+1)+1)

i=(x[1]+1)

30、下面程序的运行结果是____A___。 # include <stdioh> # include <stringh> fun(char s) { char t,a,z; a=s; z=s+strlen(s)-1; while(a++<z--) { t=a++; a=z--; z=t;} } main() { char p; p="a

abdddfg

afcdebg

gbedcfa

gfedcba

31、用来描述C程序中注释的是__C___

/ /

32、对于"xy\n\102\\\'"字符串的长度是__B___

7

6

12

13

33、已知:int x=10;执行语句x-=x+x;后x的值是__A___

-10

10

-20

20

34、下列描述中,正确的是__A___

所有的输入/输出都是通过调用库函数处理的

所有的输入/输出都是通过输入/输出语句实现的

getchar和putchar可以省略#include

在输入/输出格式中的表示跳过数据的含义

35、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___ if(x>y) if(y>z)x=y; else z=y;

7

6

5

4

36、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);

打印出321

打印出23

不打印任何结果

陷入死循环

37、以下关于switch语句和break语句的描述正确的是__D___

在switch语句中必须使用break语句

break语句只能用于switch语句体中

break语句只能用于循环语句中

在switch语句中可以使用break语句

38、与语句while(!x)等价的语句是__A___

while(x==0)

while(x!=0)

while(x!=1)

while(~x)

39、下面的描述错误的是__C___

函数可以有多个形式参数

函数可以没有返回值

函数内可以嵌套定义函数

函数可以被其他函数调用

40、 下面关于局部变量的描述中,错误的是__D___

函数的局部变量的有效范围只能在本函数

函数的形式参数也是局部变量

局部变量的名称不能和函数同名称

不同的函数中不能定义相同名称的局部变

2009年3月全国计算机等级考试二级C语言笔试卷

核心提示:

2009年3月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)选择题(1)下列叙述中正确的是 A) 栈是“先进先出”的线性表B) 队列是“先进先出”的线性表C) 循环队列是非线性结构D

2009年3月全国计算机等级考试二级笔试试卷C语言程序设计

(考试时间90分钟,满分100分)

选择题

(1)下列叙述中正确的是

A) 栈是“先进先出”的线性表

B) 队列是“先进先出”的线性表

C) 循环队列是非线性结构

D) 有序性表既可以采用顺序存储结构,也可以采用链式存储结构

(2)支持子程序调用的数据结构是

A) 栈 B) 树 C) 队列 D)二叉树

(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是

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

(4)下列排序方法中,最坏情况下比较次数最少的是

A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序

(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是

A)编译软件 B) *** 作系统 C)教务管理系统 D)汇编程序

(6)下面叙述中错误的是

A)软件测试的目的是发现错误并改正错误

B)对被调试的程序进行“错误定位”是程序调试的必要步骤

C)程序调试通常也称为Debug

D)软件测试应严格执行测试计划,排除测试的随意性

(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是

A)提高耦合性降低内聚性有利于提高模块的独立性

B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D)内聚性是指模块间互相连接的紧密程度

(8)数据库应用系统中的核心问题是

A)数据库设计 B)数据库系统设计

C)数据库维护 D) 数据库管理员培训

(9)有两个关系R,S如下:

R S

A B C A B

a 3 2 a 3

b 0 1 b 0

c 2 1 c 2

由关系R通过运算得到关系S,则所使用的运算为

A) 选择 B)投影 C) 插入 D)连接

(10)将E-R图转换为关系模式时,实体和联系都可以表示为

A) 属性 B)键 C) 关系 D) 域

(11)以下选项中合法的标识符是

A) 1-1 B)1—1 C)-11 D)1--

(12)若函数中有定义语句:int k;,则

A)系统将自动给k赋初值0 B)这时k中值无定义

C)系统将自动给k赋初值-1 D)这时k中无任何值

(13)以下选项中,能用作数据常量的是

A)o115 B) 0118 C)15e15 D) 115L

(14)设有定义:int x=2; ,以下表达式中,值不为6的是

A) x=x+1 B) x++,2x C)x=(1+x) D)2x,x+=2

(15)程序段:int x=12; double y=3141593; printf(“%d%86f”,x,y);的输出结果是

A)123141593 B)12 3141593 C)12,3141593 D)123141593

(16)若有定义语句:double x,y,px,py,执行了px=&x, py=&y;之后,正确的输入语句是

A)scanf(“%f%f”,x,y); B) scanf(“%f%f”,&x,&y);

C) scanf(“%lf%le”,px,py); D) scanf(“%lf%lf”,x,y);

(17)以下是if语句的基本形式:

if (表达式) 语句

其中“表达式”

A)必须是逻辑表达式 B)必须是关系表达式

C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式

(18)有以下程序

#include <stdioh>

main()

{int x;

scanf(“%d”,&x);

if(x<=3); else

if(x!=10) printf(“%d\n”,x);

}

程序运行时,输入的值在哪个范围才会有输出结果

A)不等于10的整数 B)大于3且不等于10的整数

C) 大于3或等于10的整数 D)小于3的整数

(19)有以下程序

#include<stdioh>

Main()

{ int a=1,b=2,c=3,d=0;

if(a= =1 &&b++= =2)

if(b!=2 || c--!=3)

printf(“%d,%d,%d\n”,a,b,c);

else printf(“%d,%d,%d\n”,a,b,c);

else printf(“%d,%d,%d\n”,a,b,c);

}

程序运行后的输出结果是

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

(20)以下程序中的变量已正确定义

for(i=0;i<4;i++,i++

for(k=1;k<3;k++);printf(”);

程序段的输出结果是

A) B) C) D)

(21)有以下程序

#include<stdioh>

main()

{char s=(“ABC);

do

{printf(“%d”,s%10);s++;

}while(s);

}

注意,字母A的ASCII码值为65。程序运行后的输出结果是

A)5670 B)656667 C)567 D)ABC

(22)设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是

A)n=0;while((ch=getchar())!=’\n’)n++; B) n=0;while(getchar()!=’\n’)n++;

C)for(n=0; getchar()!=’\n’;n++); D)n=0;for(ch=getchar();ch!=’\n’;n++);

(23)有以下程序

#include<stdioh>

main()

{ int a1,a2;char c1,c2;

scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);

printf(“%d,%c,%d,%c”,&1,c1,a2,c2);

}

若想通过键盘输入,使得a1的值为12,a2的是为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下 代表空格,<CR>代表回车)

A)12a34b<CR> B)12 a 34 b<CR>

C)12,a,34,b<CR> D)12 a34 b<CR>

(24)有以下程序

#include<stdioh>

int f(int x,int y)

{return()y-x)x);}

main()

{int a=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf(“%d\n”,d);

}

程序运行后的输出结果是

A)10 B)9 C)8 D)7

(25)有以下程序

#include<stdioh>

void fun(char s)

{while(s)

{ if(s%2==0) printf(“%c”,s);

s++;

}

}

main()

{ char a[]={“good”};

fun(a);printf(“\n”);

}

注意:字母a的ASCⅡ码值为97,程序运行后的输出结果是

A)d B)go C)god D)good

(26)有以下程序

#include <stdioh>

void fun( int a,int b)

{int c;

c=a;a=b;b=c;

}

main()

{int x=3,y-5,P=&x,q=&y;

fun(p,q);printf(“%d,%d,”,p,q);

fun(&x,&y);printf(“%d,%d\n”,p,q);

}

程序运行后的输出结果是

A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3

(27)有以下程序

#include <stdioh>

viod f(int p,int q );

main()

{ int m=1,n=2,r=&m;

f(r,&n);printf(“%d,%d”,m,n);

}

void f(int p,int q)

{p=p+1;q=q+1;}

程序运行后输出的结果是

A)1,3 B)2,3 C)1,4 D)1,2

(28)以下函数按每行8个输出数组中的数据

void fun( int w,int n)

{ int i;

for(i=0;i<n;i++)

{_________________

printf(“%d”,w);

}

printf(“\n”);

}

下划线处应填入的语句是

A)if(i/8==0)print(“\n”); B) if(i/8==0)continue;

C) if(i%8==0)print(“\n”); D) if(i%8==0)continue;

(29)若有以下定义

int x[10],pt=x;

则对x数组元素的正确应用是

A)&x[10] B)(x+3) C)(pt+10) D)pt+3

(30)设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是

A gets(s)

B)while((s[i++]=getchar())!=”\n”;s=”\0”;

C)scanf(“%s”,s);

D)do{scanf(“%c”,&s);}while(s[i++]!=”\n”);s=”\0”;

(31)有以下程序

#include <stdioh>

main()

{ char a[ ]={“abcd”,”ef”,”gh”,”ijk”};int I;

for (i=0;i<4;i++) printf(“%c”,a);

}

程序运行后输出的结果是

A)aegi B)dfhk C)abcd D)abcdefghijk

(32)以下选项中正确的语句组是

A)char s[];s=”BOOK!”; B) char s;s={”BOOK!”};

C)char s[10];s=”BOOK!”; D) char s;s=”BOOK!”;

(33)有以下程序

#include <stdioh>

int fun{int x,int y}

{ if(x==y) return(x);

else returen((x+y)/2)

}

main()

{ int a=4,b=5,c=6;

printf(“%d\n”,fun(2a,fun(b,c)))

}

程序运行后的输出结果是

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

(34)设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是

A)auto B) register C)static D)auto或register

(35)有以下程序

#include <stdioh>

int b=2;

int fun(int k)

{ b=k+b;return (b);}

main()

{ int a[10]={1,2,3,4,5,6,7,8},I;

for(i=2;i<4;i++) {b=fun(&a)+b;printf(“%d”,b);}

printf(“\n”);

}

程序运行后输出的结果是

A)10 12 B)8 10 C)10 28 D)10 16

(36)有以下程序

#include <stdioh>

#define PT 35;

#define S(x) PTxx;

mian()

{ int a=1, b=2; printf(“%41f\n”,S(a+b));}

程序运行后输出的结果是

A)140 B)315 C)75 D)程序有错无输出结果

(37)有以下程序

#include <stdioh>

struct ord

{ int x,y;} dt[2]={1,2,3,4};

main()

{ struct ord p=dt;

printf (“%d,”,++p->x); printf(“%d\n”,++p->y);

}

程序的运行结果是

A)1,2 B)2,3 C)3,4 D)4,1

(38)设有宏定义:#include IsDIV(k,n) ((k%n==1)1:0且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&& IsDIV(m,7)为真时所要表达的是

A)判断m是否能被5或者7整除

B)判断m是否能被5和7整除

C)判断m被5或者7整除是否余1

D)判断m被5和7整除是否余1

(39)有以下程序

#include <stdioh>

main()

{ int a=5,b=1,t;

t=(a<<2|b); printf(“%d\n”,t)

}

程序运行后的输出结果是

A)21 B)11 C)6 D)1

(40)有以下程序

#include <stdioh>

main()

{ EILE f;

f=fopen(“fileatxt”,”w”);

fprintf(f,”abc”);

fclose(f);

}

若文本文件fileatxt中原有内容为:hello,则运行以上程序后,文件fileatxt中的内容为

A) helloabc B)abclo C)abc D)abchello

二、填空题(每空2分,共30分)

请将每一个空的正确答案写在答题卡1至15序号的横线上,答在试卷上不得分。

(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有 1 个元素。

(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于 2 测试。

(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和 3 。

(4)数据库系统的核心是 4

(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是 5 框。

(6)表达式(int)((double)(5/2)+25)的值是6

(7)若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(7,x/y);补充完整,使其输出的计算结果形式为:x/y=11

(8)有以下程序

#include <stdioh>

main( )

{ char c1,c2;

scanf(“&c”,&c1);

while(c1<65||c1>90) scanf(“&c”,&c1);

c2=c1+32;

printf(“&c, &c\n”,c1,c2);

}

程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)8 。

(9)以下程序运行后的输出结果是9

#include <stdioh>

main( )

{int k=1,s=0;

do{

if{((k&2)!=0)continue;

s+=k;k++;

}while(k)10);

printf(“s=&d/n”,s);

}

(10)下列程序运行时,若输入labced12df<回车> 输出结果为10

#include <stdioh>

main( )

{char a =0,ch;

while((ch=getchar())!=’\n’)

{if(a&2!=0&&(ch>’a’&&ch<=’z’)) ch=ch-‘a’+’A’;

a++;putchar(ch);

}

printf(“\n”);

}

(11)有以下程序,程序执行后,输出结果是11

#include <stdioh>

void fun (int a)

{a[0=a[1];]}

main()

{int a[10]={10,9,8,7,6,5,4,3,2,1},i;

for(i=2;i>=0;i--) fun{&a};

for(i=0;i<10;i++) printf(“&d”,a);

printf(“\n”);

}

(12)请将以下程序中的函数声明语句补充完整

#include <stdioh>

int12 ;

main( )

{int x,y,(p)();

p=max;

printf(“&d\n”,&x,&y);

}

Int max(int a,int b)

{return (a>b/a:b);}

(13)以下程序用来判断指定文件是否能正常打开,请填空

#include <stdioh>

main( )

{FILE fp;

if (((fp=fopen(“testtxt”,”r”))==13))

printf(“未能打开文件!\n”);

else

printf(“文件打开成功!\n”);

(14)下列程序的运行结果为14

#include <stdioh>

#include <stringh>

struct A

{int a;char b[10];double c;};

void f (struct A t);

main()

{struct A a=(1001,”ZhangDa”,1098,0);

f(&a);printf(“&d,&s,&6,if\n”,aa,ab,ac);

}

void f(struct A t)

{strcpy(t->b,”ChangRong”); }

(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空

#include <stdioh>

struct node

{int data; struct node next;};

typedef struct node NODETYPE;

main()

{NODETYPE a,b,c,h,p;

a data=10;bdata=20;cdata=30;h=&a;

b next=&b;bnext=&c;cnext=’\0’;

p=h;

while(p){printf(“&d”,p->data);15;}

}

2009年4月二级C参考答案

选择题:

1~10: DACDC ABABC

11~20:CBDDA CDBCB

21~30:CDABA BACBC

31~40:ADBCC CBDAC

填空题:

(1)19

(2)白盒

(3)顺序结构

(4)数据库管理系统(DBMS)

(5)菱形

(6)4

(7)"x/y=%d"

(8)能

(9)s=0

(10)1AbCeDf2dF

(11)7777654321

(12)max(int a,int b)

(13)NULL

(14)1001,ChangRong,10980

(15)p=p—>next

1 C 2 C 3 B 4 D

1

这是一个if else 语句,首先你要明白,if的内嵌语句 是第一个分号之前的,因为在C语言中分号是一个分号 就是一个语句.第一个if 的内嵌语句是(y!=10)if(!ok1)a=1;因为X<Y成立,所以与这个if配对的else不必再做,接着做这个if的内嵌语句,Y不等于10成立,接着做!ok1,因为ok1值为5所以!ok1为假,跳出做a=1做完以后接着输出a=1既可选C

2

第一句定x=1

做if语句,x=2不成立,所以不做if的内嵌语句printf("ok");而是做与if相应的else语句if(x<2)printf("%

d\n",x);else printf("Quit");x<2成立,所以做这个if 语句,输出x,x的值为1,选C

3

条件运算符的做法是括号内为真执行逗号前的,为假执行逗号后的.所以exp意思是如果exp不等于0(为真)执行表达式1,否则执行表达式2

4

首先要知道条件运算符是自右至左的结合方式,所以可以理解为k<ak:(c<bc:a),从右往左算,先算括号内的,结果为C.再算k<ak:c得出结果为C

好好算下,不要心急,我是大一刚学过C语言,这些题都做过的.南大题库里就有.

1.一个C程序的执行是从( A )。

A) 本程序的main函数开始,到main函数结束

B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C) 本程序的main函数开始,到本程序文件的最后一个函数结束

D) 本程序文件的第一个函数开始,到本程序的main函数结束

2.以下叙述正确的是( C )。

A) 在C程序中,main函数必须位于程序的最前面

B) C程序的每行中只能写一条语句

C) C语言本身没有输入输出语句

D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误

3.以下叙述不正确的是( D )。

A) 一个C源程序可由一个或多个函数组成

B) 一个C源程序必须包含一个main函数

C) C程序的基本组成单位是函数

D) 在C程序中,注释说明只能位于一条语句的后面

4.C语言规定,在一个源程序中,main函数的位置( C )。

A) 必须在最开始 B) 必须在系统调用的库函数的后面

C) 可以任意 D) 必须在最后

5.一个C语言源程序是由( B )。

A) 一个主程序和若干子程序组成 B) 函数组成

C) 若干过程组成 D) 若干子程序组成

二 填空题

1.C源程序的基本单位是 函数 。

2.一个C源程序中至少应包括一个 main函数 。

3.在一个C源程序中,注释部分两侧的分界符分别为 / 和 / 。

4.一个函数是由两部分组成的,它们分别是 函数名 和 函数体 。

5.在C语言中,一个函数的函数体一般包括 声明部分 和 执行部分 。

第三章 数据类型、运算符与表达式

一 单项选择题

1.下面四个选项中,均不是c语言关键字的选项是( A )。

A) define IF Type B) getc char printf

C) include scanf case D) while go pow

2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( C )。

A) 必须为字母 B) 必须为下划线

C) 必须为字母或下划线 D) 可以是字母、数字和下划线中任一种字符

3.下列四个选项中,均是C语言关键字的选项是( B )。

A) auto enum include B) switch typedef continue

C) signed union scanf D) if struct type

4.下面四个选项中,均是不合法的用户标识符的选项是( C )。

A) A P_0 do B) float la0 _A

C) b-a goto int D) _123 temp int

5.以下有4组用户标识符,其中合法的一组是( C )。

A) For -sub Case B) 4d DO Size

C) f2_G3 IF abc D) WORD void define

二 填空题

1.若x和a均是int型变量,则计算表达式(1)后的x值为 12 ,计算表达式(2)后的x值为 4 。

(1) x=(a=4, 62)

(2) x=a=4, 62

2.若a是int型变量,则表达式(a=45, a2), a+6的值为 26 。

3.若b是int型变量,则表达式b=25/3%3的值为 2 。

4.若s是int型变量,且s=6 则下面表达式s%2+(s+1)%2的值为 1 。

5.若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b值为 4 ,c值为 2 。

6.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为 10 ,n的值为 6 。

7.若有定义:int b=7;float a=25,c=47;则表达式a+(int)(b/3(int)(a+c)/2)%4的值为 45 。

8.若有定义:int a=2,b=3;float x=35,y=25;则表达式(float)(a+b)/2+(int)x%(int)y的值为 35 。

9.若有定义:int x=3,y=2;float a=25,b=35;则表达式(x+y)%2+(int)a/(int)b的值为 1 。

10.若x和n均是整型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。

第四章 最简单的C程序设计——顺序程序设计

一 单项选择题 1~5 BDDAB

1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式( B )。

A) 从左起输出该字符串,右补空格

B) 按原字符长从左向右全部输出

C) 右对齐输出该字串,左补空格

D) 输出错误信息

2.已有定义int a= -2; 和输出语句 printf(“%8x”,a); 以下正确的叙述是( D )。

A) 整型变量的输出形式只有%d一种

B) %x是格式符的一种,它可以适用于任何一种类型的数据

C) %x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的

D) %8x不是错误的格式符,其中数字8规定了输出字段的宽度

3.若x, y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是

( D )。

A) scanf(“%d %x, %le”, &x, &y, &z);

B) scanf(“%2d %d, %lf”, &x, &y, &z);

C) scanf(“%x %d %o”, &x, &y);

D) scanf(“%x %o%62f”, &x, &y, &z);

4.以下程序的输出结果是( D )。

main( )

{ int k=17;

printf("%d,%o,%x\n",k,k,k);

}

A)17,021,0x11 B)17,17,17

B)17,0x11,021 D)17,21,11

5.下列程序的运行结果是( B )。

#include <stdioh>

main()

{ int a=2,c=5;

printf("a=%d,b=%d\n",a,c);

}

A) a=%2,b=%5 B) a=2,b=5

C) a=d,b=d D) a=2,c=5

二 填空题

1.下面程序的运行结果是 i:dec=4,oct=4,hex=4,unsigned=65531 。

main()

{

short i;

i= -4;

printf(“\ni: dec=%d, oct=%o, hex=%x, unsigned=%u\n”, i, i, i, i);

}

2.若想通过以下输入语句使a=50,b=4,c=3,则输入数据的形式应该是 50,4,c=3 。

int b,c; float a;

scanf("%f,%d,c=%d",&a,&b,&c);

3.下列程序的输出结果是1600,请填空。

main()

{ int a=9, b=2;

float x= 66 , y=11,z;

z=a/2+bx/y+1/2;

printf("%52f\n", z );

}

4.在printf格式字符中,只能输出一个字符的格式字符是 c ;用于输出字符串的格式字符是 s ;以小数形式输出实数的格式字符是 f ;以标准指数形式输出实数的格式字符是 e 。

三 编程题

1 若a=3, b=4, c=5, x=12, y=24, z= -36, u=51274, n=128765, c1=’a’, c2=’b’。想得到以下的输出格式和结果,请写出完整的程序(包括定义变量类型和设计输出)。

要求输出的结果如下:

a= <空格>3 <空格><空格> b= <空格> 4<空格><空格> c= <空格>5

x=1200000, y=2400000, z= -3600000

x+y=<空格>360<空格><空格> y+z = -120<空格><空格>z+x= -240

u=<空格>51274<空格><空格>n=<空格><空格><空格>128756

c1= a <空格>or<空格>97(ASCII)

c2= B <空格>or<空格>98(ASCII)

/

void main()

{

int a, b, c;

unsigned u;

long int n;

float x, y, z;

char c1,c2;

a=3, b=4, c=5, x=12, y=24, z= -36, u=51274, n=128765, c1='a', c2='b';

printf("a=%2d b=%2d c=%2d\n", a, b, c);

printf("x=%f, y=%f, z=%+f\n");

printf("x+y=%52f y+z =%+52f z+x=%+52f\n", x+y, y+z, z+x);

printf("u=%6d n=%9d\n");

printf("c1=%c or %d(ASCII)\n", c1, c1);

printf("c2=%c or %d(ASCII)\n", c2-32, c2);

}

/

2 输入一个华氏温度,要求输出摄氏温度。公式为

输出要有文字说明,取2位小数。

/

void main()

{

float c, f;

printf("输入一个华氏温度:\n");

scanf("%f", &f);

c = 50/90(f-32);

printf("\n输入的华氏温度 %2f,摄氏温度为: %2f\n", f, c);

}

/

3 编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。

/

void main()

{

char c1, c2;

c1 = getchar();

c2 = getchar();

putchar(c1);

putchar(c2);

printf("\nc1 = %c; c2 = %c\n", c1, c2);

}

/

第五章 选择结构程序设计

一 单项选择题

1.逻辑运算符两侧运算对象的数据类型是( D )。

A) 只能是0或1

B) 只能是0或非0正数

C) 只能是整型或字符型数据

D) 可以是任何类型的数据

2.已知x=43, ch='A', y=0;则表达式(x>=y&&ch<'B'&&!y)的值是( C )。

A) 0 B) 语法错 C) 1 D) “假”

3.已知 int x=10, y=20, z=30; 以下语句执行后x, y, z的值是( B )。

if(x>y)

z=x;x=y;y=z;

A) x=10,y=20,z=30 B) x=20,y=30,z=30

C) x=20,y=30,z=10 D) x=20,y=30,z=20

4.执行下列语句后a的值为( 2 ),b的值为( 1 )。( C )

int a, b, c;

a=b=c=1;

++a|| ++b && ++c;

A) 错误 1 B) 2 2 C) 2 1 D) 1 1

5.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( C )。

A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2

二 填空题

1.若从键盘输入58,则以下程序输出的结果是 585858 。

main()

{ int a;

scanf(“%d”,&a);

if(a>50) printf(“%d”,a);

if(a>40) printf(“%d”,a);

if(a>30) printf(“%d”,a);

}

2.下面程序的运行结果是 -1 。

main()

{

int a=2, b=3, c;

c=a;

if(a>b) c=1;

else if(a==b) c=0;

else c=-1;

printf(“%d\n”,c);

}

3.以下程序实现:输入三个整数,按从大到小的顺序进行输出。请填空。

main()

{

int x, y, z, c;

scanf(“%d %d %d”, &x, &y, &z);

if( x<y )

if( x<z )

if( y<z )

printf(“ %d %d %d”, x, y, z);

}

4.如果运行时输入字符Q,则下面程序的运行结果是 Q 。

main()

{

char ch;

scanf(“%c”, &ch);

ch=(ch>=‘A’&& ch<=‘Z’) (ch+32):ch;

ch=(ch>=‘a’&& ch<=‘z’) (ch-32):ch;

printf(“%c”, ch);

}

5.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式 x==0 。

第六章 循环控制

一 单项选择题

1.下面程序段的运行结果是( C )。

int n=0;

while(n++<=2);

printf(“%d”,n);

A) 2 B) 3 C) 4 D) 有语法错

2.设有程序段:

t=0;

while(printf(“”))

{t++;

if(t<3) break;

}

下面描述正确的是( D )。

A) 其中循环控制表达式与0等价

B) 其中循环控制表达式与'0'等价

C) 其中循环控制表达式是不合法的

D) 以上说法都不对

3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空( B )。

#include <stdioh>

main()

{int a,b,t;

scanf(“%d%d”,&a,&b);

while( ___________ )

{if(a>b)

printf(“%d,%d\n”,a,b);

scanf("%d%d",&a,&b);

}

}

A) !a=b B) a!=b C) a==b D) a=b

4.C语言中,while和do-while循环的主要区别是( A )。

A) do-while的循环体至少无条件执行一次

B) while的循环控制条件比do-while的循环控制条件更严格

C) do-while允许从外部转到循环体内

D) do-while的循环体不能是复合语句

5.对以下程序段描述正确的是( C )。

x=-1;

do

while(!x);

A) 是死循环 B) 循环执行二次

C) 循环执行一次 D) 有语法错误

二 填空题

1.以下程序运行后的输出结果是 52 。

main()

{ int i=10, j=0;

do

while(i>2);

printf("%d\n",j);

}

2.设有以下程序:

main()

{ int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{ n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序运行后,如果从键盘上输入1298,则输出结果为 8921 。

3.若输入字母b,程序输出结果为 b, B ;若输入字符,程序将怎样 等待重新输入 。

#include<stdioh>

main()

{char c1, c2;

c1=getchar();

while(c1<97||c1>122)

c1=getchar();

c2=c1-32;

printf("%c, %c\n",c1, c2);

}

4.用以下程序计算1到100的整数的累加和。

main()

{ int i=1, sum= 0 ;

for( ; i<=100 ; )

{sum+=i;

i++;

}

printf("sum=%d\n", sum );

}

5.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请填空。

main()

{ float x, amax, amin;

scanf(“%f”,&x);

amax=x;

amin=x;

while( x>=0 )

{if(x>amax) amax=x;

if( x<amin ) amin=x;

scanf(“%f”,&x);

}

printf("amax=%f\namin=%f\n",amax, amin);

}

流程图我就不画了,大致流程:开始-> 定义商店结构变量->调用入库函数录入库存商品信息->循环调用打印商品信息的函数及购买函数,显示库存商品菜单,用户输入购买信息完成购买

->单个水果购买数量不足,购买失败重新选择。

->总水果数量不足,提示关店结束程序。

#include <stdioh>

#include <stringh>

#define goodsNum 10//商品总类最大个数

struct shop

{

    char goodsName[goodsNum][11];

    int goods[goodsNum];

    int sum;

}sp;

int gn=0;//实际入库的商品总类个数

void storage();//入库函数

void updateSum();//更新总数

void printfGoods();//展示库存信息

int buy();//购买函数,返回1购买成功,返回0超出商品库存

int main()

{

    storage();

    while(1)

    {

        printfGoods();

        if(spsum==0)

        {

            printf("所有水果已售空,关店休息!\n");

            return 0;

        }

        if(buy())

            printf("购买成功!\n");

    }

    return 0;

}

void printfGoods()

{

    int i;

    printf("--当前库存信息--\n");

    printf("编号  名称  个数个\n");

    for(i=0;i<gn;i++)

        printf("%d、 %s  %d个\n",i+1,spgoodsName[i],spgoods[i]);

}

void updateSum()

{

    int i;

    spsum=0;

    for(i=0;i<gn;i++)

        spsum=spsum+spgoods[i];

}

void storage()

{

    char name[10];

    int n;

    printf("--商品入库--\n");

    while(1)

    {

        printf("请录入商品%d的名称及个数(名称不超10个字符,输入0结束录入):",gn+1);

        scanf("%s",name);

        if(name[0]=='0' && name[1]==0)

            break;

        scanf("%d",&n);

        strcpy(spgoodsName[gn],name);

        spgoods[gn]=n;

        gn++;

    }

    updateSum();

}

int buy()

{

    int id,n;

    printf("请输入要购买的商品编号及数量:\n");

    scanf("%d%d",&id,&n);

    if(n>spgoods[id-1])

    {

        printf("购买失败,数量超出库存!\n");

        return 0;

    }

    spgoods[id-1]=spgoods[id-1]-n;

    updateSum();

    return 1;

}

以上就是关于求一份大一c语言考试试卷,加答案全部的内容,包括:求一份大一c语言考试试卷,加答案、求全国二级C语言3月份题库、C语言的题目等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9308712.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存