试卷1
一、选择题(共20题,每题2分,共40分)
1、设有说明语句:char a= '\72abc';则变量a (          )
    A) 包含6个字符        B) 包含5个字符        C) 包含4个字符        D) 说明不合法
 
2、在C语言中,数字029是一个(       
    A)八进制数             B)十六进制数          C)十进制数            D)非法数
 
3、有如下程序
main( )
{ int y=3x=3z=1
printf("%d %d\n"(++xy++)z+2)}
运行该程序的输出结果是(         
A3 4                B4 2                 C4 3                 D3 3
 
4、有如下程序段
int a=14b=15x
char c='A'
x=(a&&b)&&(c<'B')
执行该程序段后,x的值为(         )
Ature                Bfalse                    C0                D1
 
5、如下程序
main( )
{ int x=1a=0b=0
switch(x)
{ case 0b++
case 1a++
case 2a++b++
}
printf("a=%db=%d\n"ab)
}
该程序的输出结果是(       
Aa=2b=1            Ba=1b=1            Ca=1b=0            Da=2b=2
 
6、
main( )
{ int ij
for(i=0j=1 i<=j+1 i+=2 j--) printf("%d \n"i)
}
以上循环体的执行次数是(         )
A3            B2        C1            D0
 
7、设有数组定义:char array [ ]="China" 则数组 array所占的空间为(         )
A4个字节        B5个字节        C6个字节printf函数属于         D7个字节
 
8、C语言的编译系统对宏命令是(          )
      A)在程序运行时进行代换处理的
      B)在程序连接时进行代换处理的
      C)和源程序中其它C语句同时进行编译的
      D)在对源程序中其它成份正式编译之前进行处理的
 
9、以下说法中正确的是(        )。
AC语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main( )中有定义
CC语言程序的执行既可以采用解释方式,也可以采用编译方式
DC语言程序中的main( )函数可以不放在程序的开始部分
 
10、下面程序的输出是(            )
    #define SUB(XY)  (X)*Y
    main( )
    {int a=3b=4
      printf("%d\n"SUB(a++b++))
    }
      A12            B15                C16                D20
 
11、设有如下定义:
char  *aa[2]={abcd,ABCD};则以下说法中正确的是( 
Aaa数组元素的值分别是abcd,ABCD
Baa是指针变量,它指向含有两个数组元素的字符型一维数组
Caa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
Daa数组的两个元素中各自存放了字符’a’,’A’的地址
 
12、若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c);a赋于10.0b赋予22.0c赋予33.0,不正确的输入形式是:(   
A) 10<回车>          B) 10.0,22.0,33.0<回车>
  22<回车>
  33<回车>
C) 10.0<回车>        D) 10 22<回车>
  22.0 33.0<回车>      33<回车>

13、当调用函数时,实参是一个数组名,则向函数传送的是(    )
A) 数组的长度    B) 数组的首地址  C) 数组每一个元素的地址  D) 数组每个元素中的值
 
14、有以下函数
char *fun(char *p)
{ return p; }
该函数的返回值是(         )
A) 无确切的值 B) 形参p中存放的地址值
B) 一个临时存储单元的地址 D) 形参p自身的地址值
 
15 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是(    )
A) &t[3][2]  B) t[3][2]  C) t[1][0]  D) t[2]+1
 
16、以下程序的输出结果是(         ) 
A#*#*#                B>            C)*****            D*#*#*
main( )
{ int i
for(i=1i<6i++)
{ if(i%2)  {printf("#")continue}
printf("*")
}
printf("\n")
}
17、已知有声明语句char s1[10]= abcde,s3[10];以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是       
    A.s3=s1,s1=s2,s2=s3
    B.s3[0]=s1[0],s1[0]=s2[0],s2[0]=3[0]
    C.strcpy(s3[0],s1[0]),strcpy(s1[0],s2[0]),strcpy(s2[0],s3[0])
D.strcpy(s3,s1),strcpy(s1,s2),strcpy(s2,s3)
 
18、若有声明语句int a[10],b[3][3];则以下对数组元素赋值的操作中,不会出现越界访问的是          ___   
A.a[-1]=1            B.a[10]=0            C.b[3][0]=0                D.b[0][0]=0
 
19、以下是一个自定义函数的头部,其中正确的是     
  A.int fun(int a[ ],b)                    B.int fun(int a[ ],int a)
  C.int fun(int *a,int b)                    D.int fun(char a[ ][ ],int b)
 
20、下列4个函数中,(        )能实现交换变量值的功能。
A    void fun_a(int x,int y)            B    void fun_b(int *x,int *y)
    {    int *p;                        {    int *p;
            *p=x;x=y;y=*p;}                *x=*y;*y=*x;}
C    void fun_c(int *x,int *y)            D    void fun_d(int x,int y)
    {    *x=*x+*y;                    {    int p;
        *y=*x-*y;                        p=x;x=y;y=p;
        *x=*x-*y;}                    }
   
二、填空题(每空2分,共26分)
1、已知:int x=3;
printf(x%2?"**%d":"##%d\n",x);
printf("00000\n");
输出结果为:     
 
2、若有以下定义和语句,则通过指针p对值为8的数组元素的引用表达式是     
int  a[10]={1,2,3,4,5,6,7,8,9},*p;
p=&a[1];
 
3、下列程序的输出结果是       
#include "stdio.h"
main()
{char a[11]="0123456789",*p;
p=&a[4];
puts(p);}
 
4、求两数中的较大
main()
{ float a,b,max;
  scanf(%f%f,&a,&b);
                      ;
printf(the max is %f\n,max);
}
 
5、下列程序用于将从键盘输入的整数逆序输出
main( )
{ int n1n2
scanf("%d"&n2)
while(       )
{ n1=n2%10
n2=       
printf("%d"n1)}
}
 
6、下面的程序输出31000之间的所有素数,且每5个一行。
main( )
{int i,j;
int b=0,c=0;
for(i=3;i<=1000;i++)
{ for(j=2;j<=i-1;j++)
if (         )  {b=1;break;}
        if (!b)
{ c++;printf(%4d,i);
  if (          ) printf(\n);
}
      }
      }
 
7、利用插入排序法将十个字符从小到大排序
#include
void insert(char s[])
{
  int i,j,t;
  for (i=1;i<=9;i++)
  {t=s[i];j=i-1;
  while ((j>=0)&&(            ))
  { s[j+1]=s[j];                      ;}
  s[j+1]=t;
  }
}
 
main()
{
  char a[11];int i;
  for (i=0;i<10;i++)  a[i]=getchar();
                           
  insert(a);
puts)a);
}
 
8、用递归法将一个整数n转换成字符串。如输入整数483,则输出字符串“483”。
void convert(n)
int n;
{ int k;
  if ((k/10)!=0) convert(   );
  putchar(n%10+'0');
}
main()
{ int num;
  printf("\n输入整数:”)
  scanf("%d",&num);
  printf("\n输出是:");
  if (num<0) {putchar('-');num=-num;}
          ;
}
 
三、判断题(每题2分,共20分)
(  )1、在对某一函数进行多次调用时,系统会对相应的自动变量重新分配存储单元。
(  )2、在C语言的复合语句中,只能包含可执行语句。           
(  )3、自动变量属于局部变量。
(  )4、一个函数利用return只能返回一个函数值。
(  )5、在程序运行过程中,系统分配给实参和形参的内存单元是不同的。
(  )6、用scanf输入字符时,字符串中不能包含空格。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。