注意本文不是正式的面试题
正式的面试题:ACAT2021纳新题目(C语言)
本试题一共分为12道题,考核点全部以C语言为主,难度有层次划分,希望你尽最大努力完成,我
们不需要你每道题都能得到正确答案,但希望你能有良好的学习态度。我们期待在面试那天与你相
遇!
(编程题只用写出核心代码或者想出解题思路,你也可以在面试时电脑写出完整代码运行,直接展示
你的结果!)
#include
#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);
}
#include
int main(){
int i=0,s=0;
for( ;; ){
i++;
if(i == 3 || i== 5)continue;
if(i==6)break;
s+=i;
}
printf("%d",s);
return 0;
}
执行上述程序后的输出结果是( )
A.5
B. 6
C. 7
D. 死循环
#include
main()
int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
执行上述程序后的输出结果是( )
A.2
B.3
C.4
D.编译时有错,无结果
A: x%20
B: !x%2!=0
C: (x/2*2-x)0
D: !(x%2)
int b[2][3]={
0}, (*p)[3];
p=b;
则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素的非法引用为()。
A: *(*(p+i)+j)
B:*(p[i]+j)
C: *(p+i)+j
D:(*(p+i))[j]
#include
int main(){
int x=1;
int y=2;
int z=3;
int max;
//一行语句
printf("%d",max);
}
相关概念:有权BCD代码是指在表示0-9十个十进制数码的4位二进制代码中,每位二进制数码都有确定的位权值。例如,表1-3-2中的8421码、2421码等。对于有权BCD代码,可以根据位权展开求得所代表的十进制数。例如:
(0111)8421 BCD=0x8+1x4+1x2+1x1=(7)10
(1101)2421 BCD=1x2+1x4+0x2+1x1=(7)10
最常用的有权码是8421 BCD码,由于其位权值是按基数2的幂增加的,这和二
进制数的位权值一致,所以有时也称8421 BCD码为自然数权码。
十进制数码 8421码 2421码
0 0000 0000
1 0001 0001
2 0010 0010
3 0011 0011
4 0100 0100
5 0101 1011
6 0110 1100
7 0111 1101
8 1000 1110
9 1001 1111
用BCD码表示十进制数
在BCD代码中,4位二进制代码仅表示1位十进制数,对一个多位的十进制数进行编码,需要有与十进制位数相同的几组BCD代码来表示,每组代码之间按十进制进位。
例如,用8421BCD码来表示十进制数863,则
(863)10=(1000 0110 0011)8421 BCD
如果用2421 BCD码来表示十进制数863,则
(863)10=(1110 1100 0011)2421 BCD
程序设计:输入任意一个十进制数,将其用2421 BCD码表示
(提示:类似于念数字)
#include
#include
#include
void OutPut(int data){
printf("%d",data);
}
void change1(int data){
data=1;
printf("11---");
OutPut(data);//1
printf("\n");
}
void change2(int *data){
*data=1;
}
int change3(){
int data=1;
return data;
}
int main(){
int data;
data=0;
printf("0---");
OutPut(data);//结果
printf("\n");
change1(data);
printf("1---");
OutPut(data);//结果
printf("\n");
change2(&data);
printf("2---");
OutPut(data);//结果
printf("\n");
int data1;
data1=change3();
printf("3---");
OutPut(data1);//结果
printf("\n");
}
#define N 10
#include
int main(){
//相关定义
int a[N];
int *p;
p=a;
int i;
//初始化数组
for(i=0;i<N;i++){
a[i]=i;
}
printf("\n");
//遍历方法一
printf("\n");
//遍历方法二
printf("\n");
//遍历方法三
printf("\n");
}
回形数格式方阵的实现
从键盘输入一个整数(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
输入n,输出以下字符
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*第n行*
//64位系统
#include
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语言)
非正式纳新题解(C语言)
注意本文不是正式的面试题
正式的面试题:ACAT2021纳新题目(C语言)