IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 西邮Linux兴趣小组2020年纳新面试题简析 -> 正文阅读

[系统运维]西邮Linux兴趣小组2020年纳新面试题简析

1.运行下面的代码,输出结果是什么,请解释说明。
int i;
int main(int argc, char *argv[])
{
    i--;
    if (i > sizeof(i))
    {
        printf(">\n");
    }
    else
    {
        printf("<\n");
    }
    return 0;
}

结果为:> ????

全局变量i未初始化,默认为0,i–变成-1,sizeof(int)的结果为无符号整数4,i为有符号整数-1。

有符号整数和无符号整数比较时,有符号整数会按无符号整数来处理。

-1的补码为11111111 11111111 11111111 11111111,按无符号整数来看为4294967297,显然大于4,所以输出为? >。

2.有关宏,略

3.sizeof和strlen,略

4.函数中的静态局部变量,略

5.分析以下程序,推测并验证其作用。
#include<stdio.h>
int main(int argc,char*argv[])
{
    int number;
    unsigned mask;
    mask=1u<<31;//结果为1000....(31个0)
    scanf("%d",&number);
    while(mask)
    {
        printf("%d",(number&mask)?1:0);//第一次循环中判断number的二进制形式的第一位,是0打印0,是1打印1
        mask>>=1;//第一轮循环mask变为01000....(30个0)
    }
    return 0;
}

移位运算符>>和<<,以及其它按位运算符,略,转载:

六种位运算符_朝闻道_的博客-CSDN博客_位运算符

作用是打印输入的number的二进制补码。

6.字符数组和指针运算,略

7.以下程序段的运行结果是什么,你知道怎么判断两个浮点数是否相同吗?
#include<stdio.h>
int main(int argc,char*argv[])
{
    double a=3.14;
    float b=a;
    if((float)a==b)
    {
        printf("xiyou ");
    }
    if(a!=b)
    {
        printf("linuxgroup\n");
    }
    return 0;
}

计算机并不能准确的表达浮点数,只能表达一定精度的近似.(有关double和float表示浮点数的精度)

本题中,在执行完a = 3.14;这一条语句后,a的值实际上为3.1400000000000001(本机),但是在精度要求不是很高时,近似表示3.14。执行完float b=a;这一条语句后,a被强制类型转换为float类型,b的值实际为3.1400001(本机)。

因此,(foat)a的结果也为3.1400001,等于b,打印 Xiyou ,而a和b实际上并不相等,打印linuxgroup。

转载:

如何判断两个浮点数是否相等_yyyyeahhhhhh的博客-CSDN博客_如何判断两个浮点数是否相等

8.运行下列代码,解释运行结果并谈谈自己的理解。
#include<stdio.h>
int main(int argc,char*argv[])
{
    int a[6]={0x6f796958,0x694c2075,0x2078756e,0x756f7247,0x30322070,0};
    printf("%d\n",printf("%s",(char*)a));
    return 0;
}

输出为:

Xiyou Linux Group 2020????? ? ?? ?? (并且光标换行)

涉及数组元素的存储和字节序,大小端等知识。

大端法与小端法_u012861978的专栏-CSDN博客_小端法

本题为小端法存储,所以该数组在内存中由低地址端到高地址端存储为:

0x58 0x69 0x79 0x6f 0x75 0x20??? 0x4c 0x69 0x6e 0x75 0x78 0x20???? 0x47 0x72 0x6f 0x75 0x70 0x20???? 0x32 0x30 0x32 0x30??? 0x0

由于数组名就是数组首元素的地址,所以(char*)a即为指向数组首元0x58的指针,并且把0x58视为char类型。综上,按照转换说明%s进行打印,会依次打印0x58 0x69 0x79 0x6f.....对在ANSII表中对应的字符,最终打印:Xiyou Linux Group 2020,并让光标换行。

9.二维数组初始化:

int a[2][3]={{5,7},{5,2}};按照给定格式进行元素分配,空余位置补0.

int b[2][3]={5,7,5,2};按照顺序分配,一行满了再换下一行,剩下位置补0.

10.指针运算相关:

int a = 1;

*(char*)&a;

对a取地址得到1的地址,并转换为指向char类型变量的指针,再取此指针指向的地址就是a的第一个字节,取出来为1.

????

11.下面程序段的输出结果是什么,若取消第三行的const注释,a数组还能被修改吗?如果取
消第6、8行的注释,程序还能正常运行吗,试着解释其原因。
int main(int argc, char *argv[])
{
/*const*/ char a[] = "XiyouLinux\0";
char *b = "XiyouLinux\0";
a[5] = '\0';
// b[5] = '\0';
printf("%s\n", a);
// printf("%s\n",b);
return 0;
}

?const后不能被修改。

char *b = "XiyouLinux\0";

这句话是说,b是一个指针,初始化为指向一个字符串常量。但由于这个常量所在的地方(地址较小),所以实际上b是一个const char *b,是不可以被修改的。但由于历史原因,编译器接受不带const的写法,但是试图对b所指的字符串做写入会导致严重的后果。

总之,char *b = "XiyouLinux\0";此类字符串是不可以修改的,想修改,应该用数组。

详细内容见转载:

谈谈C语言从源文件变为可执行文件之间发生的过程详解(C程序的编译链接运行)_呋喃吖的博客-CSDN博客_c文件编译可执行文件

冒泡排序(由小到大),改进如下(加入一个判断量change):

#include<stdio.h>
int main()
{
	int s[100];
	int i, j, n, t;
    int change=1;
	scanf("%d", &n);
	for (i = 0; i < n; i++)
		scanf("%d", &s[i]); 
	for (i = 0; i < n&&change; i++)
	{
        change=0;
		for (j = 0; j < n - i - 1; j++)
		{
			if (s[j] > s[j + 1])
			{
				t = s[j];
				s[j] = s[j + 1];
				s[j + 1] = t;
                change=1;
		}
	}
    printf("%lf seconds\n", Times);
	for (i = 0; i < n; i++)
		printf("%d ", s[i]);
}

(1)(2):

命令:ls [-al]

ls??????????????? 查看当前目录下的所有目录和文件
ls -a??????????? 查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l 或 ll?????? 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
ls /dir??????????? 查看指定目录下的所有目录和文件?? 如:ls /usr

(3):touch 1.c

(4):三、拷贝目录

??? 命令:cp -r 目录名称 目录拷贝的目标位置?? -r代表递归
??? 示例:将/usr/tmp目录下的aaa目录复制到 /usr目录下面???? cp /usr/tmp/aaa? /usr
??? 注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不??? 用写-r递归

转载自:Linux常用命令_Demon的博客-CSDN博客_linux常用命令

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 14:12:36  更:2021-12-08 14:13:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:37:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码