选择题
1.( )是构成C语言程序的基本单位。
A.函数 B.过程 C.子程序 D.子例程
答案:A
2.下面( )表达式的值为4。
A.11/3 B.11.0/3 C.(float)11/3 D.(int)(11.0/3+0.5)
答案:D
3.若有以下数组说明,则i=10;a[a[i]]元素数值是( )。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A.10 B.9 C.6 D.5
答案:C
4.C语言中有语句:char a[]="\0abc\012345";则数组a所占的内存空间的字节数为:( )。
A.0 B.9
C.11 D.10
答案:B
5.若有定义"char a; int b; float c; double d;",则表达式"a*b+d-c"值的类型为( )。
A. float B.int
C. char D.double
答案:D
6.在C语言中,函数的数据类型是指( )。
A.函数返回值的数据类型
B.函数形参的数据类型
C.调用该函数时的实参的数据类型
D.任意指定的数据类型
答案:A
7.以下标识符中,不能作为合法的C用户定义标识符的是( )。
A.answer B.signed
C.to D._if
答案:D
8.下面的这个循环的循环次数是( )。
int i,j;
for( i=0,j=10; i=j=10; i++,j--)
A.语法错误,不能执行 B.无限次
C.10 D.1
答案:B
9.C语言执行程序的开始执行点是( )。
A.程序中第一行代码 B.程序中第一个函数
C.程序中的main函数 D.包含文件中的第一个函数
答案:C
10.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是( )。
A.p=q B.*p=*q C.n=*q D.p=n scanf("%d",*p)
答案:D
11.若a是基本整型变量,c是单精度实型变量,输入语句( )是错误的。
A.scanf("%d,%f", &a, &c);
B.scanf("d=%d, c=%f", &a, &c);
C.scanf("%d%f", &a, &c);
D.scanf("%d%f", a, c);
答案:D
12.在进行文件操作时,文件读操作的一般含义是( )。
A.将计算机内存中的信息写入磁盘
B.将磁盘中的信息读入计算机内存
C.将计算机 CPU 中的信息写入磁盘
D.将磁盘中的信息读入计算机CPU
答案:B
13.设有int x=11;则表达式(x++*1/3)的值是( )。
A.3 B.4
C.11 D.2
答案:A
答案解析:运算符的优先级;x++先使用再自增 ++x先自增再使用
14.若"int n; float f=13.8;",则执行"n=(int)f%3"后,n的值是( )。
A.1 B.4
C.4.33333 D.4.6
答案:A
答案解析:运算符的优先级;% 取余
15.以下对一维数组a的正确说明是( )。
A.char a(10); B.int a[];
C.int k=5,a[k]; D.char a[3]={‘a’,’b’,’c’};
答案:D
16.已知字符 'a' 的ASCII码为 97,执行语句printf ("%d, %c", 'b', 'b'+1 )
后输出是( )。
A.98, b B.语法不合法
C.98, c D.98, 99
答案:C
17.以下叙述中不正确的是( )。
A.C程序可以由一个或多个函数组成
B.C程序可以由多个程序文件组成
C.一个C语言程序只能实现一种算法
D.一个C函数可以单独作为一个C程序文件存在
答案:C
18.计算机能直接执行的程序是( )。
A.汇编程序 B.目标程序
C.可执行程序 D.源程序
答案:C
答案解析:
19.在C语言程序中,表达式5%(-2)的结果是( )。
A.1 B.-1 C.2 D.3
答案:A
20.结构化程序的三种基本控制结构是( )。
A.过程、子程序和分程序 B.调用、返回和转移
C.顺序、选择和调用 D.顺序、选择和循环
答案:D
填空题:
1.算法的表示方法有自然语言、计算机语言、 流程图 、 N-S图 和 伪代码 。
2.数组是一组具有 相同 类型的数据的集合。
3.已知a=10,b=20,则表达式!a<b的值为 1 。
1)答案解析:运算符优先级:! 高于<
2)! | & 逻辑运算符,不为0则为真(1)
4.C语言的基本数据类型中, 结构体 是一种复合数据类型,可以包含多个元素。
5.函数之间可以相互调用,除了 主函数(main) 函数。
6.在C语言中, for 语句用于循环,可以实现计数器的功能。
7.C语言中逻辑与逻辑非。其中, 逻辑非 的优先级比较高。
8.在C语言中的 strlen 函数用于求字符串的长度。
9.C语言中的基本数据类型分别是 整形;浮点型;字符型 、、枚举型变量。
10.定义变量int x=1.20,则%d格式输出x的结果为 1 。
11.C语言中有一种特殊类型的变量,专门用于存放其他变量的地址,这种变量称为 指针变量 。
12.在C语言中, strcpy 函数用于字符串的复制。
13.在C语言的运算符中, 地址 运算符和逻辑运算符是用“真”和“假”来表达结果。
14.定义结构体类型的关键字是 struct 。
15.在C语言中, % 运算符用于取模。
16.指针变量指向的是 地址 。
判断题
1.结构体变量不可以在定义时直接进行初始化。 ( )
答案:错
2.do-while语句构成的循环只能用break语句退出。 ( )
答案:错
3.C语言中的注释都可以嵌套使用。 ( )
答案:错
4.编写C程序计算1.0/3*3的结果肯定等于1。 ( )
答案:错
5.字符数组就是字符串。 ( )
答案:错
5.break语句的作用是结束整个循环的执行。 ( )
答案:正确
6.数组中的元素可以通过数组名和下标来引用。 ( )
答案:正确
8.标识符的命名只能以数字和字母开头。 ( )
答案:错
9.C程序中变量可以不定义而直接使用。 ( )
答案:错
10.二维数组在内存的存放不是二维的。 ( )
答案:正确
11.语句j=i++;与j=++i没有什么区别。 ( )
答案:错
12.C语言中多个以“;”结束的语句不能放在同一行。 ( )
答案:错
13.C语言中强制类型转换不会改变变量的原有数据类型。 ( )
答案:对
14.C语言中,指针不属于三大基本数据类型。 ( )
答案:正确
15.scanf函数的输入项如果是字符数组名,也要再加地址符&。 ( )
答案:错
答案解析:数组名本身就是地址
16.C语言中的逻辑值“真”是用1表示的,逻辑值“假”是用0表示的。 ( )
答案:正确
17.局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一直存在。 ( )
答案:错
18.指针变量实际上存储的并不是变量的值,而是变量的地址。 ( )
答案:正确
19.计算机语言可分为四大类:机器语言、汇编语言、脚本语言和高级语言。 ( )
答案:错误
20.C语言提供了fopen()函数,该函数用于打开文件,其返回值类型为空。 ( )
答案:错误
程序填空题
1.把下列程序补充完整,实现两个字符串的比较,即自己写个strcmp函数,函数原型为:int strcmp(char *p1,char *p2),设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当sl≠s2时,返回它们两者的第一个不同的字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果sl<s2,则输出负值。
#include<stdio.h>
int main()
{ (1) ;
int m;
char str1[20],str2[20],*p1,*p2;
printf("Input two string:\n");
scanf("%s",str1);
scanf("%s",str2);
p1=str1;
(2) ;
m=strcmp(p1,p2);
printf("result:%d\n",m);
}
int strcmp(char *p1,char *p2)
/*两个字符串比较的函数*/
{ int i=0;
while(*(p1+i)==*(p2+i))
if(*(p1+i++)=='\0') return(0);
return(*(p1+i)-*(p2+i)); /*不等时返回结果为第一个不等字符ASCII码的差值*/
}
(1)int strcmp(char *p1,char *p2)
(2)p2=str2 ;
2. #include <stdiod.h>
#include <math.h>
int main() {
int arr[3][3]={ {1, -2, 3}, {-4, 5, -6}, {7, -8, 9} };
int i, j, sum = 0, min= arr[0][0];
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
sum+= abs(arr[i][j]);
if (arr[i][j] < min) {
min = arr[i][j];
}
}
}
printf("%d\n", sum);
printf("%d\n", min);
return 0;
}
则程序输出结果:
(3) 45
(4) -8
3. #include <stdio.h>
void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int main() {
int x = 10, y = 20;
int *px = &x, *py = &y;
printf("Before swap: x = %d, y = %d\n", x, y);
swap(px, py);
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
则程序输出结果:
(5) x=10,y=20
(6) x = 20, y = 10
编程题:
1.输入一个字符,如果是大写字母就输出“upper”,如果是小写字母,就输出“lower”,如果是数字,就输出“digit”,如果是其他字符,就输出“others”,
#include <stdio.h>
int main() {
char ch;
scanf("%c", &ch);
if (ch >= 'A' && ch <= 'Z') {
printf("upper");
} else if (ch >= 'a' && ch <= 'z') {
printf("lower");
} else if (ch >= '0' && ch <= '9') {
printf("digit");
} else {
printf("others");
}
return 0;
}
2.请用c语言编写程序,要求输出100以内的偶数和与奇数和。
#include <stdio.h>
int main() {
int sum_even = 0, sum_odd = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
sum_even += i;
} else {
sum_odd += i;
}
}
printf("%d\n", sum_even);
printf("%d\n", sum_odd);
return 0;
}
3.有1、2、3、4四个数字,能组成多少个各位互不相同且无重复数字的三位数,请用c语言编程实现并打印输出。
#include <stdio.h>
int main() {
int count = 0;
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 4; j++) {
for (int k = 1; k <= 4; k++) {
if (i != j && i != k && j != k) {
count++;
}
}
}
}
printf("%d\n", count);
return 0;
}
4.请用c语言编写程序,要求输入两个整数,求其中最大值,用函数调用实现。
#include <stdio.h>
int max(int a, int b) {
return (a > b) ? a : b;
}
int main() {
int x, y;
scanf("%d %d", &x, &y);
printf("%d\n", max(x,y));
return 0;
}
5.函数fun的功能是计算下面表达式的值:
S=a+aa+aaa+aaaa+......;
其中a的值和位数n的值均由用户指定,例如:a=2,n=4,则S=2+22+222+2222。请利用c语言函数编程实现上述功能。
#include <stdio.h>
int fun(int a, int n) {
int sum = 0, term = 0;
for (int i = 0; i < n; i++) {
term = term * 10 + a;
sum += term;
}
return sum;
}
int main() {
int a, n;
scanf("%d%d", &a, &n);
printf("%d\n", fun(a, n));
return 0;
}
5.请用c语言编写程序,有一个整型数组a,要求先输入10个元素,然后输出数组中的全部元素,用指针实现。
#include <stdio.h>
int main() {
int a[10];
int *p;
for (int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (p = a; p < a + 10; p++) {
printf("%d ", *p);
}
printf("\n");
return 0;
}