C语言考试试题三套.docx

上传人:b****6 文档编号:7212047 上传时间:2023-01-21 格式:DOCX 页数:24 大小:27.67KB
下载 相关 举报
C语言考试试题三套.docx_第1页
第1页 / 共24页
C语言考试试题三套.docx_第2页
第2页 / 共24页
C语言考试试题三套.docx_第3页
第3页 / 共24页
C语言考试试题三套.docx_第4页
第4页 / 共24页
C语言考试试题三套.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C语言考试试题三套.docx

《C语言考试试题三套.docx》由会员分享,可在线阅读,更多相关《C语言考试试题三套.docx(24页珍藏版)》请在冰豆网上搜索。

C语言考试试题三套.docx

C语言考试试题三套

C语言辅导试题一

一、单项选择题(每小题2分,共20分)

1.C语言程序的三种基本结构是顺序结构、选择结构和______结构。

A、循环B、递归C、转移D、嵌套

2.若x是单精度实型变量,表达式(x=10/4)的值是_____。

A、2.5B、2.0C、3D、2

3.表达式!

x等价于_____。

A、x==0B、x==1C、x!

=0D、x!

=1

4.若变量已正确定义且k的值是4,计算表达式(j=k--)后,_____。

A、j=3,k=3B、j=3,k=4C、j=4,k=4D、j=4,k=3

5.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_____。

A、算术运算、赋值运算、关系运算B、关系运算、赋值运算、算术运算

C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算

6.C语言中,形参的缺省的存储类说明是______。

A、autoB、staticC、registerD、extern

7.下列语句定义pf为指向float类型变量f的指针,_____是正确的。

A、floatf,*pf=f;B、floatf,*pf=&f;C、float*pf=&f,f;D、floatf,pf=f;

8.表达式sizeof(“key”)的值是______。

A、1B、2C、3D、4

9.将程序prog.c编译后运行:

prog–nlahelloworld则*(*(argv+2))是______。

A、’p’B、‘-‘C、‘h’D、‘w’

10.若a是整型变量,表达式~(a^~a)等价于______。

A、~aB、1C、0D、2

二、填空题(每小题3分,共24分)

1.写出语句printf("%d,%o,%x",0x12,12,012);的输出结果。

 

2.写出下列程序段的输出结果。

#defineF(x)x-2

#defineD(x)x*F(x)

printf("%d,%d",D(3),D(D(3)));

 

3.写出下列程序段的输出结果。

intk;char*s=“ABC”;

for(k=10;k!

=0;k--);

printf("%d",k);

while(*s++)putchar(*s);

4.写出下列程序的输出结果。

voidfun(intk)

{staticinta;

printf(”%d,”,a);

a+=k;

}

main()

{intk;

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

fun(k);

}

 

5.写出下列程序的输出结果。

main()

{structst{

intx,y;

}a[4]={{10,20},{30,40},{50,60},{70,80}};

structst*p=a;

printf("%d,",p++->x);

printf("%d,",++p->y);

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

}

 

6.写出下列程序的输出结果。

#include"stdio.h"

voidmain()

