安徽大学期末试卷安徽大学c语言试卷.doc

安徽大学期末试卷安徽大学c语言试卷.doc
安徽大学期末试卷安徽大学c语言试卷.doc

安徽大学20 -20 学年第学期

《C语言程序设计》期末考试试卷(A卷120分钟)年级院系专业姓名学号座位号

一. 单项选择题:(每题2分,共40分)

下列各题A)、B)、C)、D)

四个选项中只有一个是正确的,请将正确选项填在答题卡相应题目的横线上。答在试卷上不得分。

1.下面程序段执行后,a的值是______。

int a;

printf("%d \n", (a=3*5, a*4, a+5) );

A)60 B)20 C)15 D)10

2.下列程序段的输出是______。

int x=023;

printf("%d \n", --x );

A)19 B)18 C)23 D)22

3.执行下列语句后,a的值是______。

int a=8;

a+=a-=a*a;

A)-240 B)64 C)112 D)-112

4.执行下列语句后,输出的值是______。

int x=6;

printf("%d,%d,%d\n",x,x++,--x);

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

5.指出下列程序段所表示的逻辑关系是______。

if(a

{

if(c==d)

x=1;

}

else

x=2;

A)若a=b且c!=d,则x=2。

B)若a=b,则x=2。

C)若a

D)若a

6.下列程序段的执行结果是______。

int i,x;

for(i=1,x=1;i<=20;i++)

{

if(x>=10) break;

if(x%2==1)

{

x+=5;

continue;

}

x-=3;

}

printf("%d,%d\n",x,i);

A)6,4 B)7,5 C)10,6 D)14,7

7.下列程序的执行结果是______。

#include "stdio.h"

#include "string.h"

main()

{

static char s[10]={'C','h','i','n','a'};

printf("%d\n",strlen(s));

}

A)6 B)5 C)11 D)10 8.函数的数据类型是______决定的。

A)调用该函数时临时B)调用函数的实参

C)return语句的表达式类型D)函数的形参

9.执行下列程序段后,*(p+5)的值是______。

static char s[]="Hello";

char *p;

p=s;

A)'o' B)'\0' C)'o'的地址D)不确定的值10.以下程序的输出结果是______。

#include "stdio.h"

main()

{

static int a[]={1,2,3,4,5,6},*p;

p=a; *(p+3)+=2;

printf("%d,%d\n",*p,*(p+3));

}

A)0,5 B)1,5 C)0,6 D)1,6

11.在以下定义中,标识符P______。

int (*p)[3];

A)定义不合法。

B)是一个指针数组名,每个元素是一个指向整型变量的指针。

C)是一个指针,它指向一个具有三个元素的一维数组。

D)是一个指向整型变量的指针。

12.sizeof(int)是______。

A)一个整型表达式B)一个不合法的表达式

C)一种函数调用D)一条语句

13.有宏定义:#define MULT1(a,b) a*b

#define MULT2(a,b) (a)*(b)

在后面的程序中有宏引用:y=MULT1(3+2,5+8);

z=MULT2(3+2,5+8);

则y和z的值是______。

A)y=65,z=65 B)y=21,z=65 C)y=65,z=21 D)y=21,z=21

14.设有程序段:

union MYTYPE { long x; int y[4]; char z[6];}them;

main(){ printf(“%d\n”,sizeof(them)); }

则程序的输出结果是______。

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

15.以读写方式打开一个已有的文本文件file1,下面fopen函数正确的调用方式

是______。

A)FILE *fp; B)FILE *fp;

fp=fopen("file1","r"); fp=fopen("file1","r+");

C)FILE *fp; D)FILE *fp;

fp=fopen("file1","rb"); fp=fopen("file1","rb+");

16. 设有如下定义:

struct sk {int a; float b;} data,*p;

且p=&data; 则对data中a域的正确引用是( ).

A) (*p).data.a B) (*p).a C) p->data.a D) p.data.a

17.若fun( int x) { printf(“%d\n”,x);}, 则fun_______。

A)返回值为void 类型B)返回值无法确定

C)返回值为int 类型D)没有返回值

18.实参和和形参之间的数据传送是_______。

A)地址传送B)实参传给形参,再由形参传给实参

C)值传送D)由用户指定传送方式

19.以下程序的输出结果是______。

char *s=”ABCD”, *p; for( p=s; *p ; p++) printf("%s\n", p);

