C 语言考试

一、单选题:本题共15小题,每小题2分,共30分,在每小题给出的四个选项中,只有一项是符合题目要求的。

  1. 由C语言编写的代码程序( ) :::danger A. 可直接执行
    B. 是一个源程序
    B. 经过编译即可执行
    C. D. 经过编译解释才能执行 :::

  2. C语言源程序的扩展名为(  )

A .obj
B. .c
C. .exe
D. .cpp

  1. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(  )

A. 大写字母
B. 中划线
C. 数字字符
D. 下划线

  1. C源程序不能表示的进制为(  )

A. 八进制
B. 二进制
C. 十六进制
D. 十进制

  1. 以下选项中,能用作数据常量的是(  )

A. o115
B. 0118
C. 1.5e1.5
D. 115

  1. 在C语言中,以下关于运算符叙述错误的是(  )

A. 在C语言中,逗号运算符的优先级最低
B. 在C语言中,赋值运算符自右向左运算
C. 在C语言中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算
D. 在C语言中,++、--运算符可以改变变量的值

  1. 下列运算符中优先级最高的运算符是(  )

A. <=
B. =
C. %
D. &&

  1. 在C语言中,表达式10!=9的值为( )

A. 0
B. False
C. 1
D. True

  1. 在C语言中,以下非法的表达式是(  )

A. 0<=x<=100
B. i=j==0
C. (char)(65+3)
D. x+1=x+1

10.在C语言中,以下非法的赋值语句是(  )

A. j++;
B. ++(i+1);
C. x=j>0;
D. k=i==j;

11.以下程序的输出结果是(  )

main()
{ char *s="ABC";

do

{ printf("%d",*s%10);

  s++;

} while(*s);

}

A. 5670 B. 656667 C. 567 D. ABC
12.以下程序的输出结果是(  )

main()
{ int a=1,b=3,c=5;
int p1=&a,p2=&b,*p=&c;
p=(p1)(p2);
printf("%d\n",c); }

A. 1 B. 2 C. 3 D. 4

13.int a[10],*p=a;

不能代表a[1]地址的是(  )

A. p+1
B. B. a+1
C. C. ++a
D. D. ++p

14.int a[4][5],(p)[5];
p=a;
下列对数组a 数组元素正确的引用形式是(  )
A. p+1
B.
(p+3)
C. p[0][2]
D. *(p+1)+3

15.设有以下说明语句,则下面的叙述不正确的是(  )

struct ex
{ char a;
int b;
float c;
} example;
A. struct 是结构体关键字
B. example是结构体类型名
C. a、b、c是结构体成员名
D. struct ex是结构体类型

二.判断题:本题共10小题,每小题1分,共10分,判断对错,答案在答题卡上填涂

1、C 语言具有简洁明了的特点。( )
2、预处理命令的前面必须加一个“#”号。( )
3、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。( )
4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。( )
5、continue 不是结束本次循环,而是终止整个循环的执行。( )
6、在对数组全部元素赋初值时,不可以省略行数,但能省略列数( )
7、.函数的实参传递到形参有两种方式值传递和地址传递( )

8、直接访问就是直接利用变量的地址进行存取直接访问( )
9、共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员。( )
10、文件指针和位置指针都是随着文件的读写操作在不断改变。( )

三.填空题:本题共15小题,每空1分,共20分。

1.C程序是由          构成的,一个C源程序至少且仅包含一个         。

2.C语言规定标识符只能由         、          和下划线3种字符组成,且第一个字符必须为          或下划线。

  1. 在C语言中,若有语句int a;则a的范围是-32768~            。

4.表达式 21 % 4 的值为         。

5.已知a=79.745,则表达式 (int)a 的值为             。

  1. 若a=5,经a+=3;后a=         。

7.已知ch='B',则表达式printf(“%c”,ch>='A ' && ch<='Z'? ch+32:ch);的值为       。

8.C中定义符号常量PI为3.14159的宏命令是            。

9.C 语言中变量默认的存储类型为           类型。

10.函数形参和调用的实参是普通变量时,参数的传递方向是         的。

11.C中逻辑运算符的优先次序是:       高于        高于          。

12.定义一个共用体变量,共三个成员分别是字符型、整型和单精度浮点型,则该共用体变量所占内存长度为         个字节。

13.以下程序段的输出结果是            。

define MIN(x,y)   (x)<(y)?(x):(y)

printf(“%d”,10*MIN(10,15));

  1. 设int型变量a=3,b=4,c=5,则表达式((a+b)>c)&&(b==c)&&a||b+c&&b+c的值是        。

15.定义一个递归函数实现f=1+1/2+1/3+…+1/n运算,当f(1)=1时递归退出,该函数的递归体是         。

四.程序填空题:本题共2小题,每空2分,共10分。

  1. 阅读以下程序并填空。该程序的功能是:将字符串中大写字母改成小写字母。
#include <stdio.h>

main()

{ int i=0;

char str[80];

scanf("      ①      ",str);

while(i<80)

{ if(str[i]>='A'&&str[i]<='Z')

   str[i]=     ②         ;

          ③       ;

}

printf("%s\n",str);

}
  1. 阅读以下程序并填空。以下程序的功能是:输出方阵中主对角线和、副对角线上元素的和sum1和sum2。
#define N 3

main()

{ int a[N][N],i,j,sum1,sum2;

sum1=sum2=   ;

for(i=0;i<N;i++)

for(j=0;j<N;j++)

 scanf("%d",&a[i][j]);

for(i=0;i<N;i++)

{ sum1+=     ①       ;

  sum2+=     ②      ;

}

printf("sum1=%d,sum2=%d\n",sum1,sum2);

}

五.阅读程序写结果:本题共4小题,每题5分,共20分。


main()

{ int i=1;

while(i<=15)

if(++i%3!=2) continue;

else printf("%d,",i);

printf("\n");

}

int fun(int n)

{ int i,s=1;

for(i=1;i<=n;i++)

s*=i;

return s;

}

main()

{ int i,s=0;

for(i=1;i<=4;i++)

s+=fun(i);

printf("%d\n",s);

}

#include <stdio.h>

main()

{ char s[]="123456789",*p=s,i=0;

while(*p)

{ if(i%2==0) *p='*';

  p++;

  i++;

}

printf("%s\n",s);

}

void fun(char x,char y)

{ char t;

t=x;x=y;y=t; }

main()

{ char p="abc",q="123";

fun(p,q);

printf("%s,%s\n",p,q);

}

六.编程题:本题共1小题,共10分。

输入 10 个整数,将其中最大数与最后一个数交换,最小数与第一个数交换。

#include<stdio.h>
void main(){
    int s[10],i,m,n,t;
    for(i=0;i<10;i++)
        scanf("%d",&s[i]);
    m=0,n=0;
    for(i=1;i<10;i++){
        if(s[n]>s[i]) n=i;
        else if(s[m]<s[i]) m=i;
    }
    //a[n] 最小值a[0]
    t=s[n];
    s[n]=s[0];
    s[0]=t;
    //a[m] 最大值a[9]
    t=s[m];
    s[m]=s[9];
    s[9]=t;
    for(i=0;i<=9;i++) 
        printf("%d ",s[i]);
}