2009─2010 学年 第一学期 《 C 程序设计 》课程考试试卷(A 卷) 一 判断题 (每小题 1 分,共10分) (说明:正确的划√,错误的划×) ( )1)在传统流程图中,用矩形框表示判断。 ( )2)C 语言表达式1/2的值为0.5。 ( )3)指定实数123.56按指数形式输出的形式可为1.2356E+002。 ( )4)-X=2是合法的表达式。 ( )5)复合语句在语法上被看作一条语句。 ( )6)能在赋值语句中通过赋值运算符号“=”对字符型数组进行整体赋值。 ( )7)函数可以定义在另一个函数的内部。 ( )8)宏替换不占程序的运行时间。 ( )9)二维数组a[10][10]的第i 行第 j 列的值可以表示为*(*a+i*10+j )。 ( )10) int (*p)[4]表示一个指针数组,该数组的四个元素都为指针变量。 二 选择题(每小题2分,共30分) ( )1、以下叙述不正确的是 A )一个C 源程序可由一个或多个函数组成 B )一个C 源程序必须包含一个main 函数 C )C 程序的基本组成单位是函数 D )在C 程序中,注释说明只能位于一条语句的后面 ( )2、以下选项中可作为C 语言合法常量的是 A)90. B)090 C)9e1.0 D)90.0e ( )3、以下选项中合法的字符常量是 A)”B ” B )'\010' C )-268 D ) D ( )4
、能正确表示逻辑关系:“a ≤10且a ≥0”的C 语言表达式是 A)0<=a<=10 B)a<=0&a>=10 C)a<=10 &&a>=0 D)a<=10‖a>=0 ( )5
、设 int x=1, y=1; 表达式(!x||y--)的值是 A )1 B )0 C )2 D )-1
( )6、数字字符0的ASCII 值为48,若有以下程序
main()
{
char a=’5’,b=’6’;
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是
A)7,2 B)55,2 C)54,2 D)6,2
()7、有以下程序
main()
{
int m=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是
A)12353514 B)12353513 C)12343514 D)12343513
()8、有以下语句:float b;char c[10];,则正确的输入语句是
A)scanf("%d%s",&b,c); B) scanf("%f%s",&b,c);
C)scanf("%f%s",b,c); D)scanf("%d%s",b,&c);
()9、有以下程序
# define f(x) (x*x)
void main()
{
int i1, i2;
i1=f(6)/f(2) ; i2=f(3+3)/f(1+1) ;
printf("%d, %d\n",i1,i2);
}
程序运行后的输出结果是
A)9,9 B)9, 5 C)5, 9 D)5, 5
()10、有以下程序
main()
{
int a,b,d=29;
a=d/2%10;
b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是
A)0,0 B)1,1 C)4,1 D)1,0
()11、有以下程序
main()
{
int i=3,j=3,k=3;
if(i++==4&&(++j==4||k++==4))
printf("%d %d %d\n",i,j,k);
}
程序运行后的输出结果是
(A)4 4 4 (B)4 4 3 (C)4 3 3 (D)3 3 3
()12、以下程序的输出结果是
A)#*#*# B)##### C)***** D)*#*#* void main( )
{
int i;
for(i=0;i<5;i++)
{
if(i%2) {printf("#");continue;}
printf("*");
}
printf("\n");
}
()13、有以下程序
void main( )
{
char b[10]=”abcd”;
printf(“%d, %d\n”,strlen(b) ,sizeof(b));
}
执行后输出结果是
A) 4,4 B)10, 10 C) 10,4 D) 4, 10
()14、有以下程序
void swap1(int c[])
{
int t; t=c[0]; c[0]=c[1]; c[1]=t;
}
void swap2(int c0,int c1)
{
int t; t=c0; c0=c1; c1=t;
}
void main( )
{
int a[2]={7,9},b[2]={7,9};
swap1(a) ; swap2(b[0],b[1]);
printf(“%d %d %d %d\n”,a[0],a[1],b[0],b[1]);
}
其输出结果是()。
A) 9 7 7 9 B) 9 7 9 7 C)7 9 7 9 D) 7 9 9 7
()15、以下叙述中正确的是()。
A) 函数的形参都属于全局变量
B)全局变量都是静态类别变量
C)全局变量的作用域一定比局部变量的作用域范围大
D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值
三填空题(每小题3分,共36分)
1、执行以下程序后的输出结果是。
main()
{
int a=2;
a=(a/2,a*5,a+4);
printf(“a=%d\n”,a);
}
2、以下程序运行后的输出结果是。
void main()
{
int a,b,c;
a=12;
b=012;
c=0x12;
printf("%d %d %d\n",a,b,c);
}
3、以下程序的输出结果是___________________。
void main( )
{
int a=5,b=4,c=3,d;
d=(a>b>c);
printf("d=%d\n",d);
}
4、学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。利用条件运算符的嵌套可写为_________________________________________________________。(表示分数的变量用x)
5、以下程序
void main()
{
int i;
for(i=0;i<3;i++)
{
switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
}
执行后输出结果是。
6、以下程序运行后的输出结果是。
void main()
{
int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
int i=0,j=0,s=0;
while(++i<4)
{
if(i==1||i==3) continue;
j=0;
do{
s+= a[i][j]; j++;
} while(j<4);
}
printf("%d\n",s);
}
7、下列程序段的输出结果是。
void main()
{
char b[]=”How_are_you”;
b[7]=’\0’;
printf(“%s \n”, b );
}
8、以下程序运行后的输出结果是。
void main()
{
char s[ ]=“2009”,*p;
for ( p=s ; p
printf(“%s\n”, p);
}
9、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是__ _,变量p在内存所占字节
数是,变量a.age在内存所占字节数是。(以VC编译器对字节数的计算为准)
struct stud
{ char num[8];
int score[4];
double ave;
int age;
} a,*p;
10、设char型变量x中的值为00100111(2),则表达式(2+x)^(~3)的值是。(用二进制表示)
11、若fp已正确定义为一个文件指针,要以只读打开打开C盘根目录下的二进制文件d1.dat,请填空:
fp=fopen( );
12、以下程序实现通过学号(0~3)查找某个学生的所有成绩输出,空中要将一个行指针转化成普通指针。
main()
{
float score[][4]={{60,70,80,90}, {56,89,67,88},{34,78,90,66}};
float *search(float (*pointer)[4],int n), *p;
int i,m;
printf("Enter the number of student:");
scanf("%d",&m);
printf("The scores of No.%d are:\n",m);
p=search(score,m);
for(i=0;i<4;i++)
printf("%5.2f\t",*(p+i));
}
float *search(float (*pointer)[4], int n)
{ float *pt;
pt= ;
return(pt);
}
1、编程计算1-1/2+1/3-1/4+1/5-………..-1/100的值。并画出N-S流程图(10分)
2、写一个递归函数实现阶乘n!,然后在主函数中调用该函数实现1!+2!+3!+…….10! (8分)
3、通过键盘输入十个整数,找出其中最小的正数(6分)