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