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