{intk,j,m,n,a[6][6],b[6];

m=3,n=2;

for(k=0;k

for(j=0;j

a[k][j]=k*n+j+1;

for(k=0;k

b[k]=0;

for(j=0;j

b[k]+=a[k][j];

}

for(k=0;k

printf("%d,",b[k]);

}

 

7.写出下列程序的输出结果。

#include

longfib(intg)

{switch(g){

case0:

return(0);

case1:

case2:

return

(2);

}

printf("g=%d,",g);

return(fib(g-1)+fib(g-2));

}

main()

{longk;

k=fib(4);

printf("k=%ld\n",k);

}

8.用typedef定义一个长度为10的整型数组NUM。

 

三、程序阅读题(每题5分,共20分)

1.写出下列程序的输出结果。

#include

intx,y,z;

voidp(int*x,inty)

{--*x;

y++;

z=*x+y;

printf("%d,%d,",*x,y);

}

voidmain()

{x=5;y=2;z=0;

p(&x,y);

printf("%d,%d,%d--",x,y,z);

p(&y,x);

printf("%d,%d,%d\n",x,y,z);

}

2.写出下列程序的输出结果,并指出该程序的功能。

#include

voidmain()

{intx,k;

x=14;

for(k=0;x!

=0;x&=x-1)

++k;

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

}

3.写出下列程序的输出结果。

#include

voidmain()

{

intv[]={6,3,4,1,2};intn=5;

intgap,j,k,temp;

for(gap=n/2;gap>1;gap/=2)

for(j=gap;j

for(k=j-gap;k>=0&&v[k]>v[k+gap];k-=gap){

temp=v[k];

v[k]=v[k+gap];

v[k+gap]=temp;

}

for(k=0;k<5;k++)printf("%d,",v[k]);

}

4.输入123450后,写出下列程序的输出结果。

#defineLENsizeof(structline)

#defineNULL0

structline{

intnum;

structline*next;

}

main()

{structline*p1,*p2,*head;

intj,k=0;

p1=p2=head=(structline*)malloc(LEN);

scanf("%d",&p1->num);

while(p1->num!

=0){

p1=(structline*)malloc(LEN);

scanf("%d",&p1->num);

if(p1->num==0)p2->next=NULL;

else{p2->next=p1;

p2=p1;

}

k++;

}

p2->next=head;p1=head->next;p1=p1->next;

for(j=1;j<=k;j++){

printf("-->%d",p1->num);

p1=p1->next;

}

}

 

四、程序填空题(每空2分,共20分)

 

1.输入10个点的坐标(设坐标为整数值),输出距原点最远的点(设唯一)的坐标及该点距原点的距离.

#include

voidmain()

{

struct{

intx,y;

floatlength;

}point[10];

intk,sub=0;

for(k=0;k<10;k++){

scanf("%d%d",&point[k].x,&point[k].y);

point[k].length=

(1)

}

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

if(

(2))(3)

printf("(%d,%d)%f\n",point[sub].x,point[sub].y,point[sub].length);

}

2.将输入的n个字符串连接成1个字符串,然后输出该字符串.

#include

#include

voidmain()

{

charstr[10][20],string[200];

intk,n;

scanf("%d",&n);

for(k=0;k

gets(str[k]);

(4)

for(k=1;k

(5)

puts(string);

}

3.函数xtoi的功能是将放在字符串中的十六进制数(可以出现’0’~’9’、’a’~’f)转换成十进制整数。

例如:

调用xtoi("1f")将返回31。

xtoi((6))

{intk,d=0;

for(k=0;s[k]==’’||s[k]==’\t’;k++);

while(s[k]>=’0’&&s[k]<=’9’||s[k]>=’a’&&s[k]<=’f’){

if(s[k]>='0'&&s[k]<='9')

(7)

if(s[k]>='a'&&s[k]<='f')

(8)

k++;

}

returnd;

}

 

4.函数month_day(year,yearday,&month,&day)的功能是将给定的某年第几天转换为相应的月和日。

例如:

调用month_day(1988,60,&m,&d)后,m的值是2,d的值是29(即1988年的第60天是1988年2月29日)。

判别闰年的条件:

能被4整除但不能被100整除或能被400整除。

voidmonth_day(intyear,intyearday,int*pmonth,int*pday)

{staticintday_tab[2][13]={

{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}};

intk,leap;

leap=year%4==0&&year%100!

=0||year%400==0;

for(k=1;yearday>day_tab[leap][k];k++)

(9)

*pmonth=(10)

*pday=yearday;

}

 

五、编程题(共16分)

1.[程序说明](5分)

请编写函数sum_fact(number),返回number的因子之和。

(能整除number的数就是它的因子,number定义为int)

例如sum_fact(6)=12(因为1,2,3,6是6的因子)

 

2.[程序说明](11分)

文本文件input.txt中存放了一批整数,将其中每个数的因子之和顺序写入文件output.txt。

(必须调用第1小题中定义的函数sum_fact(number)计算number的因子之和)

例:

若文件input.txt中存放了1,2,6,则每个数的因子之和分别是1312,它们被写入文件output.txt。

 

 C语言辅导试题二

一、单项选择题(每小题2分,共30分)

1.        C语言程序中可以对程序进行注释,注释部分必须用符号_____括起来。

A、‘{‘和’}’B、‘[‘和’]’C、“/*”和”*/”D、“*/”和”/*”

2.        下列运算符中,优先级最低的是_____。

A、*B、!

=C、+D、=

3.        若变量已正确定义,表达式(j=3,j++)的值是_____。

A、3B、4C、5D、0

4.        已知字符‘a’的ASCII码为97,执行下列语句的输出是_____。

printf("%d,%c",’b’,’b’+1);

A、98,bB、语句不合法C、98,99D、98,c

5.        表达式strcmp(“box”,“boss”)的值是一个_______。

A、正数B、负数C、0D、不确定的数

6.        数组定义为inta[3][2]={1,2,3,4,5,6},数组元素_____的值为6。

A、a[3][2]B、a[2][1]C、a[1][2]D、a[2][3]

7.        要调用数学函数时,在#include命令行中应包含_____。

A、”stdio.h”B、”string.h”C、”math.h”D、”ctype.h”

8.        判断i和j至少有一个值为非0的表达式是_____。

A、i!

=0&&j!

=0B、i*j!

=0[yh1]C、!

(i==0||j==0)D、i&&j

9.        若a是基本整型变量,c是单精度实型变量,输入语句______是错误的。

A、scanf(”%d,%f”,&a,&c);B、scanf(”d=%d,c=%f”,&a,&c);

C、scanf(”%d%f”,&a,&c);D、scanf(”%d%f”,a,c);

10.    若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于_____。

A、p++B、x++C、*(p++)D、&x++

11.    若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x,_____是正确的。

A、p2=p1;B、p2=**p1;C、p2=&p1;D、p2=*p1;

12.    下列程序段的输出是_____。

intc[]={1,3,5};

int*k=c+1;

printf("%d",*++k);

A、3B、5C、4D、6

13.    不正确的赋值或赋初值的方式是______。

A、charstr[]="string";

B、charstr[7]={'s','t','r','i','n','g'};

C、charstr[10];str="string";

D、charstr[7]={'s','t','r','i','n','g',’\0’};

14.    对于以下结构定义,++p->str中的++加在_____。

struct{

intlen;

char*str;

}*p;

A、指针str上B、指针p上C、str指的内容上D、以上均不是

15.    对于如下说明,语法和语义都正确的赋值是_____。

intc,*s,a[]={1,3,5};

A、c=*s;B、s[0]=a[0];C、s=&a[1];D、c=a;

 

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

1.        写出下列程序段的输出结果。

floatx1,x2;

x1=3/2;

x2=x1/2;

printf("%d,%.1f",(int)x1,x2);

2.        表达式(7<<1>>2^2)的值是_______。

3.        写出下列程序段的输出结果。

#defineA10

#defineB(A

printf("%d",B*2);

4.        写出判断字符变量c是英文字母的表达式。

5.        写出下列程序段的输出结果。

intk,x;

for(k=0,x=0;k<=9&&x!

=10;k++)

x+=2;

printf("%d,%d",k,x);

6.        写出下列程序段的输出结果。

printf(“%d,%d”,NULL,EOF);

7.        对于以下递归函数f,调用f(3)的返回值是_____。

f(intn)

{return((n>0)?

2*f(n-1)+f(n-2):

-1);}

8.        写出下列程序段的输出结果。

charstr[]="hello\tworld\n";

printf("%d,%c\n",sizeof(str),*(str+10));

9.        输入12345#后,写出下列程序的输出结果。

voidmain()

{charc;

for(c=getchar();getchar()!

=’#’;c=getchar())

putchar(c);

}

10.   执行程序find–nxouldtext.txt时,*++argv[1]的值是_______。

三、程序阅读题(每题5分,共20分)

1.        若输入3123<回车>,则以下程序的输出结果是_______。

#include"stdio.h"

voidmain()

{inti,j,n,a[10];

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

for(j=0;j

printf("%d,",a[(i+j)%n]);

}

2.        若输入89762425981116354<回车>,则以下程序的输出结果是_______。

#include"stdio.h"

#defineN10

main()

{

intx[N],y1[N],y2[N];

inti,j,n1,n2,t,p;

n1=n2=0;

for(i=0;i

scanf(“%d”,&x[i]);

if(x[i]%2==0)y1[n1++]=x[i];

elsey2[n2++]=x[i];

}

for(i=1;i

for(j=0;j

if(y1[j]>y1[j+1]){

t=y1[j];y1[j]=y1[j+1];y1[j+1]=t;

}

for(i=0;i

p=i;

for(j=i+1;j

if(y2[p]

if(p!

=i){

t=y2[i];y2[i]=y2[p];y2[p]=t;

}

}

for(i=0;i

for(i=0;i

}

3.        以下程序的输出结果是_______。

#include

intz;

voidp(int*x,inty)

{++*x;

y--;

z=*x+y+z;

printf("%d,%d,%d#",*x,y,z);

}

voidmain()

{intx=1,y=5,z=9;

p(&x,y);

printf("%d,%d,%d#",x,y,z);

}

4.        若输入-6+15*3/5=<回车>,则以下程序的输出结果是_______。

#include

voidmain()

{

intm=0,sum=0;

charc,oldc='+';

do{

c=getchar();

if(c<='9'&&c>='0')m=10*m+c-'0';

else{

if(oldc=='+')sum+=m;

elsesum-=m;

m=0;

oldc=c;

printf("%d,",sum);

}

}while(c!

='=');

}

 

四、程序填空题(每空2分,共20分)

1.        下列程序的功能是创建单向链表。

#include

#include

structlink{

charname[10];

intmark;

structlink*next;

};

voidinsert(char*,int);

structlink*head=NULL;

main()

{

charname[10];

intmark;

structlink*t;

while

(1){

scanf("%s%d",name,&mark);

if(strcmp(name,"#")==0)break;

______

(1)_______;

}

for(t=head;______

(2)_______)

printf("<%s>:

%d\n",t->name,t->mark);

}

voidinsert(char*name,intmark)

{

structlink*p;

p=______(3)_______;

strcpy(p->name,name);

p->mark=mark;

______(4)_______;

if(head!

=NULL)______(5)_______;

head=p;

}

2.        prog.c是带命令行参数的程序。

运行progfilename时,将文本文件filename中的内容原样输出;运行prog-ufilename时,将文本文件filename中的所有字母以大写方式输出(其余字符原样输出);运行prog-dfilename时,只将文本文件filename中的数字输出。

#include

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1