一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
- C 风格的注释,也称块注释或多行注释,以()开始,以()结束。
A./* 和 */
B. {和}
C.[ 和]
D.(和)
2.以下名字,可以作为C语言标识符的是()。
A. num#1
B. 2019Flag
C. integer
D. a.3
- 以下说法错误的是()。
A.一个C语言源文件(.c文件)可以不包含main函数
B.一个C语言工程(Project)可包含多个源文件(.c文件),即使这些源文件都编译成功,这个C工程也有可能链接失败
C.C语言头文件(.h文件)和源文件(.e文件)都可以进行编译
D.在一个可以正确执行的C语言程序中,一个C语言函数的声明(原型)可以出现任意多次
4,以下选项中,能用做数据常量的是()
A.OxABC
B.0118
C. 1.5el.5
D.115H
5,下列能正确表示a>10或a<0的关系表达式是()。
A. a>=10 or a<=0
B. a<=10 Il a>=0
C. a>=10 Il a<=0
D.a>=10 && a<=0)
6.设有说明:char w; int x; foat y; double z;则表达式wx+z-y值的数据类型为()
A. float
B. char
C. int
D. double
7.以下能正确地定义整型变量a,b和e并为它们赋初值5的语句是()
A. int a = b = c = 5;
B. int a, b, c = 5;
C. a=5, b=5,c=5;
D. int a=5,b=5,c=5;
8.假设字符变量ch中存放有小写英文字母,将其转换为相应的大写英文字母的表达式是()。
A. ch=ch-‘a’+‘A’
B. ch = ch+32
C. tolower(ch)
D. ch-=‘a’+‘A’
9,若想通过a&b来使a的二进制码中的首尾两位为原来的值,而其余为0,则b应为(量a,b均占一个字节)。
A.01111110
B. 10000001
C. 视a值而定
D.无法办到
10.C语言的程序一行写不下时,可以()
A.用逗号换行
B.用分号换行
C.在任意一空格处换行NCE
D.用回车符换行
- 在嵌套使用if语句时,C语言规定else总是()
A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的i配对
D. 和之前的第一个if配对日
- 以下程序的输出结果是()
#include<stdio.h>
اint main(){
int a, b;
for(a=1, b=l; a<=100; a++)
{ if(b>=10) break;
if(b%3==1)
{ b+=3;
continue;
}
}
printf(“%d”,a);
return 0;
- 以下描述错误的是()
A.字符串数组中可以存放ASCII字符集中的任何字符
B.字符串数组的字符可以整体输入输出
C.字符串数组中只能存放键盘上可以找到的字符
D.不可以用关系运算符对数组中的字符串进行比较14.在执行
14.int a][3]=(1,2,3,4,5,6);语句后, a[1][0]的值是()
A.4
B.1
C.2
D.5
15.下面的程序段将输出()。
char s[10] = “abed”;
printf(“%d\n”, sizeof(s));
A.4
B.5
C. 10
D. 11
16.C语言中静态变量和外部变量的初始化是在()阶段完成的。
A.程序执行过程中
B.编译
C.运行
D.程序外部
17.下列叙述中正确的是()
A.函数的定义不能嵌套,但函数调用可以嵌套
B.函数的定义可以嵌套,但函数调用不能嵌套
C.函数的定义和调用都不能嵌套
D.函数的定义和调用都可以嵌套
18,存在定义int a[10], x, *pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的()。
A.x=pa;
B.x=(a+1);
C.x=*(pa+1);
D.x=a[1];
19.C语言的编译系统对宏命令的处理()
A.在程序运行时进行的
B.在对源程序中其他语句正式编译之前进行的
C.在程序连接时进行的
D.和C程序中的其他语句同时进行编译的
20.有如下定义:
struct Student{
char name[10];
int age;
char gender;
}std[3], *p=std;
则以下各输入语句中错误的是:
A. scanf(“%d”,&(*p).age);
B. scanf(“%c”,&std[0].gender);
C.scanf(“%c”,&(p->gender));
D. scanf(“%s”,&std.name);
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。)
1________
#include <stdio.h>void main() {int num = 0;while (num <= 6) {num++;if (num % 3 == 0) {continue;}printf("%d#", num);}
}
2_____
#include <stdio.h>void cal(int *pscore) {static int bonus = 1;bonus++;*pscore += bonus++;
}void main() {int score = 60;for (int i = 0; i < 4; i++) {cal(&score);printf("%d ", score);}
}
3____
#include <stdio.h>void main() {int x = 1, y = 1, a = 0, b = 0;switch (x) {case 1:switch (y) {case 1:b++;break;case 0:a++;break;case 2:a++;b++;break;case 3:a++;b++;printf("\na=%d, b=%d", a, b);break;}break; }
}
4______
#include <stdio.h>void main() {int i, j, k;char space = ' ';for (i = 0; i < 4; i++) {for (j = 1; j <= i; j++)printf("%c", space);for (k = 0; k < 4; k++)printf("%d", k);printf("la\n");}
}
5_______
#include <stdio.h>int f(int a) {return (a * b + c);
}int main() {int b = 3;static int c = 8;b++;c++;int a = 3, i;for (i = 1; i < 4; i++) {printf("%d ", f(a));}return 0; // Added a return statement for main
}
三、程序填空题(共 35分。请将答案填写在答题纸的相应位置上。)
1.函数 del(s,i,n)的功能是从字符串s中删除从第i个字符开始的n个字符。主函数调用del函数,从字符串“management”中删除从第3个字符开始的4个字符,然后输出删除后的字符串。
#include <stdio.h>
void del(char s[], int i, int n) {int j, k, length = 0;while (s[length] != '\0')___________;--i;j = i;k = i + n;while (k < length)s[j++] = ___________;;___________;
}int main() {char str[] = "management";del( ___________;);printf("The new string is: %s", str);return 0;
}
2,输入2个整数a和b,交换它们的值。要求定义和调用函数swap(int*pa, int *pb)实现。
#include <stdio.h>void swap(int *pa, int *pb);int main() {int a, b;scanf("%d%d", &a, &b);swap( ___________);printf("%d %d\n", a, b);
}___________;{int temp;___________;
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)
1.编程计算并输出一元二次方程ax2+bx+c=0的两个实根,其中a、b、c的值由用户从键盘输入。
- 编写程序,根据以下公式求ππ的近似值,要求累加到某项小于le-6时为止。
3,编写函数mystreat(char *s1,char *s2),该函数功能是将两个字符串连接起来(不允许使用streat 函数)。