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

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

C语言试题库: 试卷九

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

一、选择题(共20题,每题2分,共40分)
1、有以下定义:
 int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}
 int (*ptr)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是(   )。
A)*((*ptr+1)[2])     B)*(*(p+5))
C)(*ptr+1)+2     D)*(*(a+1)+2)

2、# include <stdio.h>
 void main ( )
 { int a[3][3]={1,2,3,4,5,6,7,8,9};
  int s=0,i;
  for (i=0;i<3;i++)
   s+=(*(a+i))[i];
  printf("%d",s);
 }
A)9  B)12  C)14  D)15
3、设有说明语句:char a= '\123abc';则变量a (    )
A) 包含7个字符  B) 包含6个字符     C) 包含5个字符   D) 包含4个字符

4、有以下程序段
int k=0
while(k=1)k++;
while 循环执行的次数是(    )
A) 无限次    B) 有语法错,不能执行   C) 一次也不执行    D) 执行1次

5、在C语言中,(   )。
A)函数定义可以嵌套,但函数调用不能嵌套
B)函数定义不可以嵌套,但函数调用可以嵌套
C)函数定义和调用均不能嵌套
D)函数定义和调用均可以嵌套
6、以下叙述正确的是(    )
A)do-while语句构成的循环不能用其它语句构成的循环代替。
B)do-while语句构成的循环只能用break语句退出。
C)用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D)用do-while语句构成的循环,在while后的表达式为零时结束循环。
7、若有声明语句char ch='a',*pc=&ch;以下语句中,有语法错误的是           。
    A.(*pc)++    B.ch+=-'a'+'A';      C.toupper(ch)=ch; D.ch++;
8、以下关于函数叙述中,正确的是           。
    A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
    B.在函数体中至少必须有一个return 语句
    C.在函数体中可以定义另一个函数
    D.在函数体中可以调用函数自身
9、以下数组声明语句中正确的是    。
A.int a,a[n];       B.int a[ ];
  C. int a[2][3]={{1},{2},{3}};   D.int a[ ][3]={{1},{2},{3}};
10、以下程序执行后的结果是(  )
A)9    B)程序出错     C)死机     D)15
#include <stdio.h>
#define  AREA(x,y)  x*y;
main()
{int i;
i=AREA(3+2,3)
printf("%d",i);}

11、以下程序的输出结果是(  )
  main( )
  {int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
   for(i=0;i<3;i++)
for(j=i;j<=i;j++)
 t=t+b[j][j]];
   printf("%d\n",t);
   }
 A)3    B)4    C)1    D)9
12、以下不能正确进行字符串赋初值的语句是(  )
  A)char str[5]= "good!";   B)char str[ ]= "good!";
  C)char *str="good!";   D)char str[5]={ 'g','o','o','d'};
13、以下关于switch语句和break语句的描述中,只有(   )是正确的。
A)在switch语句中必须使用break语句
B)在switch语句中,可以根据需要使用或不使用break语句
C)break语句只能用于switch语句中
D)break语句是switch语句的一部分
14、判断变量ch中的字符是否为数字字符,最简单的正确表达式是(   )。
A)ch>=0&&ch<=9    B)'0'<=ch<='9'
C)ch>='0'||ch<='9'    D)ch>='0'&&ch<='9'
15、若执行以下程序时从键盘上输入9,则输出结果是(  )
A)11      B)10    C)9    D)8
main( )
{ int n;
scanf("%d",&n);
if(n++<10)  printf("%d\n",n);
else printf("%d\n",n--);
}
16、若w=1,x=2,y=3,z=4;则条件表达式w>x?w:y<z?y:z的结果是(  )
A)4    B)3    C)2   D)1
17、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后y的值为(  )
A)不定值    B)4     C)3    D)1
18、以下程序的输出结果是(   )
  main( )
   {int x=023;
printf("%d\n",--x);
     }
    A)18     B)22     C)23     D)19
19、下列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;     }
 }
20、以下所列的各函数首部中,正确的是(    )
A) void play(var :integer,var b:integer)
B) void play(int a,b)
C) void play(int a,int b)
D) Sub play(a as integer,b as integer)
 

二、填空题(每空2分,共26分)
1、判断n是否是素数,若是,则返加1,否则返回0
int prim(int n)
{ int m;
  for (m=2;m<=n/2;m++)
   if                   
     return 0;
             ;
}
2、下述程序段是要实现在数组中查找最大元素和最小元素的下标,
# include <stdio.h>
 void find(int *a,int n,int *max,int *min)
 { int i;
  *max=*min=0;
  for(i=1;i<n;i++)
  if(a[i]>a[*max])
                ;
   else
     if(a[i]<a[*min])
              ;
  return;
 }
void main( )
 { int a [ ]={5,8,7,6,2,7,3};
  int max,min;
  find(        );
  printf("\nmax=%d,min=%d",max,min);
 }
3、下面的程序当输入为字符串"qwert?"时的输出结果是         
Main()
{ char c;
  while((c=getchar())!='?') putchar(++c);
}

4、假设有如下语句:
int a;float b,c;
scanf("%2d%3d%4f",&a,&b,&c);          
printf("\na=%d,b=%f,c=%f\n",a,b,c);
若从键盘输入:9876543210
 则输出应为:           

5、下面的函数用于实现将一个字符串按逆序存放。
Void convert(char s[])
{ char m;int i,j;
  for (i=0,j=strlen(s);i<             ;i++,j++)
  {
m=s[i];
s[i]=                      ;
s[j-1]=m;
}
printf("%s\n",s);
}
6、以下函数fun的功能是用选择排序法对数组的数据按从小到大的顺序排列。
void fun(int a[ ],int n)
{int i,j,k,temp;
 for(i=0;i<n-1;i++)
 { k=i;
   for(j=i+1;           ;j++)
    if(a[j]<a[k])  k=j;
   if(                  )
   {temp=a[k];
    a[k]=a[i];
    a[i]=temp;
    }
   }
  }
7、函数fun,其功能是求两个整数的最大公约数
fun(int x,int y)
{int a,b,t,r;
 a=x;
 b=y;
 while(          )
 {a=b;
            
  }
  return (b);
  }
8、 以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。
#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0;i<N;i++)
{ p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j])      ;  
printf("The max value in line %d is %d\n", i,x[i][p]);
}}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
          ;
}

三、判断题(每题2,共20分)
(  )1、C语言允许在复合语句内定义自动变量。
(  )2、全局变量可以和局部变量重名,且全局变量优先。
(  )3、若一个函数的返回类型为void,则表示其没有返回值。
(  )4、在程序运行过程中,系统分配给实参和形参的内存单元是相同的。
(  )5、对于Continue 和break这两条语句,只有break可用来实现循环体的中止。
(  )6、已知:char c='A';int i=1,j;执行语句j=!c&&i++;则i和j的值分别是0,1
(  )7、所有定义在主函数之前的函数无需进行声明。
(  )8、&既可以用作单目运算符也可以用作双目运算符
(  )9、宏定义和文件包含都是C语言中的编译预处理命令,对它们的处理是在编译前完成的。
(  )10、一个函数利用return不可能同时返回多个值。


四、编程题:(14分)
编程打印如下的杨辉三角形,具体要求如下:
(1)从主函数中输入欲打印的杨辉三角形行数;
(2)用子函数实现杨辉三角形的显示;

1
1   2    1
1  3    3  1
1  4   6   4  1
1 5  10    10   5   1
1  6  15   20   15   6    1
……

最佳教程网

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

浙ICP备11033019号