2019西邮Linux小组纳新题

1.下面代码段将打印出多少个’=’?运用相关知识解释该输出。

int main()
{
        for(unsigned int i=3;i>=0;i--)
        {
                putchar('=');
        }
}

无数个“=”,因为i的类型为无符号类型没有负数,所以程序会一直循环下去。

2.下列三种交换整数的方式是如何实现交换的?

/*(1)*/ int c = a ; a = b ; b = c;
/*(2)*/ a = a - b ; b = b + a ; a = b -a ;
/*(3)*/ a ^ = b ; b ^ = a ; a ^ = b ;

第一种是引用中间变量来实现交换。
第二种是通过数学运算来实现交换。首先a=a-b;所以b=b+a-b=a;然后a=a-a+b=b;
第三种是通过异或运算来实现交换。首先a=a^b;所以b=b^a^b=a^0=a;然后a=a^b=a^b^a=b^0=b;

3.有如下代码段所示的函数f,当我们执行该函数时,会产生什么样的输出结果?在同一程序中多次执行该函数,输出结果是否一致?

void f()
{
	static int a=0;
	int b=0;
	printf("%d,%d",++a,++b);
}

不一致,应为静态变量只能初始化一次,所以答案为b会逐渐增加而a始终为0。

4.下面程序段的输出是什么?请解释该现象并说出与之相关近可能多的知识;

int main(void)
{
	printf("%d\n",printf("Xiyou Linux Group2%d",printf("")));
}

输出为:Xiyou Linux Group2019。因为printf的返回值为输出的长度,又因为最里面的printf其返回值为0,所以先输出Xiyou Linux Group20,又因为Xiyou Linux Group20的长度为19,所以最终的输出结果为Xiyou Linux Group2019。

5.执行下面的代码段,会输出什么?请试着解释其原因,并叙述相关知识;

int main(int argc, char *argv[])
{
	char ch = 255;
	int d = a + 1;
	printf("%d %d",ch,d); 
}

这里的a由于笔者不清楚是变量还是字符所以笔者无法给出第二个输出值。
第一个值为-1,因为char 255在计算机中是以二进制补码储存的其补码为1111 1111但以有符号整型的方式解读1111 1111的值为-1。

6.执行以下代码段,将产生什么样的输出?请对输出加以解释,并手动计算代码中t的值;

int main(int argc, char *argv[])
{
	char x=-2,y=3;
	char t=(++x)|(y++);
	printf("x=%d,y=%d,t=%d\n",x,y,t);
	t=(++x)||(y++);
	printf("x=%d,y=%d,t=%d\n",x,y,t);
}

输出为x=-1,y=4,t=-1;x=0,y=5,t=1。其中x,y的值很容易看出,而第一个t中的|是在做二进制的‘或’运算,其中x=1111 1111 | y=0000 0100 = 1111 1111。所以第一个t=-1。第二个t是在做逻辑运算0||5=1。

7.下面代码段的输出结果是什么?输出该结果的原因是?

#define X a+b
int main()
{
	int a=1,b=1;
	printf("%d\n",X*X);
} 

输出为3,因为define的规则是只做替换而不进行运算。

8.请解释下面代码段中每一句的效果;

int val = 2018;
int *pi = 2019;
pi = &val;
*pi = 0;

第一句:定义了一个值为2018的变量val;
第二句:使pi指向2019这个地址;
第三句:使pi指向val的地址;
第四局:使pi指向的地址的值变为0。

9.执行下列程序段,并输入“Xiyou Linux”,那么程序的输出结果是什么?请解释其原因;

int main()
{
	char *p=(char *)malloc(sizeof(char) * 20),*q=p;
	scanf("%s %s",p,q);
	printf("%s %s\n",p,q);
}

输出为Linux Linux:开辟了20个char类行的空间,然后*q=p,则p和q都指向了开辟出来的空间,先输入Xiyou则p和q都表示Xiyou,再输入Linux则将原先的Xiyou个覆盖了,所以p和q都是Linux。

10.执行下面的程序段,每次执行的输出结果一致吗,整理并解释输出结果;

int main()
{
	int a[4]={2,0,1,9};
	printf("%p %p\n",a,&a);
	printf("%p %p\n",a+1,&a+1);
}

输出结果为:
000000000062FE10 000000000062FE10
000000000062FE14 000000000062FE20
第一个和第二个都代表数组的地址;第三个代表a[1]的地址;第四个代表数组再加上整个数组大小的地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问。它还支持编译时检查,可以在编译阶段就发现潜在的问。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问。它还支持编译时检查,可以在编译阶段就发现潜在的问。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问。它还支持编译时检查,可以在编译阶段就发现潜在的问。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问。它还支持编译时检查,可以在编译阶段就发现潜在的问。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值