九、输出选做题
1.回形数
回形数格式方阵的实现 从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出: 1 2 4 3 输入数字3,则程序输出: 1 2 3 8 9 4 7 6 5 输入数字4, 则程序输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
2.完成输出下列字符
输入n,输出以下字符
* *.*. *..*..*.. *...*...*...*... *....*....*....*....*.... *.....*.....*.....*.....*.....*..... *......*......*......*......*......*......*...... *第n行*
十、C语言编写一个程序,去掉给定字符串中重复的字符。例如将google转化为gole。
十一、结构体,共用体的字节对齐
//64位系统 #include<stdio.h> union UNode{ char ch; int in; char *p; }; struct SNode{ char ch; short sh; int in; float f; double db; char *p; char arr[5]; union UNode UN; }; int main(){ printf("%d",sizeof(struct SNode)); printf("%d",sizeof(union UNode)); }
十二、逻辑选做题(可以不做)
注意本文不是正式的面试题
正式的面试题:ACAT2021纳新题目(C语言)
参考
ACAT2021纳新题(旧)
ACAT2021纳新题(旧)
ACAT2021纳新题(旧)
注意本文不是正式的面试题
正式的面试题:ACAT2021纳新题目(C语言)
说明:
本试题一共分为12道题,考核点全部以C语言为主,难度有层次划分,希望你尽最大努力完成,我们不需要你每道题都能得到正确答案,但希望你能有良好的学习态度。我们期待在面试那天与你相遇! (本测试题目省略#include…,编程题只用写出核心代码,你也可以在面试时带上U盘或者电脑直接展示你的结果!)
题目:
1. 请分析下列代码的运行结果,并解释其原因。
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.请分析下面函数的运行结果,并解释其原因
#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.请分析下列代码的运行结果,并解释其原因。
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.请分析下列代码的运行结果,并解释其原因。
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的大小
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.下面是一个交换两个变量的函数,看看这种方法可以实现吗?如果可以,还有其他方法吗?如果不可以,说说原因。
void swap(int a, int b) { int temp = a; a = b; b = temp; }
7.请分析以下代码的运行结果,并解释其原因。
int main() { int n; printf("%d", scanf("%d", &n)); return 0; }
8.你知道哪些排序算法?你知道它们是怎样实现的吗?(大致思路)
9.字符串翻转
设计一个程序实现字符串翻转,即将abcdefg反转成gfedcba,已经为你写好了部分代码,请在规定的区域添加代码来实现程序。 不允许在规定地方之外写代码,不允许删除写过的代码。 代码本来就定义了一个字符串和一个字符变量和一个整型数,不允许声明新的任何类型的变量。
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.打印杨辉三角形
输入一个任意正整数n,请你编写一段代码,打印n行的杨辉三角形。 例:n = 4 输入结果: 1 1 1 1 2 1 1 3 3 1
12.逻辑图
哲学家就餐问题是在计算机科学中的一个经典问题 哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。 吃东西的时候,他们就停止思考,思考的时候也停止吃东西。 餐桌中间有一大碗米饭,每两个哲学家之间有一只筷子。 哲学家想要吃饭必须拿到两个筷子。 哲学家从来不交谈,这就很危险。 有可能导致什么情况呢? 每个哲学家都拿起来自己左手边的筷子,然后眼巴巴地等着自己右边的哲学家放下筷子好让自己集齐一双筷子来吃饭。 请问如何避免这种现象发生呢?(想法越多越好)
注意本文不是正式的面试题
正式的面试题:ACAT2021纳新题目(C语言)