南京信息工程大学试卷
本试卷共 9 页;考试时间 120分钟;任课教师 ;出卷时间 2010 年 1月
学院 专业 2009 年级 班
学号 姓名 得分
一、单项选择题 (每小题 1分,共 12分)
1.一个C程序的执行是从
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
2.下面四个选项中,均是不合法的用户标识符的选项的是
A. A p_o do B. float lao _A
C. b-a while int D. _123 temp INT
3.表达式18/4*sqrt(4.0)/8值的数据类型为
A.float B. char
C.double D.不确定
4.设有如下定义
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
下面各输入语句中错误的是 。
A.scanf("%d",&(*p).age); B.scanf("%s",&std.name);
C.scanf("%c",&std[0].sex); D.scanf("%c",&(p->sex));
5.有如下定义:int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4];下面表示正确的是
A.p=a[0]; B.p=*a;
C.p=&a[0][0]; D.p=a;
6.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是 。
A.(x>=1) && (x<=10) && (x>=200) && (x<=210)
B.(x>=1) | | (x<=10) | | (x>=200) | | (x<=210)
C.(x>=1) && (x<=10) | | (x>=200) && (x<=210)
D.(x>=1) | | (x<=10) && (x>=200) | | (x<=210)
7.以下程序段的循环次数是 。
for (i=2; i==0; ) printf(“%d”,i--) ;
A.无限次 B.0次
本aC.1次 D.2次
#include<stdio.h>
int main ( )
{ int x=-1,y=4,k;
k=x++<=0 && !(y--<=0);
printf(“%d,%d,%d”,k,x,y);
return 0;
}
A.0,0,3 B.0,1,2
C.1,0,3 D.1,1,2
9.若程序中定义了以下函数
double myadd(double a,double b)
{ return (a+b); }
并将其放在调用语句之后, 则在调用之前应该对函数进行说明, 以下选项中错误的说 明是 。
A.double myadd(double a, b); B.double myadd(double,double);
C.double myadd(double b,double a); D.double myadd(double x,double y);
10.以下不能正确定义二维数组的选项是 。
A.int a[2][2]={{1},{2}}; B.int a[ ][2]={1,2,3,4};
C.int a[2][2]={{1},2,3}; D.int a[2][ ]={{1,2},{3,4}};
11.以下可作为函数fopen中第一个参数的正确格式是 。
A.”c:\” B. ”c:\\”
C.”c:\” D. ”c:\\user\\”
12.若运行以下程序时,输入2473↙,则程序的运行结果是 。
#include<stdio.h>
int main ( )
{ int c;
while ((c=getchar( )) !=’\n’)
switch (c-‘2’) {
case 0 :
case 1 : putchar (c+4) ;
case 2 : putchar (c+4) ; break ;
case 3 : putchar (c+3) ;
default : putchar (c+2) ; break ;
}
printf(“\n”);
return 0;
}
A.668977 B.668966
C.66778777 D.6688766
二、基础知识填空(每空2分,共20分)
2.若a是int 型变量,则表达式(a=4*5,a*2),a+6的值为 。
3.数学表达式的C语言表达式是 。
4.C语言中,数组名是一个不可改变的 ,不能对它进行赋值运算。
5. 设有数组定义: char array [ ]="China"; 则数组 array所占的空间为
6.若有定义
#define ADD(x)x+x
int m=1,n=2,k=3,sum ;
则执行语句sum = ADD(m+n)*k ;后,sum的值为 。
7.若有定义语句:int a[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是 。
8.若有函数声明 “int sub(int (*x1)() , int *x2) ;”,则形式参数x1是指向 的指针变量。
9.函数返回值的类型是由 决定的。
10.有以下程序,其运行结果是 。
void main( )
{ char *s[ ]={"one","two","three"},*p;
p=s[1];
printf("%s\n",p+1);
}
三、程序阅读题(每题3分,共24分)
1.输入100,200回车后,下面程序执行结果是
#include<stdio.h>
void swap(int *,int *);
int main()
{
int a, b, *pa=&a, *pb=&b;
scanf(“%d,%d”,&a,&b);
swap (pa,pb);
printf(“*pa=%d,*pb=%d\n”,*pa,*pb);
printf(“a=%d,b=%d\n”,a,b);
return 0;
}
void swap (int *p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
2.下面程序的运行结果是
#include<stdio.h>
void inv(int x[], int n);
int main()
{ int i,a[10]={1,2,3,4,5,6,7,8,9,10};
inv(a,10);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void inv(int x[], int n)
{ int t,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{
j=n-1-i;
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
3.以下程序运行后的输出结果是 。
#include<stdio.h>
int fun(int);
int main()
{
int i,a=5;
for(i=0;i<3;i++)
printf("%3d",fun(a));
printf("\n");
return 0;
}
int fun(int a)
{ int b=0;
static int c=3;
b++;
发布评论