前言
今天是刷题第12天,放弃不难,但坚持一定很酷~
临近期末,刷几套模拟题
C语言百日刷题第十二天
- 前言
- 选择题
- 判断题
- 编程题
选择题
1.设a=1;b=2;c=3;d=4;则表达式a<b?a:c<d? a:d的结果是____。
A、3
B、1
C、4
D、2
正确选项:B
三目运算符a?b:c的意思是,如果表达式a对则执行b否则执行c。
本题中:a<b是对的,所以执行a,而a=1,所以该表达式的结果为1
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];
正确选项:D
数组在定义的时候,大小必须为常变量。
3.以下正确的变量标识符是______。
A、my_var
B、01bc
C、bc-cd
D、char
正确选项:A
1.变量名可以是字母、数字和下划线的组合。
2.变量名的开头必须是字母或下划线,不能是数字。
3.变量名绝对不可以是C语言关键字。
4.变量名不能有空格
4.已知char s[100] = “ABC”;char *const node = s; 下列语句合法的是___
A、node[2]=’k’
B、*node[2]=’k’
C、node = “xyz”
D、*node = “xyz”
正确选项:A
const限制了不能修改node指针,但是可以修改该指针指向的内容。
5.已知:int x=1,y=-1;则语句printf(“%d\n”,(x--&&++y));
的输出结果是____
A、0
B、-1
C、2
D、1
正确选项:A
x- -后为0,++y后也为0
6.C语言程序中,整型常量的书写形式不包括______
A、八进制
B、十六进制
C、十进制
D、二进制
正确选项:D
7.在以下运算符中,优先级最高的运算符是_______
A、&&
B、<=
C、%
D、=
正确选项:C
8.对于char ch;下面正确的赋值是_______
A、ch=’123’
B、ch=’ ’
C、ch=’\’
D、ch=’a’
正确选项:D
9.合法的字符常量是______
A、’W’
B、‘’
C、“a”
D、‘\’
正确选项:A
字符常量是括在一对单引号内的字符
10.若主函数类型为double,被调用函数定义中没有进行函数类型说明,而return语句中的表达式类型为float型,则被调用函数返回值的类型是______
A、float型
B、double型
C、由系统当时决定
D、int型
正确选项:D
11.下列叙述中错误的是_______
A、C语言是一种结构化程序设计语言
B、结构化程序设计提倡模块化的设计方式
C、结构化程序由顺序、分支、循环三种基本结构组成
D、使用三种基本结构构成的程序只能解决简单问题
正确选项:D
C语言就顺序、分支、循环三种结构。这三种结构配合可以解决C语言能解决的所有问题
12.该程序的运行结果为______
int main()
{int a = 1, b = 2, c = 3;if(a == b)a++;if(b < c)b++;elsec++;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
正确选项:D
a不等于b所以不执行a++的操作,而b确实小于c进行b++的操作,所以b=2+1=3,而c没有变还是3,所以打印的结果是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
正确选项:D
continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定
14.表达式(1,2,3,4)的结果是____
A、3
B、2
C、4
D、1
正确选项:C
逗号表达式的值是从左到右最后一个表达式的值
15.C语言中,运作对象必须是整型数的运算符是
A、%和、
B、、
C、**
D、%
正确选项:D
求余运算必需是整型是因为求余是在整数除法中的运算。
16.下面程序运行时输入“china?”,其执行结果为
int main()
{char c;c = getchar();while (c != '?'){putchar(c);c = getchar();}
}
A、china???
B、china
C、china?
D、china??
正确选项:B
getchar函数每次只能读取一个字符,但是当读取导?时候,不满足循环条件,直接结束循环,没有打印出来
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
正确选项:D
n- -是先给值后自减
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
正确选项:D
* p = a+1 表明指针p指向的是数组的第二个元素 2 而p+2则让指针右移了2位,指向的是4,解引用后打印的就是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
正确选项:D
定义的func函数的作用返回相加的两个数,输入2,5则func(2,5)为7然后func(7,8)就是7+8=15
20.以下关于C语言数组说法正确的是_____
A、可以使用动态分配技术、定义元素个数可变的数组
B、数组元素的数据类型可以不一致
C、数组元素个数可以不确定、允许随机变动
D、定义一个数组后,就确定了它所容纳的具有相同数据类型元素的个数
正确选项:D
判断题
1.在不漏写break的情况下,switch语句各个case标号出现的次序不影响执行结果( )
对
2.在被调用函数中,对形参数组定义时可以指定每一维的大小,也可也省略第一维的大小说明( )
对
3.不同于数学,在C中处理数据必须明确其类型( )
对
4.从用户使用的角度看,函数有两种:库函数、用户自定义函数。( )
对
5.指针变量不可以作为函数的参数来使用。( )
错
6.for语句构成的循环不能用其他语句构成的循环来代替。( )
错
三种循环其实都是相通的,可以彼此换
7.对3个整型变量赋值,可以用以下语句:int a = b =c =3; ( )
错
8.switch的default子句可以省略不用( )
对
9.C语言提供输入输出函数。( )
错
输入输出函数是C标准函数库中的函数提供的
10.字符型常量表达方式是将字符用英文的双引号包围。()
错
11.do-while循环至少要执行一次循环语句。( )
对
12.若指针变量指向一维数组的第一个元素,将指针变量加整数3,既指针后移三个元素。( )
对
13.数组元素小标,系统默认从1开始。( )
错
14.数组元素只能用下标法或元素名来表示。( )
错
还可以用指针
15.C编译单位是函数。( )
错
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;
}