0
点赞
收藏
分享

微信扫一扫

【C语言进阶考试】你是否真的学透了C语言?

hwwjian 2022-04-16 阅读 48

请添加图片描述

请添加图片描述


C语言进阶考试讲解

请添加图片描述

🏀选择题1~5

🌍第1️⃣题

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h> 
int main()
{
	unsigned char i = 7;
	int j = 0;
	for (; i > 0; i -= 3)
	{
		++j;
	}
	printf("%d\n", j);
	return 0;
}
//请问该程序的输出是多少 ?
A.2              B.死循环
C.172            D.173

请添加图片描述

🌍第2️⃣题

以下程序运行时,若输入1abcedf2df<回车>输出的结果是?
int main()
{
	char a = 0, ch;
	while ((ch = getchar()) != '\n')
	{
		if (a % 2 != 0 && (ch >= 'a' && ch <= 'z'))
			ch = ch - 'a' + 'A';
		a++;
		putchar(ch);
	}
	printf("\n");

}

A 1abcedf2df        B 1ABCEDF2DF 
C 1AbCeDf2dF        D 1abceDF2DF

请添加图片描述

🌍第3️⃣题

3. 以下哪个选项一定可以将 flag 的第二个 bit 置 0
A flag&=~2 
B flag|=2 
C flag^=2 
D flag>>=2

请添加图片描述

🌍第4️⃣题


下面两个结构体
struct One {
	double d;
	char c;
	int i;
};
struct Two {
	char c;
	double d;
	int i;
};
在 #pragma pack(4) 和 #pragma pack(8) 的情况下,结构体的大小分别是?
A 16 24,16 24       B 16 20,16 20 
C 16 16,16 24       D 16 16,24 24

请添加图片描述

🌍第5️⃣题

int x = 1;
do {
	printf("%2d\n", x++);
} while (x--);

A. 1       B.无任何输出
C. 2       D.陷入死循环

请添加图片描述

🏀选择题6~10

🌍第6️⃣题

下列 C 程序执行后 c 输出结果为 ( )32 位)
void main()
{
	int a = -3;
	unsigned int b = 2;
	long c = a + b;
	printf("%ld\n", c);
}
A -1           B 4294967295 
C 0x7FFFFFFF   D 0xFFFFFFFF

请添加图片描述

🌍第7️⃣题

设有定义char *p[]={"Shanghai","Beijing","Honkong"};则结果为j字符的表达式是()
A *p[1] +3
B *(p[1] +3)
C *(p[3] +1)
D p[3] [1]

请添加图片描述

🌍第8️⃣题

int f(int x) {
	return ((x > 2) ? x * f(x - 1) : 3);
}
int i;
i = f(f(2));

执行如上函数后. i的值为()
A 30
B 无限递归
C 9
D 2160

请添加图片描述

🌍第9️⃣题

int p[][4] = { {1},{3,2},{4,5,6},{0} }; 中,p[1][2]的值是()
A 1
B 0
C 6
D 2

🌍第🔟题

int fun(int a) {
	a ^= (1 << 5) - 1;
	return a;
}
fun(21)的运行结果是()
A 10
B 5
C 3
D 8

请添加图片描述

🏀选择题11~15

🌍第1️⃣1️⃣题

下列关于C / C++的宏定义,不正确的是()
A 宏定义不检查参数正确性,会有安全隐患
B 宏定义的常量更容易理解,如果可以使用宏定义常量的话,要避免使用const常量
C 宏的嵌套定义过多会影响程序的可读性,而且很容易出错
D 相对于函数调用,宏定义可以提高程序的运行效率

请添加图片描述

🌍第1️⃣2️⃣题


下面关于"指针"的描述不正确的是()
A 当使用free释放掉一个指针内容后, 指针变量的值被置为NULL
B 32位系统下任何类型指针的长度都是4个字节
C 指针的数据类型声明的是指针实际指向内容的数据类型
D 野指针是指向未分配或者已经释放的内存地址

🌍第1️⃣3️⃣题

设有以下宏定义:
#define N 3+1
#define Y(n) ((N+1)*n)
则执行语句 z = 2 * ( N + Y(5 + 1) )后, z 的值为
A 60
B 190
C 248
D 其他都错

🌍第1️⃣4️⃣题

由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。下面哪个阶段可以发现被调用的函数未定义?
A 预处理
B 编译
C 链接
D 执行

请添加图片描述

🌍第1️⃣5️⃣题

char a ; int b ; float c ; double d ;
则表达式 a* b + d - c 值的类型为()
A float
B int
C char
D double

请添加图片描述

⚽️编程题1️⃣

💥Fibonacci数列:点这里🌠传送门

标题:Fibonacci数列 | 时间限制:1| 内存限制:32768K | 语言限制: 不限
【Fibonacci数列】Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可
以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
输入描述:

> 输入为一个正整数N(1 ≤ N ≤ 1,000,000)

输出描述:

> 输出一个最小的步数变为Fibonacci数"
示例1> 输入:15
> 输出:2

输入为一个正整数N(1 ≤ N ≤ 1,000,000)
输出一个最小的步数变为Fibonacci数"

📜参考代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 1;
	int c = 0;
	int n = 0;
	scanf("%d", &n);

	while (1)
	{
		if (b == n)
		{
			printf("0\n");
			break;
		}
		else if (b > n)
		{
			if (abs(a - n) > abs(b - n))
			{
				printf("%d\n", abs(b - n));
			}
			else
			{
				printf("%d\n", abs(a - n));
			}
			break;
		}
		a = b;
		b = c;
		c = a + b;

	}
	return 0;
}

⚽️编程题2️⃣

🐾替换空格:点这里💥传送门

请实现一个函数,将一个字符串中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 

📜参考代码

class Solution {
public:
	void replaceSpace(char* str, int length) {
		//数空格
		int spacecent = 0;
		char* p = str;
		while (*p)
		{
			if (*p == ' ')
				spacecent++;
			p++;
		}
		int newlength = length + 2 * spacecent;
		int end1 = length - 1;
		int end2 = newlength - 1;
		while (end1 != end2)
		{
			if (str[end1] != ' ')
			{
				str[end2--] = str[end1--];
			}
			else
			{
				str[end2--] = '0';
				str[end2--] = '2';
				str[end2--] = '%';
				end1--;
			}
		}
	}
};

请添加图片描述

举报

相关推荐

0 条评论