西邮linux兴趣小组2020纳新面试题

1.输出结果为>

2.输出结果为10,C在编译时被替换为了A+B,而A被替换为了2+2,B被替换为了3+3,结果正好是10.

宏定义是在编译时直接将程序中的内容替换为宏定义指定的内容,故在代码实际运行时便不再耗费额外的时间,这也是宏函数相比于不同函数的优点之一。

3.输出结果为26 27


int main(void)
{
    char str[]="Welcome to XiyouLinuxGroup";
    printf("%zu %zu\n",strlen(str),sizeof(str));
    return 0;
}

sizeof()表示字符串str所占的字节数,strlen()表示到第一个从第一个字符算起到第一个终止符之前的长度。

4.输出结果为x=5 num=5

在停一程序中多次调用该函数时,x的输出值仍为5,num的值会不断按照5的倍数递增,即5,10,15......

5.这段代码的做用是将一个10进制的数子转化为二进制。


int main(void)
{
    int number;
    unsigned mask;
    mask=1u<<31;
    scanf("%d",&number);
    while(mask)
    {
        printf("%d",(number&mask)?1:0);
        mask>>=1;
    }
    return 0;
}

6.该程序运行结果为Y


int main(void)
{
    char* str="Xiyou Linux Group";
    printf("%c\n",*str+1);
    return 0;
}

str表示该字符串的首地址,*str表示X。,但是*比+的优先级高,这样其实就是给X的Ascil进行+1,结果就是Y.

7.该程序运行结果为XiyouLinuxGroup


int main(void)
{
    double a=3.14;
    float b=a;
    if((float)a==b)
    {
        printf("Xiyou");
    }
    if(a!=b)
    {
        printf("LinuxGroup\n");
    }
    return 0;
}

3.14在计算机中用二进制表示出来难免会有一些误差,而float和double的精度不同,故表示出来的结果也会有不同,但是用强制转换将不同类型的浮点数转为相同的类型,这样就可以进行正确的比较了。

8.该程序输出为Xiyou Linux Group 2020


int main(void)
{
    int a[6]={0x6f796958,0x694c2075,0x2078756e,0x756f7247,0x30322070,0};
    printf("%d\n",printf("%s",(char*)a));
    return 0;
}

其中第二个printf输出的是Xiyou Linux Group 20,因为这个字符串的大小刚好为20,于是该printf产生了一个返回值20,被第一个printf输出。(其中a数组中的0,以Ascil码的身份被读取为NULL,使该字符串的输出停止。

9.输出为2 0

              2 0

数组赋值时,如果赋值的个数小于数组分配的个数,会给该数组未赋值的部分自动赋值为0.

10.输出结果为1.

&a得到了a的地址,并用(char*)强制转换为指针类型,之后又对其进行解引用,得到该地址上的对象的值,即a的值1.

11.如果取消第3行的注释,a会被声明为提个常量,程序不能正常运行。

如果取消第6,8行的注释,程序不能正常运行,体内为b指向一个字符串常量的指针,对自古传常量不能进行修改。

12.

(1)预处理阶段。预处理器(cpp)根据字符#开头的命令,修改原始的C程序。

(2)编译阶段。将c语言文件从高级语言转为汇编语言。

(3)汇编阶段。将汇编语言转化为二进制语言。

(4)链接阶段。将使用的头文件与本文件链接起来。

GNU 计划。GNU 全称 GNU's Not UNIX,又被称为“革奴计划”,由理查德·斯托曼于 1983 年发起。GNU 计划的最终目标是打造出一套完全自由(即自由使用、自由更改、自由发布)、开源的操作系统,并初步将其命名为 GNU 操作系统。在 Linux 内核的基础上,GNU 计划开发了很多系统部件,GCC 就是其中之一

GCC 的全拼为 GNU C Compiler,即 GUN 计划诞生的 C 语言编译器,最初 GCC 的定位确实只用于编译 C 语言。但经过这些年不断的迭代,GCC 的功能得到了很大的扩展,它不仅可以用来编译 C 语言程序,还可以处理 C++、Go...等多种编译语言编写的程序。

13.该函数的功能是对数组进行排序,他是不断地将数组中最大的元素放到排序部分的最后。

(冒泡)

初步优化后的代码如下:

void sort(int* arr,int size)
{
    int i,j,temp,flag1,flag=size-1;
    for(i=0;i<size-1;i++)
    {
        for(j=0;j<flag;j++)
        {
            if(arr[j]>arr[j+1])
            {
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
                flag1=j;
            }
        }
        flag=flag1;
    }
}

用flag和flag1使得每次排序时对排好的部分不再遍历。

14.

(1)打开终端后如何知道当前目录的地址         pwd 文件名

(2)如何知道当前目录下都有什么文件        ls

(3)想在该目录下创建一个文件        mkdir 想创建的文件名

(4)最后你发现了相同的文件        rmdir

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倚风听雨.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值