加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言程序设计试卷2套

(2011-02-16 08:32:07)
标签:

c语言

程序段

数学表达式

变量

程序设计

教育

分类: 试卷题库

C语言程序设计试卷2套

笔试样卷(一)
一.单选题(每题1分,共20分)
1.C语言程序的三种基本结构是顺序结构、( )结构和循环结构.
A.选择     B.递归     C.转移     D.嵌套
2.以下选项中不正确的整型常量是( ).
A.0        B.029     C.20L      D.-1234
3.在C语言程序中,用关键字( )定义短整型变量.
A.short    B.float    C.double  D.char
4.若变量已正确定义并赋值,符合C语言语法的表达式是( )。
A.a=3,5; B.a+=1     C.a=a+1=3  D.12.3%4
5.在a是单精度实型变量,c是基本整型变量,以下正确的输入语句是( ).
A.scanf(“%f%d”,a,c);   B.scanf(“%f%d”,&a,&c);
C.scanf(“%f%f”,&a,&c); D.scanf(“%d%f”,&a,&c);
6.在C程序中,用( )表示逻辑值“真”.
A.true  B.非0的数  C.非0整数    D.大于0的数
7.在C语言中,数字029是一个( )。
 A、八进制数 B、十六进制数 C、十进制数 D、非法数
8.数学表达式30≤age<40的C语言表达式为( )。
 A、30≤age<40 B、30<=age<40 C、30<=age && age<40 D、30<=age ||age<40
9.数学表达式3.5+8%5-3/6的结果是( )。
A、6.5      B、6.0     C、4.5    D、4.0
10.若变量已正确定义且k的值是4,计算表达式(j=k--)后,( )是正确的。
A、j=4,k=4   B、j=4,k=3    C、j=3,k=4    D、j=3,k=3
11、不属于C语言保留字的是( )
 A、for    B、goto    C、if    D、loop
12、正确的C语言自定义标识符是( )
 A、num(10)    B、file_bak    C、continue    D、class+2
13、对于输入语句scanf("%f,%f",&a,&b);要使变量a,b的值分别为1.78和2.48,则正确的输入是( )
 A、1.78,2.48后跟回车    B、1.78 2.48后跟回车
 C、1.782.48后跟回车     D、1.78;2.48后跟回车
14、在下列选项中,没有构成死循环的程序段是( )
A、int i=100
while(1)
 {i=i0+1;
if(i>100)break;}
B、for(;;);
C、int k=1000;
 do{++k;}while(k>=10000);
D、int s=36;
 while(s);--s;
15、如果a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?c:d的值为( )
A、1    B、2    C、3    D、4
16.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( )
      #include “stdio.h”
void main( )
      { int x;
        scanf("%d",&x);
        if(x++>5 ) printf("%d",x);
        else printf("%d\n",x--);
      }
   A. 7和5      B. 6和3     C. 7和4     D. 6和4
17.以下程序段的输出结果是( )
      int x=3;
      do
        printf("=",x-=2);}
      while(!(--x));
   A. 1         B.3 0         C. 1 -2         D.死循环
18.执行下面的程序后,a的值为( )
      #include "stdio.h"
void main()
{
 int a,b;
         for (a=1,b=1;a<=100;a++) {
if(b>=20)break;
             if(b%3==1) {
                  b+=3;   continue;
               }
b-=5;
          }
printf("%d\n",a);
       }
    A. 7         B. 8        C. 9          D. 10
19.设a、b、c都是int型量,且a=3,b=4,c=5,则以下的表达式中,值为0的是( )
A.       a&&b
B.       a<=b
C.       a||b+c&&b-c
D.!((a<b)&&!c||1)
20.若i、j已定义为int类型,则以下程序段能输出*的个数是( )
      for (i=5;i;i--)
        for(j=0;j<4;j++) printf("*");
A. 20        B. 25        C. 24       D. 30
 
二.填空题(每空1分,共10分)
1、表达式(5-1 && 3+5/2)的值是_________。 表达式(5==5==5)的值为__________。
2、表达式(float)(7/2)>3.5?(c=2,c+2):3的值为_____。
   将数学表达式 |a-b|(ax2+bx+c)转化为C的表达式为__________。
3、C语言中,存储字符串”China”以_______作为结束的标志,共占用_______个字节。
4、设 int j,k; 执行for(j=k=3;j-1;k+=j--) ;后k的值是     
5、字符串“abÂc\t\xf3\n”(Â表示空格)的长度为      
6、设int x=4;表达式x+=x*=x+1的值是       
7、当s=7时,执行以下程序段后x=______。
if((s>0)&&(s<=10))
if((s>=3)&&(s<=6))x=2;
else if((s>1)||(s>8))x=3;
else x=1;
else x=0;
 