A)ABCD B)A C)D D)ABCD BCD B C ABC CD C B AB D D A A

20.下列程序段的输出是______。

int fun( int x) { static int a=3; a+=x; return a; }

void main( void ) { int k=2, m=1, n; n=fun(k); n=fun(m);

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

A)3 B)4 C)6 D)9

二. 填空题:(每空1分,共20分)

请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。 1. C语言有 ⑴ 、 ⑵ 、 ⑶ 、 ⑷ 和 ⑸ 五种常量。 2. C程序的变量不仅要事先 ⑹ ,而且还必须 ⑺ 后才能使用。 3. C语言在给出逻辑运算结果时,以 ⑻ 代表“真”,以 ⑼ 代表“假”;

在判断一个量是否为“真”时,以 ⑽ 代表“假”,以 ⑾ 代表“真”。 4. C语言规定只有 ⑿ 数组和 ⒀ 数组才能初始化;这种数组不赋初

值,系统会对所有数组元素自动赋以 ⒁ 值。

5. 对两个指针变量进行关系运算的条件是 ⒂ ,其结果表示 ⒃ 。 6. 一个C文件是一个 ⒄ 或 ⒅ ,它把数据看成是 ⒆ ,对文件的存

取是以 ⒇ 为单位。

三. 程序设计题(每空2分,共40分)

阅读下列程序,在横线上填入适当的内容使程序完整。请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。

1.下列程序是求Fibonacci 数列:1,1,2,3,5,8……的前40个数,要求每行输

出4个数。

main()

{

long int f1,f2;

int i;

f1=1 ; f2=1;

for(i=1;i<= ⑴ ;i++)

{

printf("%12ld %12ld ",f1,f2);

if( ⑵ ) printf("\n");

f1= ⑶ ;

f2= ⑷ ;

}

}

2.下列程序是求一个3×4矩阵中值最小元素。

min_value( ⑸ )

{ int i,j,k,min;

⑹ =array[0][0];

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

for(j=0;j<4;j++)

if( ⑺ ) min= ⑻ ;

⑼ ;

}

main()

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

printf("min value is %d\n",min_value( ⑽ ));

}

3.下列程序的功能是:将字符串a复制到字符串b中。

void copy_string(char *from, ⑾ )

;

{

for(;*from; ⑿ )

⒀ ;

*to= ⒁ ;

}

main()

{ char *a="I am a boy!";

char *b="This is a test!";

⒂ ;

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

}

4.有一个班,3个学生,各学四门棵。下列程序的功能是:查找有一门以上课

程不及格的学生,打印出他们的全部课程的成绩。

main()

{ ⒃ ;

static float score[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; search(score,3);

}

void search( float (*p)[4], int n)

;

{ int i,j,flag;

for(j=0;j

{ flag=0;

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

if( ⒄ ) flag=1;

if( ⒅ )

{ printf("No.%d is fail\n",j+i);

for(i=0; ⒆ ;i++)

printf("%5.1f ", ⒇ );

printf("\n");

}

}

}

参考答案:

一. 单项选择题:(每题2分,共40分)

CBDBB CBCBD CABBB BCCAC

二. 填空题:(每题2分,共20分)

1常数 2 字符 3 字符串4、转义序列5符号常量6定义7 赋值8 1 9 0 10 非0

11 0 12 static 13 extern 14 0 15指向同一数

16位置的前后17字节流18二进制流19一连串的字符20字符(字节

三. 程序归纳题(每题2分,共40分)

1 20

2 i%5==0

3 f1+f2

4 f1+f2

5 int array[3][4]

6 min

7 min

9 return min 10 a

11 char *to 12 from++,to++

13 *to=*from 14 ‘\0’

15 copy_string(a,b) 16 void search( float (*p)[4], int n)

17 p[j][i]<60 18 flag==1

19 i<4 20 p[j][i]

安徽大学20 -20 学年第学期

《C语言程序设计》期末考试试卷(B卷120分钟)

年级院系专业姓名学号座位号

一. 单项选择题:(每题2分,共20分)

下列各题A)、B)、C)、D)

四个选项中只有一个是正

确的,请将正确选项填在答题卡相应题目的横线上。答在试卷上不得分。1.执行程序: int a; printf("%d \n", (a=3*5, a*4, a+5) );后,a的值是______。

A)60 B)20 C)15 D)10

2.程序段:int x=023; printf("%d \n", --x );的输出是______。

