C语言试题及答案解析(二)
班级                    姓名                学号____________
题号
总得分
评卷人
审核人
得分
一、选择题(20分)
1.1966年,Bohra和Jacopini提出的三种基本程序设计结构是:________
A.if、while和for;  B. switch、do-while和for;
C.while、do-while和for;D.顺序结构、分支结构和循环结构。
2.算法的特征不包括:______。
A.有穷性    B.可行性    C.确定性  D.有1个或者多个输入。
3.C语言源程序的基本组成单位是______。
A.函数    B. 语句    C. 声明和语句    D. 文件
4.下列标识符中,只有______是合法的。
A.if    B.  3ab    C.  Int    D.  A-4
5.下列常量中,只有______是合法的。
A.3e-0.3    B.  ‘abc’    C.  02a1  D.  ‘\377’
6.下列说法中正确的是:______。
A.C语言中的for语句的三个表达式都可以省略,而且分号也可以省略。
B.宏替换比函数调用的执行速度慢。
C.实质上,C语言中的指针就是一个变量的地址。
D.C语言中的任何函数都可以由程序员命名。
7.C语言中,运算对象必须是整型的运算符是_______。
A./    B.  %    C.  +  D.  -
8.以下叙述中错误的是_______。
A.C语句必须以分号结束
B.复合语句在语法上被看作一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
9.以下叙述中正确的是_______。
A.调用printf函数时,必须要有输出项
    B.使用putchar函数时,必须在之前包含头文件stdio.h
    C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
    D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
10.以下关于函数的叙述中正确的是_______。
A.每个函数都可以被其它函数调用(包括main函数)
    B.每个函数都可以被单独编译
    C.每个函数都可以单独运行
    D.在一个函数内部可以定义另一个函数
11.有以下程序段
    typedef struct NODE{
int  num;
struct NODE  *next;
    } OLD;
以下叙述中正确的是_______。
    A.以上的说明形式非法
    B.NODE是一个结构体类型
    C.OLD是一个结构体类型
    D.OLD是一个结构体变量
12.以下叙述中错误的是_______。
A.C语言中对二进制文件的访问速度比文本文件快
    B.C语言中,随机文件以二进制代码形式存储数据
    C.语句 FILE  fp; 定义了一个名为fp的文件指针
    D.C语言中的文本文件以ASCII码形式存储数据
13.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是_______。
A.k%2    B.  k%2==1  C.  (k%2)!=0    D.!k%2==1
14.以下不能正确计算代数式值的C语言表达式是_______。
A.1/3*sin(1/2)*sin(1/2)    B.sin(0.5)*sin(0.5)/3
    C.pow(sin(0.5),2)/3      D.1/3.0*pow(sin(1.0/2),2)
15.以下能正确定义且赋初值的语句是_______。
A.int  n1=n2=10;    B.char  c=32;
C.float  f=f+1.1;      D.double  x=12.3E2.5;
16.以下程序的功能是:当a<b<c时,以八进制形式输出a、b、c的值。
#include <stdio.h>
void main()    /*  Beginning  */
    { int  a,b,c;
  scanf(“%d%d%d”,&a,&b,&c);
  if (a<b<c) printf(“%o%o%o”,a,b,c);
    }
程序不能得到正确结果的的原因是_______。
    A.注释语句书写位置错误
    B.a、b、c不能以八进制进行输出
    C.没有按照八进制进行输入
    D.if语句的条件表达式错误
17.设有定义:int  k=1,m=2;  float  f=7;,则以下选项中错误的表达式是_______。
A.k=k>=k    B.-k++    C.k%int(f)    D.k>=f>=m
18.设有定义:int  a=2,b=3,c=4;,则以下选项中值为0的表达式是_______。
A.(!a==1)&&(!b==0);    B.(a<b)&& !c||1;
C.a && b;          D.a||(b+b)&&(c-a)
19.有以下程序段
        int  k=0,a=1,b=2,c=3;        k=a<b ? b:a;    k=k>c ? c:k;
执行该程序段后,k的值是_______。
    A.3      B.2      C.1    D.0
20.设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句
        if (a<b)
          if(c==d)  y=0;
c语言和c++区别
          else  y=1;
该语句所表示的含义是_______。
    A.
    B.
    C.           
D.
二、阅读程序,写出下列程序的运行结果。(20分)
1、已知字母A的ASCII码为65。
#include <stdio.h>
void main(){
char a, b;
        a='A'+'5'-'3'; b=a+'6'-'2' ;
        printf("%d  %c\n", a, b);
    }
2、#include <stdio.h>
void f(int v, int w) {
int t;
t=v;v=w;w=t;
}
void main(){
int x=1,y=3,z=2;
if (x>y)          f(x,y);
else if (y>z)        f(y,z);
else                f(x,z);
printf(“%d,%d,%d”,x,y,z);
}
3、#include <stdio.h>
void main(){
int a[4][4]={{3,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,12,-33,0}};
  int i,j,s=0;
  for(i=0;i<4;i++)
  { for(j=0;j<4;j++)
    { if(a[i][j]<0) continue;
    if(a[i][j]= =0) break;
    s+=a[i][j];
    }
  }
  printf("%d\n",s);
}
4、#include <stdio.h>
void main(){
  int a=100,b=10;
  int *p1=&a, *p2=&b;
  *p1=b;    *p2=a;
  printf(“%d, %d,”,a,b);
  printf(“%d, %d\n”,*p1,*p2);
}
三、程序改错:出下列程序存在的错误,并进行改正。(20分)
1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。
    #include <stdio.h>
    #define PI 3.1415926
void main(){
  int  r;
  float  s;
  scanf("%d",r);
  s=PI*r^2;
printf("s=%f\n",s);
}
2、以下程序用于计算一个一维数组各元素平方根的和。
#include <stdio.h>
#include <math.h>
void main(){
    int a[10],i;
    float sum;
    for (i=0;i<=10;i++)
        scanf(“%d”,&a[i]);
i=0;
while (i<=9)){
    sum+=sqrt(a[i]);
    i++;
}
}
3、以下程序用于通过指针对数组进行输入和输出
#include <stdio.h>
void main(){
    int a[10];

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