C语言考试试题三套Word下载.docx

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

C语言考试试题三套Word下载.docx

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

C语言考试试题三套Word下载.docx

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);

++p->

y);

%d\n"

(a+3)->

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

#include"

stdio.h"

voidmain()

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

m=3,n=2;

for(k=0;

m;

k++)

for(j=0;

j<

n;

j++)

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

k++){

b[k]=0;

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

}

%d,"

b[k]);

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

#include<

stdio.h>

longfib(intg)

{switch(g){

case0:

return(0);

case1:

case2:

return

(2);

g=%d,"

g);

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

{longk;

k=fib(4);

k=%ld\n"

k);

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

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

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

#include<

intx,y,z;

voidp(int*x,inty)

{--*x;

y++;

z=*x+y;

%d,%d,"

*x,y);

voidmain()

{x=5;

y=2;

z=0;

p(&

x,y);

%d,%d,%d--"

x,y,z);

y,x);

%d,%d,%d\n"

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

{intx,k;

x=14;

for(k=0;

x!

=0;

x&

=x-1)

++k;

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

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<

n;

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;

5;

k++)printf("

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("

&

p1->

num);

while(p1->

num!

=0){

p1=(structline*)malloc(LEN);

if(p1->

num==0)p2->

next=NULL;

else{p2->

next=p1;

p2=p1;

k++;

p2->

next=head;

p1=head->

next;

p1=p1->

for(j=1;

=k;

j++){

-->

%d"

p1->

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

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

math.h>

{

struct{

floatlength;

}point[10];

intk,sub=0;

for(k=0;

k<

10;

k++){

%d%d"

point[k].x,&

point[k].y);

point[k].length=

(1)

for(k=1;

if(

(2))(3)

(%d,%d)%f\n"

point[sub].x,point[sub].y,point[sub].length);

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

string.h>

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

intk,n;

n);

for(k=0;

gets(str[k]);

(4)

(5)

puts(string);

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

例如:

调用xtoi("

1f"

)将返回31。

xtoi((6))

{intk,d=0;

s[k]==’’||s[k]==’\t’;

k++);

while(s[k]>

=’0’&

s[k]<

=’9’||s[k]>

=’a’&

=’f’){

if(s[k]>

='

0'

&

9'

(7)

a'

f'

(8)

}

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;

yearday>

day_tab[leap][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”,&

C、scanf(”%d%f”,&

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;

*++k);

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

13. 

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

A、charstr[]="

string"

B、charstr[7]={'

s'

'

t'

r'

i'

n'

g'

};

C、charstr[10];

str="

D、charstr[7]={'

’\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分)

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

floatx1,x2;

x1=3/2;

x2=x1/2;

%d,%.1f"

(int)x1,x2);

表达式(7<

<

1>

>

2^2)的值是_______。

#defineA10

#defineB(A<

A+2)-2

B*2);

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

intk,x;

for(k=0,x=0;

=9&

x!

=10;

x+=2;

%d,%d"

k,x);

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

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

f(intn)

{return((n>

0)?

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

-1);

charstr[]="

hello\tworld\n"

;

%d,%c\n"

sizeof(str),*(str+10));

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

{charc;

for(c=getchar();

getchar()!

=’#’;

c=getchar())

putchar(c);

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

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

若输入3123<

回车>

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

#include"

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

for(i=0;

i<

i++)

&

a[i]);

i++)

for(j=0;

printf("

a[(i+j)%n]);

若输入89762425981116354<

#defineN10

{

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

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

n1=n2=0;

for(i=0;

i<

N;

i++){

scanf(“%d”,&

x[i]);

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

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

for(i=1;

n1;

n1-1;

if(y1[j]>

y1[j+1]){

t=y1[j];

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

y1[j+1]=t;

}

n2-1;

i++){

p=i;

for(j=i+1;

n2;

j++)

if(y2[p]<

y2[j])p=j;

if(p!

=i){

t=y2[i];

y2[i]=y2[p];

y2[p]=t;

i++)printf("

y1[i]);

y2[i]);

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

#include<

intz;

voidp(int*x,inty)

{++*x;

y--;

z=*x+y+z;

%d,%d,%d#"

*x,y,z);

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

若输入-6+15*3/5=<

intm=0,sum=0;

charc,oldc='

+'

do{

c=getchar();

if(c<

='

c>

)m=10*m+c-'

else{

if(oldc=='

)sum+=m;

elsesum-=m;

m=0;

oldc=c;

sum);

}while(c!

);

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

alloc.h>

structlink{

charname[10];

intmark;

structlink*next;

};

voidinsert(char*,int);

structlink*head=NULL;

{

charname[10];

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->

voidinsert(char*name,intmark)

structlink*p;

p=______(3)_______;

strcpy(p->

name,name);

p->

mark=mark;

______(4)_______;

if(head!

=NULL)______(5)_______;

head=p;

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

运行progfilename时,将文本文件filename中的内容原样输出;

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

运行prog-dfilename时,只将文本文件filename中的数字输出。

#include<

std

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

当前位置:首页 > 工程科技 > 建筑土木

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

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