这个题看到unsigned表示需要显示给出表示这个变量,没有符号值能存储数的大小,而且不能表示正负,那么停止条件i<0无法达成,那么这个for循环会持续进行下去,有无数个‘=’。
(1)采用的是又设了一个变量,先将a中的数值赋给c,然后将a变为c,再将c中a的值赋给b,这样就完成了交换数值。
(2)是先将a的值减去b的值,得到的差和b相加就得到了a的值并将其赋值给b,此时的b即为原先a的值,在减去a与b的差值,得到了原先b的值并将其赋值给a,这样就实现了数值交换。
(3)采用按位异或赋值的方法,在二进制下先对a和b进行比对得到的值赋给a
,在a中记录下了原a和原b每位上相同不相同的标志(0代表相同1代表不同)
第二步中a若是第x位为0,取不同的再做改为0则结果b中保留和原b一样,但0又表示代表相同原a中第i位和原b第i位一样,所以结果b中第i位和原a中第i位一样。反面说a中若第i位为1,则结果b中第i位和原b第i位是相反的,但1又表示代表相同原a中第i位和原b第i位不同,所以结果b中第i位和原a中第i位一样,这样第二步的结果新b就是原来的a。第三步用同样的方法将b原来的值又赋值给了a。
先定义了静态整型变量a为0,后又定义整型b为0,再++a,++a是先自增再执行表达式子,执行表达式时使用的是自增后的a。所以单独使用的结果为自增后的a为1,b同理也为1,结果为1,1。但是当多次运行后,结果由于a为静态变量会使得,a的值不会像b每次都被重新定义为0,所以多于1次后会使a的值大于1。
这个题一个printf里面套了两个printf,在最外层是一个输出整型以及一个换行符,由于内层第二层里面有19个字符,最后一个%d代指的是一个字符,故%d的位置要输出19,并且先输出第二个printf里面的内容,故结果为Xiyou Linux Group2019。
这个题目里面的a没有定义,不知道a的值,编译i器会报错,如果忽略这个问题,那么由于所占有的内存不确定,它的值也不确定,结果可能为255 x
第一个char t里有一个按位或,将x+1与y的二进制进行比较,结果为-1,再第二个t进行逻辑或计算,由于x+1为0为假但是y为4所以结果为1,所以最后的输出结果为:x = -1, y = 4, t = -1
x = 0, y = 5, t = 1
因为用了宏定义了X为a+b,故printf内为a+b*a+b,又因为乘法的优先性,故结果为1+1+1为3。
第一句是定义了一个整形变量为2018,申请了一个空间,第二句是声明了一个pi指针变量为2019,第三句将val这个变量的地址赋值给了pi,第四局将pi的指针指向了0。
在定义了p的指针时运用了malloc函数malloc的返回值是一个指针,指向一段可用内存的起始位置,指向一段可用内存的起始地址。所以将p的地址指向了q的内容,故结果为Linux Linux。
%p是打印地址(指针地址)的,是十六进制的形式,但是会全部打完,即有多少位打印多少位。故结果为打印a的地址两次,a+1的地址一次,a的地址+1一次,且每次a所占用内存的地址是动态的,所以每次结果都不同。
采用递推法
#include<stdio.h>
int main(){
int n,f1,f2,f3,i;
while(~scanf("%d",&n)){
f1=1,f2=1;
if(n<2){
printf("1\n");
continue;
}
for(i=3;i<=n;i++){
f3=(f1+f2)%66666;
f1=f2;
f2=f3;
}
printf("%d\n",f3);
}
return 0;
}`
采用递归法
#include<stdio.h>
int f(int n);
int f(int n)
{
if (n == 0 || n == 1)
return 1;
else
{
return f(n - 1) + f(n - 2);
}
}
int main()
{
int n, result;
printf("请输入x:");
scanf_s("%d", &n);
result = f(n - 1);
printf("斐波那契的第%d项为:%d\n", n, result);
return 0;
}
这是选择排序(冒泡排序),将一组数字分为两个一组的分别进行比较,遍历所有的数字之后便能完成排序,这种排序方法速度和效率不高但是稳定性好。还有效率和速度都高于这种算法的快速排序选取一个基准数;然后将大于和小于基准的元素分别放置于基准数两边;继续分别对按此方法分治基准数的两侧,直至整个序列有序。
大端机指高位字节存放在低位地址,低位字节存放在高位地址,而小端机指高位字节存放在高位地址,低位字节存放在低位地址。
可以通过地址判断大小端机
int main(void)
{
int x = 0x1122;
char *y = NULL;
y = (char *)(&x);
print发(“%d”,y[0]);
return 0;
}
结果为0x22则为小端机,否之则为大端机。
Linux ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。而-al 指各项说明,查看设备是否具有读写权限。第一列指文件类型及权限,第二列指链接占用的节点,第三列指文件所有者,第四列指文件所有者
的用户组,这里都是root,第五列指文件大小,后面紧跟的是文件的创建时间或者最近修改时间,最后是文件名称。