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

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

C语言试题库: 试卷五

更新时间:2013-03-25 22:39:01 |

试卷五

一、选择题(1-20每小题2分,共40分)
(1) 在C语言中,如果下面的变量都是int类型,则输出的结果是 (   ) 。
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf("%d\n",pad);
 A) 7 B) 6 C) 5 D) 4

(2) 以下程序的输出结果是 (    ) 。
# include <stdio.h>
main()

int i=010 , j = 10;
   printf("%d,%d\n",+ +i , j - -);
}
 A) 11,10 B) 9,10 C) 010,9 D) 10,9

(3) 已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是 (   ) 。
# include <stdio.h>
main()

char c1='A', c2='Y';
   printf("%d,%d\n",c1,c2);
}
A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,89

(4) 语句while(!E);中的条件!E等价于 (   ) 。
 A)E = = 0 B)E!=1 C)E!=0 D)~E

(5) 以下程序的输出结果是 (   )。
# include <stdio.h>
main()
{
printf("%d\n",NULL);
}
 A) 不确定的(因变量无定义) B)0 C)-1 D)1

(6) 以下函数调用语句中含有(   )个实参。
func((exp1,exp2),(exp3,exp4,exp5));
 A) 1 B) 2 C) 4 D) 5
(7) 下面的程序中 (    )有错误(每行程序前面的数字是行号)。
1 #include <stdio.h>
2 main()
3 {
4 float a[3]={0,0};
5 int i;
6 for(i=0;i<3;i + + ) scanf("%d",&a[i]);
7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i];
8 printf("%f\n",a[0]);
9 }
 A) 没有 B)第4行 C)第6行 D)第8行

(8) 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是(   ) 。
 A)3 B)0 C)9 D)-12

(9) 以下的for循环 (   ) 。
for(x=0,y=0; (y!=123)&&(x<4); x + + );

A) 是无限循环 B)循环次数不定 C)执行4次 D)执行3次

(10) 设有语句char a='\72';则变量a (   ) 。
A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法

(11) C语言中 (    ) 。
A)不能使用do-while语句构成的循环
B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环

(12) 以下程序的输出结果是 (    ) 。
# include <stdio.h>
# include <string.h>
main()
{
char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A) 6 B) 7 C) 11 D) 12

(13) 以下程序的输出结果是 (   ) 。
# include <stdio.h>
main()
{  
int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
}
A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d

(14) 以下程序的输出结果是 (    ) 。
# include<stdio.h>
main()
{  
int a ,b,d=241;
   a=d/100%9;
   b=(-1)&&(-1);
   printf("%d,%d\n",a,b);
}
A) 6,1 B) 2,1 C) 6,0 D) 2,0

(15) 以下for语句构成的循环执行了 (   ) 次。
# include <stdio.h>
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{
int i , n=0;
for ( i=1;i<=NUM;i + + );
{  
n + + ;
printf("%d",n);
}
printf("\n");
}
A) 5 B) 6 C) 8 D) 9

(16) 设有以下语句,则(   )不是对a数组元素的正确引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))

(17) 以下程序的输出结果是 (    ) 。
# include<stdio.h>
main()
{
 int i=1,j=3;
printf("%d",i + + );
{ int i=0; i+=j*2; printf("%d,%d",i,j); }
printf("%d,%d\n",i,j);
}
A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3

(18) 以下程序的输出结果是(   ) 。
# include <stdio.h>
main()

int k=4,m=1,p;
p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p);
}

func(int a,int b)
{
static int m=0,i=2;
i+=m+1; m=i+a+b;
return(m);
}
A) 8,17 B) 8,16 C) 8,20 D) 8,8

(19) 设有以下语句:
char str1[]="string",str2[8],*str3,*str4="string";
则 (   ) 不是对库函数strcpy的正确调用,此库函数用业复制字符串。
A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");

(20) C语言中形参的缺省存储类别是 (  ) 。
A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern)

二、 填空题(每空5分,共30分)
(1) 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。
#include <stdio.h>
main()
{  
int i,a[10],*p=a,sum=0;
    printf("Enter 10 num:\n");
    for(i=0;i<10;i + + ) scanf("%d",&a[i]);
    for(i=0;i<10;i + + )
       if(isprime(*(p+ ____(1)_____ )) = = 1)
{
printf("%d",*(a+i));
sum+=*(a+i);
}
printf("\nThe sum=%d\n",sum);
}
isprime(int x)
{
int i;
for(i=2;i<=x/2;i + + )
if(x%i = = 0)
return (0);
 ______(2)______;
}
(2) 以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。
#include <stdio.h>
#define N 10
invert(int *s,int i,int j)
{
int t;
if(i<j)
{
t=*(s+i);
*(s+j)=(s+j);
*(s+j)=t;
invert(s, ___(3)___ ,j-1);
}
}
main()
{
int a[N],i;
for(i=0;i<N;i + + ) scanf("%d",a+ ____(4)___ );
invert(a,0,N-1);
for(i=0;i<N;i + + ) printf("%d",a[i]);
printf("\n");
}
(3)  以下程序的功能是将字符串a中下标值为偶数的元素由小到大排序,其他元素不变.
#include <stdio.h>
main()
{
char a[ ]="labchmfye",t;
int i,j;
for(i=0;i<7;i+=2)
   for(j=i+2;j<9;____(5)___)
       if(____(6)____)
       {
     t=a[i];
a[i]=a[j];
a[j]=t;
j++;
}
puts(a);
printf("\n");
}

三、 阅读程序题(每题5分  共20分)
(1) 阅读下列程序:
#include<stdio.h>
main()
{
int i, j, row, column,m;
static int array[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
m=array[0][0];
for (i=0; i<3; i++)
   for (j=0; j<3; i++)
      if (array[i][j]<m)
      {
m=array[i][j]; row=i; column=j;
}
printf("%d,%d,%d\n",m,row,column);
}
上述程序的输出结果是 _________ 。
(2) 下面程序的输出结果是 _______ 。
#include<stdio.h>
main()
{
 int a=3, b=2, c=1;
c-=++b;
b*=a+c;
{  int b=5, c=12;
   c/=b*2;
   a-=c;
   printf( '%d,%d,%d,",a,b,c);
   a+=--c;
}
printf( '%d,%d,%d,",a,b,c);
}
(10) 请读程序 。
#define PR(ar) printf("%d", ar)
main()
{ int j, a[]={ 1,3,5,7,9,11,13,15}, *p=a+5;
for(j=3; j; j--)

switch(j)
{ case 1:
  case 2: PR(*p++); break;
  case 3: PR(*(--p));
}
}
}上面程序的输出结果是__________.
(4) 下面程序的输出是__________ 。
long fun5(int n)

long s;
if((n==1)||(n==2))
    s=2;
else
    s=n+fun5(n-1);
return(s);
}
main()
{   long x;
    x=fun5(4);
    printf("%ld\n",x);
}

四、 程序题(10分)
1. 输入两个整数,求他们相除的余数,用带参数的宏来编程实现.

最佳教程网

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

浙ICP备11033019号