前言
选择题
1.设a=1;b=2;c=3;d=4;则表达式a<b?a:c<d? a:d的结果是____。
A、3
B、1
C、4
D、2
2.以下错误的数组定义是_____。
A、float f[10+’A’]
B、double d[1+2+3]
C、#define N 10 int a[N + 2];
D、int n=10; int a[n+2];
3.以下正确的变量标识符是______。
A、my_var
B、01bc
C、bc-cd
D、char
4.已知char s[100] = “ABC”;char *const node = s; 下列语句合法的是___
A、node[2]=’k’
B、*node[2]=’k’
C、node = “xyz”
D、*node = “xyz”
5.已知:int x=1,y=-1;则语句printf(“%d\n”,(x--&&++y));
的输出结果是____
A、0
B、-1
C、2
D、1
6.C语言程序中,整型常量的书写形式不包括______
A、八进制
B、十六进制
C、十进制
D、二进制
7.在以下运算符中,优先级最高的运算符是_______
A、&&
B、<=
C、%
D、=
8.对于char ch;下面正确的赋值是_______
A、ch=’123’
B、ch=’ ’
C、ch=’\’
D、ch=’a’
9.合法的字符常量是______
A、’W’
B、’’
C、“a”
D、‘\’
10.若主函数类型为double,被调用函数定义中没有进行函数类型说明,而return语句中的表达式类型为float型,则被调用函数返回值的类型是______
A、float型
B、double型
C、由系统当时决定
D、int型
11.下列叙述中错误的是_______
A、C语言是一种结构化程序设计语言
B、结构化程序设计提倡模块化的设计方式
C、结构化程序由顺序、分支、循环三种基本结构组成
D、使用三种基本结构构成的程序只能解决简单问题
12.该程序的运行结果为______
int main()
{
int a = 1, b = 2, c = 3;
if(a == b)
a++;
if(b < c)
b++;
else
c++;
printf("%d %d %d",a, b, c);
return 0;
}
A、1,2,3
B、1,2,4
C、3,3,3
D、1,3,3
13.以下程序的输出结果为:
#include<stdio.h>
int main()
{
int i, j, x = 1;
for (i = 0; i < 2; i++)
{
x++;
for (j = 0; j < 3; j++)
{
if (j % 2) continue;
x++;
}
}
printf("%d\n", x);
return 0;
}
A、8
B、5
C、6
D、7
14.表达式(1,2,3,4)的结果是____
A、3
B、2
C、4
D、1
15.C语言中,运作对象必须是整型数的运算符是
A、%和、
B、、
C、**
D、%
16.下面程序运行时输入“china?”,其执行结果为
int main()
{
char c;
c = getchar();
while (c != '?')
{
putchar(c);
c = getchar();
}
}
A、china???
B、china
C、china?
D、china??
17.该程序的运行结果是________
void main()
{
int n; n = 9;
if (n++ < 10)
printf(" % d\n", n);
else printf("% d\n", n--);
}
A、11
B、8
C、9
D、10
18.该程序的输出结果是
void main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int *p = a + 1;
printf("%d\n", *(p + 2));
}
A、3
B、1
C、2
D、4
19.有如下程序
int func(int a, int b)
{
return a + b;
}
void main()
{
int x = 2, y = 5, z = 8, r;
r = func(func(x, y), z);
printf("%d\n", r);
}
该程序的输出结果为______
A、13
B、12
C、14
D、15
20.以下关于C语言数组说法正确的是_____
A、可以使用动态分配技术、定义元素个数可变的数组
B、数组元素的数据类型可以不一致
C、数组元素个数可以不确定、允许随机变动
D、定义一个数组后,就确定了它所容纳的具有相同数据类型元素的个数
判断题
1.在不漏写break的情况下,switch语句各个case标号出现的次序不影响执行结果( )
2.在被调用函数中,对形参数组定义时可以指定每一维的大小,也可也省略第一维的大小说明( )
3.不同于数学,在C中处理数据必须明确其类型( )
4.从用户使用的角度看,函数有两种:库函数、用户自定义函数。( )
5.指针变量不可以作为函数的参数来使用。( )
6.for语句构成的循环不能用其他语句构成的循环来代替。( )
7.对3个整型变量赋值,可以用以下语句:int a = b =c =3; ( )
8.switch的default子句可以省略不用( )
9.C语言提供输入输出函数。( )
10.字符型常量表达方式是将字符用英文的双引号包围。()
11.do-while循环至少要执行一次循环语句。( )
12.若指针变量指向一维数组的第一个元素,将指针变量加整数3,既指针后移三个元素。( )
13.数组元素小标,系统默认从1开始。( )
14.数组元素只能用下标法或元素名来表示。( )
15.C编译单位是函数。( )
编程题
1.输入两个实数,用一个函数求出它们之和。
#include<stdio.h>
int Add(int x, int y)
{
return x + y;
}
int main()
{
int x, y;
scanf("%d %d", &x, &y);
printf("%d", Add(x, y));
return 0;
}
2.用指针方法来处理下述问题:将n个数按输入时的顺序逆序排列,用函数实现。
#include<stdio.h>
void reverse(int* p, int n)
{
int temp;
int i;
for (i = 0; i <= n / 2; i++)
{
temp = *(p + i);
*(p + i) = *(p + n - 1 - i);
*(p + n - 1 - i) = temp;
}
}
int main()
{
int array[100];
int n = 0;
printf("输入元素个数:");
scanf("%d", &n);
printf("依次输入元素:\n");
for (int i = 0; i < n; i++)
{
scanf("%d", &array[i]);
}
reverse(array, n);
for (int i = 0; i < n; i++)
{
printf("%d ", array[i]);
}
return 0;
}