三.读程序、写结果题(每题4分,共32分)
1.下列程序段的输出结果是___________.
#include "stdio.h"
void main()
{
int x=-10,y=1;
if(x>=0)
   if(x>0)y=0;
else y=-1;
printf(“%d”,y);
}
2.执行以下程序的输出显示是          
#include "stdio.h"
void main()
{
int a=10,b=0;
if (a=12) {
a=a+1; b=b+1;
}
else{
a=a+4; b=b+4;
}
printf("%d:%d\n",a,b);
}
3.下列程序段的输出结果是___________.
#include "stdio.h"
void main()
{
int n=6;
switch(n)
case 1:n=1;break;
 case 2:n=2;break;
 case 3:n=3;break;
default:n=4;
}
printf("%d",n);
}
4.下列程序段的输出结果是___________.
#include "stdio.h"
void main()
{
int k=0;
if(!(k==1))printf("***");
else printf ("###");
}
5.下列程序段的输出结果是___________.
#include "stdio.h"
void main()
{
int i,x,y;
i=x=y=0;
do {
++i;
if (i%2!=0) {x=x+i;i++;}
y=y+i++;
}while (i<=7);
printf("x=%d,y=%d\n",x,y);
}
6. 下列程序段的输出结果是___________.
#include "stdio.h"
void main()
{
   int i, k=19;
   while (i=k-1) {
     k-=3;
if (k%5==0) {i++;continue;}
else if (k<11) break;
i++;
   }
   printf("i=%d,k=%d\n",i,k);
}
7. 下列程序段的输出结果是___________.
#include "stdio.h"
void main()
{
char c;
while ((c=getchar())!='\n')
switch(c)
{
case'0':
case'1':putchar(c);
case'2':putchar(c);break;
case'3':putchar(c);
default:putchar(c+1);break;
}
printf("\n");
}
输入:1357<回车>
8. 下列程序段的输出结果是___________.
#include "stdio.h"
void main()
{
int i,j;
for(i=4;i>=1;i--){
  for(j=1;j<=i;j++)
      printf("*");
    printf("\n");
}
 }
 
四.程序填空题(每空2分,共8分)
1.以下程序的功能是:输入一行字符,统计其中的字母、空格、数字及其它字符的个数。请补充完整。
#include <stdio.h>
void main()
{
 char c;
 int letter=0,space=0,digit=0,other=0;
 printf("请输入一行字符:\n");
 while((           )!='\n')
 {
     if ( ________ ) letter++;
     else if (c==' ') space++;
     else if (c>='0'&&c<='9') digit++;
     else other++;
 }
 printf("字母数:%d,空格数:%d,数字数:%d,其它字符:%d",letter,space,digit,other);
}
2.以下程序的功能是:用∏/4≈1-1/3+1/5-1/7+﹍公式求∏的近似值,直到某一项的绝对值小于10-6为止。请补充完整。
#include <stdio.h>
               
void main()
{
int s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1;
while (fabs(t)>1e-6) {
pi=pi+t;
   n=n+2;
   s=-s;
                  ;
 }
printf("PI=%.6f",pi*4);
}
 
五.程序设计题(1题6分,其它题8分,共30分)
1.输入圆的半径,计算圆周长、面积,并输出计算结果,要求输出结果保留2位小数。
2.输入三角形的三边,输出其为什么样的三角形(等边、等腰、一般)。
3. 有一个分数序列
2/1,3/2,5/3,8/5,13/8,21/13,…
求出这个数列的前20项之和。
4. 求大于50的第一对孪生素数。所谓孪生素数是指相邻两个都是素数的奇数。