A)19 B)18 C)23 D)22

3.程序段:static char s[10]={'C','h','i','n','a'}; printf("%d\n",strlen(s));的输出是______。

A)6 B)5 C)11 D)10

4.若fun( int x) { printf(“%d\n”,x);}, 则fun_______。

A)返回值为void 类型B)返回值类型无法确定

C)返回值为int 类型D)没有返回值

5. 有宏定义:#define MULT1(a,b) a*b

#define MULT2(a,b) (a)*(b)

且引用宏:y=MULT1(3+2,5+8); z=MULT2(3+2,5+8); 则y和z的值是______。

A)y=65,z=65 B)y=21,z=65 C)y=65,z=21 D)y=21,z=21

6.程序段char s[]="Hello", *p; p=s;执行后,*(p+5)的值是______。

A)'o' B)'\0' C)'o'的地址D)不确定的值

7. 程序段:char *s=”ABCD”, *p; for( p=s; *p ; p++) printf("%s\n", p);的输出是______。

A)ABCD B)A C)D D)ABCD

BCD B C ABC

CD C B AB

D D A A

8. 若定义:int (*p)[3]; 则标识符p______。

A)定义不合法。

B)是一个指针数组名,每个元素是一个指向整型变量的指针。

C)是一个指针,它指向一个具有三个元素的一维数组。

D)是一个指向整型变量的指针。

9. 定义: struct sk {int a; float b;} data,*p; 且p=&data; 则正确引用成员a的方

式是______。

A) p.data.a B) (*p).a C) p->data.a D) (*p).data.a

10. 以二进制只读方式打开一个已有的文本文件file1,正确调用fopen函数的方

式是______。

A)FILE *fp; B)FILE *fp;

fp=fopen("file1","rb"); fp=fopen("file1","r+");

C)FILE *fp; D)FILE *fp;

fp=fopen("file1","r"); fp=fopen("file1","rb+");

二. 填空题:(每空1分,共20分)

请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。 7. C程序一个函数的定义由__________和____________两部分组成。 8. C语言的整型变量可分为基本型、短整型、________和________。 9. C语言在判断一个量是否为“真”时,以____代表“假”,以____代表“真”。 10. C语言中的break 语句只能用于______和______语句。

11. 对________和________型数组不赋初值,系统会对所有元素自动赋以0

值。

12. C语言中“文件包含”是通过____________命令完成的,而符号常量是

通过____________命令定义的。

13. 对于数组x[5][5],*(x+2)+3表示__________,*(x[3]+

2)表示__________。

14. 若定义:struct {int y, m, d;} today, *pdata; 则为today 分配内存 ____

字节,为pdata 分配内存 ____ 字节。

15. C语言文件按数据的存放形式可分为________文件和_________文件。 16. C语言文件是一个________序列,这类文件称为

_________文件。

三. 程序归纳题(每题2分,共10分)

阅读下列函数,总结其主要功能填在答题卡相应的横线上。答在试卷上不得分。

1. int fun1 (char *str){ char *ptr=str; while(*ptr++); return ptr-str-1; }

2. double fun2(double x, double y, double z){ return x>(y>z?y:z)?x:(y>z?y:z); }

3. void funs3( int num[], int size ){ int i=0, tmp; while(

i

)

tmp=num[i],num[i]=num[size-i-1],num[size-i-1]=tmp,i++;}

4. void fun4(char *f, char *t)

{ for(;*f!='\0';f++,t++) *t=*f; *t='\0'; }

5.void fun5(char *ps) { int a1=0, a2=0;

while (*ps!= '\0')

{ if (*ps>='a'&&*ps<='z') a1++;

else if (*ps>='0'&&*ps<='9') a2++;

p++; }

printf("%d,%d \n",a1, a2); }

阅读程序,将其运行结果填在答题卡相应题目的横线上。答在试卷上不得分。

1. #include "stdio.h"

void main() {

static int a[]={1,2,3,4,5,6},*p;

p=a; *(p+3)+=2;

printf("%d,%d\n",*p,*(p+3)); }

2. #include "stdio.h"

void main() { int x=1;

{ int x=2;

{ int x=3; printf("%2d",x); }

printf("%2d",x); }

printf("%2d",x); }

3. #include

#include

