南京信息工程大学试卷
2009 2010 学年 第 1学期 程序设计基础/C语言程序设计 课程试卷( A 卷)
本试卷共 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次         
本a
C.1次                                D.2次
8.下面程序执行的输出结果         
        #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分)
1.结构化程序设计的基本结构有顺序结构、分支结构和            结构。
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++;