笔试样卷(二)
一.单选题(每题1分,共20分)
1. 在一个C程序中(  
A. main函数必须出现在所有函数之前   B. main函数可以在任何地方出现
C. main函数必须出现在所有函数之后   D. main函数必须出现在固定位置
2.以下叙述中正确的是(  
A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
3. 以下不能定义为用户标识符的是(   )
A.scanf     B.Void      C._3com_     D.int
4. 有以下程序
void main()
{ int i=10,j=1;
 printf("%d,%d\n",i--,++j);
}
执行后输出结果是(    )
A. 9,2       B. 10,2       C. 9,1      D. 10,1
5. 在C语言的if语句中,用以决定分支流程的(   )
A.       只能用逻辑表达式或关系表达式
B.       只能用关系表达式
C.       只能用逻辑表达式
D.       可用任意表达式
6. 以下选项中非法的表达式是(    )
A. 0<=x<100         B. i=j==0
C. (char)(65+3)     D. x+1=x+1
7. 有以下程序
void main()
{ int a=1,b=2,m=0,n=0,k;
 k=(n=b>a)||(m=a<b);
 printf("%d,%d\n",k,m);
}
程序运行后的输出结果是
A.0,0     B.0,1     C.1,0     D.1,1
8. 有定义语句:int x, y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是(     )
A.11 12<回车>       B.11, 12<回车>
C.11,12<回车>        D.11,<回车>12<回车>
9. 以下程序段(     )
 x=-1;
 do {
x=x*x;
 }while(!x);
A.是死循环       B.循环执行两次       C.循环执行一次      D.有语法错误
10. 若t为int类型,进人下面的循环之前,t的值为0 ,
while( t=l )
{ ……}
则以下叙述中正确的是(   )
A. 循环控制表达式的值为0   B. 循环控制表达式的值为1
C. 循环控制表达式不合法    D. 以上说法都不对
11. 下面程序的输出是(    )
#include “stdio.h”
void main()
{ int y=9;
for(;y>0;y--)
if(y%3==0){
printf("%d",y--);
continue;
}
}
A.741       B.852     C.963     D.875421
12.以下程序的输出结果是(    )
#include “stdio.h”    
void main( )
{
int   a= -1,b=1;
 if((++a<0)&& ! (b-- <=0))
printf("%d %d\n",a,b);
else printf("%d %d\n",b,a);
}
A.-1     B.0 1   C.1       D.0   0
13. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(    )。
A.整型常量                           B.整型表达式
C.整型常量或整型表达式               D.任何类型的表达式
14.以下不能对二维数组a进行正确初始化的语句是(    )。
A.int a[2][3]={0};                     B. int a[][3]={{1,2},{0}};
C.int a[2][3]={{1,2},{3,4},{5,6}}; D. int a[][3]={1,2,3,4,5,6};
15.有以下程序
void main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
 while(i<7&&p[i]%2){k=k+p[i];i++;}
 printf("%d\n",k);
}
执行后输出结果是(    )
A. 58       B. 56      C. 45      D. 24
16.以下不正确的说法为(    )。
A.在不同函数中可以使用相同名字的变量       
B.形式参数是局部变量
C.在函数内定义的变量只在本函数范围内有效   
D.在函数内的复合语句中定义的变量在本函数范围内有效
17.有以下程序段:
int fl(int x,int y)
{ return x>y?x:y; }
int f2(int x,int y)
{ return x>y?y:x; }
void main()
{ int a=4,b=3,c=5,d,e,f;
 d=f1(a,b); d=f1(d,c);
 e=f2(a,b); e=f2(e,c);
 f=a+b+c-d-e;
 printf("%d,%d,%d\n",d,f,e);
}
执行后输出结果是(    )
A. 3,4,5      B. 5,3,4       C. 5,4,3      D. 3,5,4
18.下列选项中正确的语句组是(    )
A.char s[8]; s={"Beijing"};   B.char *s; s={"Beijing"};
C.char s[8]; s="Beijing";     D.char *s; s="Beijing";
19.有以下程序
void fun(char *a, char *b)
{ a=b; (*a)++; }
void main()
{ char c1='A',c2='a',*p1,*p2;
 p1=&c1; p2=&c2; fun(p1,p2);
 printf("%c%c\n",c1,c2);
}
程序运行后的输出结果是(   
A.Ab      B.aa      C.Aa      D.Bb
20. 设有如下定义
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));
二.填空题(每空1分,共10分)
1.算术表达式(int)(13.7+25.6)/4%4的结果值是          
2.当int x=2时,表达式x/=x+x的值是        
3.字符串"m\x43\\\np\102q"的长度是               
4.定义如下变量:int x=2,y=3; 则表达式(++x)*(--y)的值是       
5.执行以下程序后,输出'#'号的个数是          
#include <stdio.h>
void main()
{ int i,j;
 for(i=1; i<5; i++)
    for(j=2; j<=i; j++) putchar('#');
}
6.假设int类型变量占用4个字节,有定义int a[20]={2,3,4,5};则数组a在内存中所占字节数是             
7.执行下述程序的输出结果是_____________。
 #include <stdio.h>
 void main()
 {
    int arr[10],i,k=0;
    for (i=0;i<10;i++)
      arr[i]=i;
    for (i=1;i<4;i++)
      k+=arr[i]+i/2;
    printf("%d\n",k);
   }
