1.输出无数个“=”,因为unsigned int 值恒大于等于0,故一直满足循环条件。
2.第一种,将a的值通过c给b,把b的值直接给a
第二种,通过数学运算将a的值通过中间值赋给b
第三种,通过异或将b=b^a^b=a,a=a^b^a=b;
3.输出1,1
多次调用该函数时前者不断递增,后者不变
4.
该程序输出为Xiyou Linux Group 2020
其中第三个printf不输出,但返回0.第二个printf输出的是Xiyou Linux Group 20,因为这个字符串的大小刚好为20,于是该printf产生了一个返回值20,被第一个printf输出。
5.255 0
ch是char类型,二进制表示为8位,最大可表示255,ch+1后二进制表示为0000 0000。
6.输出结果为x=-1 y=4 t=-1
x=0 y=5 t=1
第一行中t是由-1与3按位或运算的结果
第二行中t是由0和4逻辑或运算的结果
7.结果为4
X+X在程序编译时被替换成a+b+a+b结果为4
8.(1)将2018赋值给val变量
(2)将pi指针指向2019这个地址
(3)将pi指向存放val的那块地址
(4)将val的值改为0
9.输出为Linux Linux
scanf函数首先给指针p赋“Xiyou”字符串,之后给指针q赋“Linux”字符串,但q指向p,于是将p中原来的字符串覆盖。然后指针p和q,上存的都是字符串常量“Linux”。
10.输出结果为0x7fffffffe400,0x7fffffffe400
0x7fffffffe404,0x7fffffffe410
a就代表数组a的地址,所以a与&a的结果一样。
a中元素大小为4字节,故a+1实际上为a+4,&a的单位是a这个数组本身,故&a+1相当于a+16
11.实现斐波那契数列
int fb(int a)
{
if(a<3)
return 1;
if(a>=3)
return fb(a-1)+fb(a-2);
}
int main(void)
{
int a;
scanf("%d",&a);
int b=fb(a);
printf("第%d项为%d",a,b);
return 0;
}
12.
该函数的功能是对数组进行排序,他是不断地将数组中最大的元素放到排序部分的最后。
(冒泡)
初步优化后的代码如下:
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使得每次排序时对排好的部分不再遍历。
13.
大端模式
是指数据的低位保存在内存的高地址中,而数据的高位,保
存在内存的低地址中
小端模式
是指数据的低位保存在内存的低地址中,而数据的高位保存
在内存的高地址中
我的机器是小端模式。
14.
第一列表示文件类型
第二列表示所有者权限 组用户权限 其他用户权限
第三列 对目录表示第一级子目录数 对文件表示链接数
第四列 用户名
第五列 组名
第六列 文件大小(字节数)
第七 八 九列 最后修改时间
第十列 文件名