一、选择题(共 15 题,每题 3 分,共 45 分)
-
C语言程序的基本单位是 ( )。
A. 程序行 B. 语句
C. 函数
D. 字符 -
十六进制数100转换为十进制数为 ( ) 。
A. 256
B. 512 C. 1024 D. 64 -
可用作C语言用户标识符的一组字符串是 ( )。
A. void define WORD
B. a3_b3 _123 IF
C. For –abc Case
D. 2a DO sizeof
-
在C语言中,要求运算数必须是整型的运算符是 ( )。
A. %
B. / C. < D. ! -
在C语言中对嵌套if语句规定else总是与 ( )配对。
A. 第一个if
B. 与之前最近的if
C. 缩近位置相同的if
D. 与之前最近的不带else的if语句
-
下面说法哪一个是不正确的 ( ) 。
A. C语言函数可以没有参数
B. C语言函数可以没有返回值
C. C语言函数可以没有函数体
D. 无参函数函数名后的圆括号可以省略
-
下面数组初始化不正确的是 ( )。
A. int a[5]={1,2,3,4,5};
B. int a[]={1,2,3,4,5};
C. int a[5]={1,2,3};
D. int a[5]={0,1,2,3,4,5};
-
设 C 语言中,int 类型数据占4个字节,则short 类型数据占 ( )。
A. 1个字节
B. 2个字节
C. 4个字节 D. 8个字节 -
下列错误的表达式是 ( ) 。
A. -x++ B. (-x)++
C. x+++y
D. ++x+y -
switch(c)语句中,c不可以是什么类型 ( ) 。
A. int B. long C. char
D. float
-
以下叙述正确的是 ( ) 。
A. do-while语句构成的循环不能用其它语句构成的循环来代替。
B. do-while语句构成的循环只能用break语句退出。
C. 用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D. 用do-while语句构成的循环,在while后的表达式为零时结束循环。
-
设有int (*ptr)[10] 其中的标识符ptr是 ( ) 。
A. 10个指向整型变量的指针
B. 指向10个整型变量的函数指针
C. 一个指向具有10个整型元素的一维数组的指针
D. 具有10个指针元素的一维指针数组,每个元素都只能指向整型量
-
C语言规定,程序中各函数之间 ( )。
A. 既允许直接递归调用也允许间接递归调用
B. 不允许直接递归调用也不允许间接递归调用
C. 允许直接递归调用不允许间接递归调用
D. 不允许直接递归调用允许间接递归调用
-
在宏定义#define PI 3.14159中,用宏名PI代替一个 ( ) 。
A. 单精度数 B. 双精度数 C. 常量
D. 字符串
-
若有定义char *s=”\”Name\Address\n”,则指针s所指字符串长度为 ( ) 。
A. 19 B. 15 C. 18
D. 说明不合法
二、程序设计题 (5 道题,共 55 分)
-
(10分)编写完整的程序。输入两个数,输出他们的和与差。
输入说明:两个整数N1,N2;
输出说明:两个整数的和与差
输入样例:12 7
输出样例:19 5
#include <stdio.h> int main(int argc, char * argv[]) { int a = 0, b = 0; scanf("%d %d", &a, &b); printf("%d %d", a + b, a - b); return 0; }
-
(10分)编写完整的程序。输入三个数,输出其中的最大数,最小数。
输入说明:两个整数N1 N2 N3;
输出说明:最大数 最小数
输入样例:5 4 9
输出样例:9 4
#include <stdio.h> int main(int argc, char * argv[]) { int a = 0, b = 0, c = 0; scanf("%d %d %d", &a, &b, &c); printf("%d %d", (a > b ? a : b) > c ? (a > b ? a : b) : c, (a < b ? a : b) < c ? (a < b ? a : b) : c); return 0; }
-
(10分)编写完整的程序。采用顺序存储方式存储串,计算一个子串在字符串中首次出现的位置,输出这个下标。
输入说明:字符串ms 字符串zs
输出说明:zs在ms中首次出现下标
输入样例:baadefaadcb aadc
输出样例:6
#include <stdio.h> #include <string.h> int main(int argc, char * argv[]) { int i = 0, j = 0, count = 0; char str1[100], str2[100]; scanf("%s %s", str1, str2); while (i < strlen(str1) && j < strlen(str2)) { if (str1[i] == str2[j]) { i++; j++; } else { i = i - j + 1; j = 0; } } if (j == strlen(str2)) printf("%d", i - j); return 0; }