ACAT2021纳新题(C语言)(旧)

ACAT2021纳新题(C语言)

前言

这是陈旧已久的草稿2021-10-19 14:19:49发布一下

这个是纳新最开始我所设计的题目,后面有修改。

新的题目在另外两篇文章里。

现在2024-5-12 22:06:18,发布到[C语言]专栏中。

说明:

本试题一共分为12道题,考核点全部以C语言为主,难度有层次划分,希望你尽最大努力完成,我们不需要你每道题都能得到正确答案,但希望你能有良好的学习态度。我们期待在面试那天与你相遇!
(本测试题目省略#include...,编程题只用写出核心代码,你也可以在面试时带上U盘或者电脑直接展示你的结果!)

题目:

1. 请分析下列代码的运行结果,并解释其原因。

c 复制代码
int main() {
	int n=1,a=0,b=0;
	switch(n)
	{
		case 0:
			b++;
		case 1:
			a++;
		case 2:
			++a;
			b++;
	}
	printf("a=%d,b=%d\n",a,b);
}

2.请分析下面函数的运行结果,并解释其原因。

c 复制代码
#define PI 3 
#define S(r) PI*r*r 
int main(){
	float x,y,area;
	x=2;
	y=1;
	area=S(x+y);
	printf("r=%f\narea=%f\n",x+y,area);
}

3.请分析下列代码的运行结果,并解释其原因。

c 复制代码
int main(int argc, char const* argv[])
{
    int a = 0, b = 5;
    ++a || ++b, a - b;
    b = b--;
    printf("%d %d\n", a, b);
    return 0;
}

4.请分析下列代码的运行结果,并解释其原因。

c 复制代码
int main() {
	int a = 0;
	int b = 0 == a;
	int c = -1;

	if (a = 1) {
		c = a && b;
	}

	printf("%d%d%d", a, b, c);
	return 0;

}

5. 分析下列代码,请计算 x,y,z的大小

c 复制代码
int main(){
    struct x{
        int a;
        char b;
        double c;
    };
    struct y{
        float b;
        int a;
        double c;
    };
    struct z{
        int a;
        double c;
        char b;
    };
}

6.下面是一个交换两个变量的函数,看看这种方法可以实现吗?如果可以,还有其他方法吗?如果不可以,说说原因。

c 复制代码
void swap(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;
}

7.请分析以下代码的运行结果,并解释其原因。

c 复制代码
int main() {
	int n;
	printf("%d", scanf("%d", &n));
	return 0;
}

8.你知道哪些排序算法?你知道它们是怎样实现的吗?(大致思路)

9.字符串翻转

c 复制代码
设计一个程序实现字符串翻转,即将abcdefg反转成gfedcba,已经为你写好了部分代码,请在规定的区域添加代码来实现程序。
不允许在规定地方之外写代码,不允许删除写过的代码。
代码本来就定义了一个字符串和一个字符变量和一个整型数,不允许声明新的任何类型的变量。
c 复制代码
int main() {
	
	char s[32];
	scanf("%s", s);
	int n = strlen(s);
	int i;
	char ch;

	/* 规定区域开始 */



	/* 规定区域结束 */

	printf("%s", s);
	return 0;

}

10.水仙花数

"水仙花数"是指一个三位数其各位数字的立方和等于该数本身,
例如153是"水仙花数",因为:153 = 13 + 53 + 33,
所以判断一个数是否为"水仙花数",最重要的是要把给出的三位数的个位、十位、百位分别拆分,并求其立方和(设为s),
若s与给出的三位数相等, 三位数为"水仙花数",反之,则不是。
请你编写一段代码,判断一个三位数数是否是水仙花数。

11.打印杨辉三角形

c 复制代码
输入一个任意正整数n,请你编写一段代码,打印n行的杨辉三角形。
例:n = 4
输入结果:
1
1 1
1 2 1
1 3 3 1

12.逻辑图

c 复制代码
哲学家就餐问题是在计算机科学中的一个经典问题
哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。
吃东西的时候,他们就停止思考,思考的时候也停止吃东西。
餐桌中间有一大碗米饭,每两个哲学家之间有一只筷子。
哲学家想要吃饭必须拿到两个筷子。
哲学家从来不交谈,这就很危险。
有可能导致什么情况呢?
每个哲学家都拿起来自己左手边的筷子,然后眼巴巴地等着自己右边的哲学家放下筷子好让自己集齐一双筷子来吃饭。
请问如何避免这种现象发生呢?(想法越多越好)
相关推荐
白子寰几秒前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
王俊山IT13 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
为将者,自当识天晓地。15 分钟前
c++多线程
java·开发语言
小政爱学习!17 分钟前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
k093332 分钟前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
神奇夜光杯40 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue42 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧44 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
EricWang13581 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
测试界的酸菜鱼1 小时前
Python 大数据展示屏实例
大数据·开发语言·python