公告:本站提供编程开发方面的技术交流与分享,打造最佳教程网,希望能为您排忧解难!

C语言教程C语言试题库: 试卷八

C语言试题库: 试卷八

更新时间:2013-03-25 22:37:30 |

试卷八

一、选择题(共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=3,x=3,z=1;
printf("%d %d\n",(++x,y++),z+2);}
运行该程序的输出结果是(    )
A)3 4    B)4 2     C)4 3     D)3 3
4、有如下程序段
int a=14,b=15,x;
char c='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为(   )
A)ture    B)false     C)0    D)1
5、如下程序
main( )
{ int x=1,a=0,b=0;
switch(x)
{ case 0:b++;
case 1:a++;
case 2:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是(  )
A)a=2,b=1   B)a=1,b=1   C)a=1,b=0   D)a=2,b=2
6、
main( )
{ int i,j;
for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \n",i);
}
以上循环体的执行次数是(   )
A)3    B)2   C)1   D)0
7、设有数组定义:char array [ ]="China"; 则数组 array所占的空间为(   )
A)4个字节   B)5个字节   C)6个字节   D)7个字节
8、C语言的编译系统对宏命令是(          )
      A)在程序运行时进行代换处理的
      B)在程序连接时进行代换处理的
      C)和源程序中其它C语句同时进行编译的
      D)在对源程序中其它成份正式编译之前进行处理的
9、以下说法中正确的是(  )。
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main( )中有定义
C)C语言程序的执行既可以采用解释方式,也可以采用编译方式
D)C语言程序中的main( )函数可以不放在程序的开始部分
10、下面程序的输出是(    )
     #define SUB(X,Y)  (X)*Y
     main( )
     {int a=3,b=4;
      printf("%d\n",SUB(a++,b++));
     }
       A)12   B)15    C)16    D)20
11、设有如下定义:
char  *aa[2]={"abcd","ABCD"};则以下说法中正确的是(  )
A)aa数组元素的值分别是"abcd","ABCD"
B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa数组的两个元素中各自存放了字符'a','A'的地址
12、若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予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=1;i<6;i++)
{ 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 n1,n2;
scanf("%d",&n2);
while(       )
{ n1=n2%10;
n2=       ;
printf("%d",n1);}
}
6、下面的程序输出3到1000之间的所有素数,且每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 <stdio.h>
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输入字符时,字符串中不能包含空格。
(  )7、Continue 和break都可用来实现循环体的中止。
(  )8、若将C源程序经过编译、连接后生成可执行文件,则可直接在DOS系统下输入可执行文件名执行。
(  )9、字符常量的长度肯定为1。
(  )10、已知:char c=48;int i=1,j=10;执行语句j=!(c>j)&&i++;则i和j的值分别是1和0。


四、编程题:(14分)
编写程序,求1!+2!+……n!,要求从主函数输入n的值,用函数实现阶乘的计算,并通过函数值返回(请注意合理的类型选取)。

 

答案
一、选择题
1、c      2、d     3、D    4、D    5、A
6、C      7、C    8、D    9、D    10、A
11、C   12.B       13.B     14.B      15.D
16.A      17.D       18.D     19.C      20.C
二、填空题:
1、**300000      
2.  *(p+6)
3. 456789
4.max=a>b?a:b
5、n2!=0
n2/10
6、 i%j= =0;   c%5==0;
7、t<s[j]
j-
a[i]='\0';
8.  n/10   convert(num)
三、判断题
对,错,对,对,对,对,错,对,对,对
四、编程题

最佳教程网

最大的技术交流平台 www.goodxyx.com© CopyRight 2011-2013, All Rights Reserved

浙ICP备11033019号