8.如果某个函数在定义时,省略了函数类型,则默认的类型是            
9.以下程序在运行时输入
   10 20 30
   则输出结果是            
    #include <stdio.h>
    int func(int a,int b,int c)
    {
       return (a+b+c);
     }
    void main()
    {
       int x,y,z;
       printf("Enter x,y,z: ");
       scanf("%d%d%d",&x,&y,&z);
       z=func(x,x+y,func(x,x+y,z));
       printf("z=%d\n",z);
    }
10.设有如下变量说明语句
 int a[8]={44,55,12,42,94,18,6,67},*p=a;
 则通过指针变量p引用值为数组元素18的表达式是                
 
三.读程序、写结果题(每题4分,共32分)
1.下面程序的输出结果是          
#include 〝stdio.h〞
void main( )
{ int a,b;
   a=100;
   b=a++>100?a+100:a+200;
   printf("%d %d\n",a,b);
}
2. 下面程序的输出结果是          
#include "stdio.h"
void main( )
{
 int a=100,x=10,y=20,k1=5,k2=0;
 if(x<y)
    if(y!=10)
      if(!k1)
         a=1;
       else
        if(k2)   a=10;
   a=-1;
   printf("a=%d\n",a);
}
3.下面程序的输出结果是          
#include <stdio.h>
void main()
{ int x=1,y=0,a=0,b=0;
 switch(x)
 { case 1:
         switch (y)
          { case 0: a++;break;
            case 1:b++;break;
          }
     case 2: a++; b++;break;
     case 3: a++;b++;
}
printf("\na=%d,b=%d",a,b);
}
4.下面程序的输出结果是          
#include<stdio.h>
void main()
{
 int f1=1,f2=1,k;
for(k=1;k<=4;k++)
    {
printf("%d,%d",f1,f2);
        if(k%2==0)
            putchar('\n');
        f1=f1+f2;
        f2=f1+f2;
     }
}
5.下面程序的输出结果是          
#include <stdio.h>
void main()
{ int i,n[]={0,0,0,0,0};
 for(i=1;i<=4;i++)
 { n[i]=n[i-1]*2+1;
    printf("%d ",n[i]);
 }
}
6.下面程序的输出结果是          
#include <stdio.h>
void main()
{
     int i=0;
     char x[]="China";
     char y[]="Chinese";
     while (x[i]!='\0'&&y[i]!='\0')
       if (x[i]==y[i])
         printf("%c",x[i++]);
       else
         i++;
     printf("\n");
}
7.下面程序的输出结果是          
#include <stdio.h>
int a=5;
void fun(int b)
{ static int a=10;
 a+=b++;
 printf("%d ",a);
}
void main()
{ int c=20;
 fun(c);
 a+=c++;
 printf("%d\n",a);
}
8.下面程序的输出结果是          
#include <stdio.h>
void fun(int *a,int i,int j)
{ int t;
 if(i<j) {
    t=a[i];a[i]=a[j];a[j]=t;
    fun(a,++i,--j);
 }
}
void main()
{ int a[]={1,2,3,4,5,6},i;
 fun(a,0,5);
 for(i=0;i<6;i++)
    printf("%d",a[i]);
}
四.程序填空题(每空2分,共8分)
1. 以下程序的功能是:打印出所有的水仙花数。请补充完整。
#include <stdio.h>
void main()
{
 int i,j,k,n;
 printf("水仙花数是:");
 for(n=100;n<1000;n++)
 {
      i=n/100;
  j=               
  k=n;
  if (                           
       printf("M",n);
 }
}
2. 以下程序的功能是:接收从键盘输入的若干名学生成绩,统计并输出最高成绩和最低成绩,当输入成绩为负数时结束。请补充完整。
   #include<stdio.h>
   void main()
   { float x,fmax,fmin;
     scanf("%f",&x);
     fmax=fmin=x;
     while __________
     { if (x>fmax)
             fmax=x;
         else   if (_____________)
             fmin=x;
         scanf("%f",&x);
        }
        printf("\nmax=%f,min=%f",fmax,fmin);
       }
五.程序设计题(1题6分,其它题8分,共30分)
1. 有一个函数如下,写一个程序,输入x,输出y值。
y =

 
         (x<0)
       (0≤x<1)
   (x≥1)
 
 

 
 
 
 
 
2. 编程求1+2!+3!+...+10!。
3.编写程序计算一个4行5列的二维数组中每行最大值的和。要求二维数组元素通过键盘输入。
4. 编写一个函数,函数原型为:int ave(int a[],int n);该函数的功能是对含有n个元素的数组a求平均值。要求在主函数中输入数组元素,并输出平均值。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有