当前位置:
文档之家› 2009年秋季C等考试卷及参考答案
2009年秋季C等考试卷及参考答案
#include<stdio.h>
#include<math.h>
double root(double a, double b, double (*f)(double))
{ double x,y;
if()
{ printf(“Байду номын сангаасhere is no root between %f and %f”, a,b);
A.实参和其对应的形参占用同一个存储单元
B.形参不占用存储单元
C.同名的实参和形参占用同一存储单元
D.形参和实参占用不同的存储单元
10、已知有声明”int i, a[10], *p=a;”,现需要将1~10保存到a[0]~a[9]中,以下程序段中不能实现这一功能的是()
A.for (i=0;i<10;i++) a[i]=i+1; B.for(i=0;i<10;i++) p[i]=i+1;
{ y=x*x; }
void main()
{ int a=2,b=0,c=2,d=0;
f(a,b);
g(c,d);
printf(“%d\n%d”,b,d);
}
12、以下程序运算时输出到屏幕的结果中第一行是,第二行是。
#include<stdio.h>
void main()
{ int a[3][3]={{3,8,12},{4,7,10},{2,5,11}},i,j,k,t;
例如,若删除前的s链表为:
s
则删除厚的s链表为:
s
#include<stdio.h>
struct node
{ inti;/*存放结点的编号*/
char c; /*存放一个字母的ASCII编号*/
struct node *next;
};
struct node *t=NULL;
struct node *fun(struct node *s)
{ FACT t3;
t3.m=t1.m*t2.m;
t3.z=t1.z*t2.m+t2.z*t1.m;
return t3;
}
FACT fun2(FACT t)
{ int m,n,k;
m=t.m;
n=t.z;
while(k=m%n)
{ m=n; n=k; }
t.m=t.m/n ;
t.z=t.z/n ;
return t;
fclose(fp);
fp=fopen(“d2.dat”,“r”);
fscanf(fp,“%d%d”, &k,&n);
printf(“%d,%d\n”, k,n);
fclose(fp);
}
7、以下程序运算时输出到屏幕的结果是。
#include<stdio.h>
void main()
{ int i=1,m=0;
switch(i)
{ case 1:
case 2: m++;
case 3: m++;
}
printf(“%d”, m);
}
8、以下程序运算时输出到屏幕的结果中第一行是,第二行是。
#include<stdio.h>
void fun(int a[], int b[], int *x)
{ int i,j=0;
for(i=0;a[i];i++)
{ if(i%2==0) continue;
if(a[i]>10)
b[j++]=a[i];
}
*x=j;
}
void main()
{ int a[10]={3,15,32,23,11,4,5,9}, b[10];
int i=0,x=0;
fun(a,b,&x);
for(i=0;i<x;i++)
{ struct node *p,*q; struct node *r;
p=q=s;
while(p!=NULL)
{ if(((p->i)%2)&&((p->c)%2))
{ if(s==p)
s=q=;
else
{;
q=p->next;
}
if(t==NULL)
t=r=p;
else
{ r->next=p; r=r->next; }
void main()
{ FILE *fp;
int k,n,a[6]={1,2,3,4,5,6};
fp=fopen(“d2.dat”,“w”);
fprintf(fp,”%d%d%d\n”, a[0],a[1],a[2]);
fprintf(fp,”%d%d%d\n”, a[3],a[4],a[5]);
2009年秋季C语言二级试卷及参考答案
一、选择题
1、以下叙述中正确的是()
A.C语言系统以函数为单位编译源程序
B.main函数必须放在程序开始
C.用户定义的函数可以被一个或多个函数调用任意多次
D.在一个函数体内可以定义另外一个函数
2、以下选项中,不能用作C语言标识符的是()
A.print B.FOR C.&a D._00
if(*p==’’)
i=0;
else
if(i==0)
{ n++;i=1; }
printf(“%d\n”,n);
}
14、以下程序运算时输出到屏幕的结果中第一行是,第二行是。
#include<stdio.h>
typedef struct fact
{ int m,z;
}FACT;
FACT fun1(FACT t1, FACT t2)
3、数学表达式 所对应的C语言表达式为。
4、若有以下声明:
char *p=”%d,%d\n”; int a=1,b=2;
则执行语句”printf(p,a,b);”时输出。
5、声明局部变量时若缺省存储类别,该变量的存储类别是。
阅读程序
6、以下程序运行时输出到屏幕的结果是。
#include<stdio.h>
}
p=;
}
if(t!=NULL)
;
return s;
}
参考答案
一、选择题
1、C 2、C 3、B 4、D 5、C6、C 7、B 8、A9、D 10、D
二、填空题
1、!
2、8解析:sizeof指数据或变量占的内存(字节),C编译系统将浮点型常量作为双精度来处理
16、以下程序在3~50范围内验证:大于等于3的两个相邻素数的平方之间至少有4个素数。例如,3和5是相邻素数,32~52之间有素数11、13、17、19、23。试完善程序以达到要求的功能。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int prime(int n)
for(j=0;j<3;j++)
for(k=0;k<2;k++)
for(i=0;i<2-k;i++)
if(a[i][j]>a[i+1][j])
t=a[i][j],a[i][j]=a[i+1][j],a[i+1][j]=t;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf(“%3d”,a[i][j]);
C.i=1; while(p<a+10) *p++=i++; D.i=1; while(p<a+10) *a++=i++;
二、填空题
基本概念
1、C语言中有!、&&、||三个逻辑运算符,其中优先级高于算术运算符的是。
2、若有声明”int r=2;”,则执行语句”printf(“%d”, sizeof(2*3.14*r));”时输出。
{ int a[]={1,2,3,4,5,6,7};
printf(“%d\n”,fun(a,2));
}
10、以下程序运算时输出到屏幕的结果是。
#include<stdio.h>
long f(int n)
{ static long s;
if(n==1) return s=2;
else return ++s;
}
void main()
{ FACT s,s1={8,4},s2={6,5};
s=fun1(s1,s2);
printf(“%d,%d\n”,s.z,s.m);
s=fun2(s);
printf(“%d,%d”,s.z,s.m);
}
完善程序
15、以下程序求方程的一个近似根。root函数采用二分法计算并返回方程f(x)=0在[a,b]内的一个近似根,main函数调用root函数求方程cos(x)=0在[0,3.14]内的一个近似根。试完善程序以达到要求的功能。
}
void main()
{ longi,sum=0;
for(i=1;i<4;i++) sum+=f(i);
printf(“%ld”, sum);
}
11、以下程序运算时输出到屏幕的结果中第一行是,第二行是。
#include<stdio.h>
#define f(x,y) y=x*x