void sort( char **str, int n){

char *tmp; int i,j;

for( i=0; i

for( j=0; j

if(strcmp(str[j],str[j+1])>0)

tmp=str[j], str[j]=str[j+1], str[j+1]=tmp; }

void main() {

char **ps,*str[3]={ "BOOK","COMPUTER","CHINA"};

int i;

ps=str; sort(ps,3);

for(i=0; i<3; i++) printf("%d %s ",i+1, str[i]); }

4. #include

int leap_year(int year){

return year%4==0 && year%100!=0 || year%400==0; } void main(){

int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31 }, days,i;

struct date {

int year;

int month;

int day;

}mdate={2008,5,1};

if(leap_year(mdate.year))

month_day[1]++;

for(i=1,days=mdate.day;i

days+=month_day[i-1];

printf("%d-%d is the %dth day in %d",

mdate.month,mdate.day,days,mdate.year); }

5. #include

void add( int *x, int *y, int n){

while(n--) *x++ += *y++; }

void main(){

int i=5; static int s1[]={2, 1, 0, 3, 2}, s2[5];

add(s2, s1, 5);

while(i--) printf("%2d", s2[i]); }

阅读下列程序,在指定位置上填入适当的内容使程序完整。请勿改动其它内容。请将正确答案填在答题卡上。答在试卷上不得分。

1.函数insert将一个指定的单精度数按递减规律插入数组num中,注:数组num

中已有12个按照递减顺序排好序的单精度数。

void insert( float num[13],float new )

{ int i=11;

/***answer begin***/

……

/***answer end***/}

2.编写函数mycmp实现库函数strcmp的功能:两个字符串的比较。

int mycmp(char *p1,char *p2)

{ /***answer begin***/

……

/***answer end***/}

3.设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。

#include

struct person

{ char name[20];

int count;

}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};

main()

{ int i,j; char leader_name[20];

for(i=1;i<=10;i++)

{/***answer begin***/

……

/***answer end***/}

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

printf("%5s:%d\n",leader[i].name,leader[i].count);

}

4.从键盘上输入一个字符串,将其中的小写字母转换成大写字母,然后输出到

名为“test”的文本文件中保存。输入字符串以“!”结束。

#include

void main()

{

int i; char str[80]; FILE *fp;

if( (fp=fopen("test","w"))==NULL)

{ printf("cannot open file\n");

exit(0); }

printf("Input a string(end with !):");

gets(str);

/***answer begin***/

……

/***answer end***/

}

参考答案:

一. 单项选择题:(每题2分,共20分)

CBBCB BACBA

二. 填空题:(每题2分,共20分)

1函数说明2函数体3长整型4无符号型 5 0

6 非0

7 switch

8 循环

9 extern 10 static

11 #include 12 #define 13 &x[2][3] 14 x[3][2] 15 6

16 2 17文本18二进制19字符(字节) 20流式

三. 程序归纳题(每题2分,共10分)

1求字符串长度

2 求3个double型数中的大数

3 翻转整型数组

4 复制字符串

5 统计指定字符串中小写字母、数字的个数

四. 程序分析题(每题2分,共10分)

1 1,6

2

3 2 1

3 1 BOOK 2 CHINA 3 COMPUTER

4 5-1 is the 122th day in 2008

5 2 3 0 1 2 注:标点符号错误不另扣分

五. 程序设计题(每题10分,共40分)

1.num[12]=new; 存储新值:2分

while( i>=0 && data[i]

{ 复合语句:1分

new=num[i+1]; 暂存新值:1分

num[i+1]=num[i]; 更新旧值:2分

num[i]=new; 更新新值:1分

i--; 循环计数:1分

}

2.while(*p1&&*p2&&*p1==*p2) 依次比较两个字符串直至其结束:6分p1++,p2++; 更新位置指示:2分

return *p1-*p2; 返回差值:2分

3.scanf("%s",leader_name); 唱票:2分

for(j=0;j<3;j++) 循环寻找得票人:2分

if(strcmp(leader_name,leader[j].name)==0) 寻找得票人:4分

leader[j].count++; 更新得票人票数:2分

4.for(i=0; str[i]!='!'; i++) 依次比较各字符直至字符串结束:2分if(str[i]>='a' && str[i]<='z') 判断是否是小写字母:2分

str[i]-=32; 转换为大写字母:2分

printf("Writting %s into file test",str);

fputs(str,fp); 将字符串存储到文件中:2分

fclose(fp); 关闭文件:2分

相关主题
相关文档
最新文档