1、大端、小端的定义:
小端:低地址存放低数据(例如PC、inter等)
大端:低地址存放高数据(例如手机、网络等)
举个例子:
对于0x12345678来说:
2、算法的定义以及如何运用算法:
算法是为解决一个问题而采取的方法和步骤,对同一个问题,可以有不同的解题方法和步骤为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。
3、为什么不提倡使用scanf?
理由:当在程序中写scanf("",&);时,有时候会习惯性在需要输入的东西后加符号或者
换行符或回车,这时候虽然程序运行没有错误,但在输入变量值时就会出现问题。因
此。不提倡使用scanf语句,可以使用getchar等语句。
例如:
scanf(“%d%d\n”,&a,&b)运行程序时会出现输入两个数之后回车不出现运行结果,因为习惯性的加入了换行符,故程序认为换行符也是输入的变量,因而没有执行下一步。
4、功能函数举例:
求两个值的最大值?依赖求两个数的最大值求三个数的最大值?
首先我们可以写出求两个数的最大值的函数,但是现在又有了新的问题,让我们求三个
数中的最大值,显然这个问题也并不难,定义三个变量相互比较即可,但是有没有一种
更简便的方法呢?答案是有的,那就是利用之前写的比较两个数的最大值的函数,调用
后再与第三个需要比较的数比较即可,下面是代码:
int Max2(int a,int b)
{
if(a > b)
{
return a;
printf("%d\n",a);
}
if(a < b)
{
return b;
printf("%d\n",b);
}
}
void Max3(int a,int b,int c)
{
printf("%d\n",Max2(Max2(a,b),c));
}
5、求下列语句的输出值:
(1) float a = 5/2; //2.0
float b = 5/2.0; //2.5
float c = (float)5/2; //2.5
int d = (float)(5/2); //2.0
float e = 5/(float)2; //2.5
printf("%f,%f,%f,%f,%f\n",a,b,c,d,e);
(2) printf("%d,%d,%d,%d\n",10%3,-10%3,10%-3,-10%-3); //1,-1,1,-1
第二题后三个图解如下:
6、if和else语句相关问题:
求下列代码的输出值:
int a = 10;
if(20 < a < 30)
{
printf("if == %d\n",a);
}
else
{
printf("else == %d\n",a);
}
该问题的输出值为if == 1,因为在if语句中判断的是该句话的真假,由于10大于20为假,故值为0,而0小于30为真,故值为1,因为1为真所以在if语句中输出,并且输出值为1.
请选择下列语句中和该语句意思相同的语句:
int a = 10;
if(a)printf("true\n");else printf("false\n");
A: if(a == 1)printf("true\n");else printf("false\n");
B: if(a != 1)printf("true\n");else printf("false\n");
C: if(a == 0)printf("false\n");else printf("true\n");
D: if(a != 0)printf("true\n");else printf("false\n");
答案为C和D ,这里if语句中的1指的不是判断真假,而是把1赋值给a,因此推出A和B都是错的,因此选择C和D
7、逻辑运算符相关问题:
求下列代码的输出值:
int a = 1;
int b = 0;
int c = 2;
if (a++ || b++ || c++)
{
printf("if == %d,%d,%d\n", a, b, c);
}
else
{
printf("else == %d,%d,%d\n", a, b, c);
}
该问题的输出值为if==2,0,2因为1为真,0为假,故a++||b++为真,所以到这一步已经判断该语句为真,故应该在if语句中输出,只运行一步a++,所以输出值为if==2,0,2
如果将该代码中的||改成&&输出值为else==2,1,2这是因为1为真,0为假,所以a++&&b++该句话为假,所以应该在else中输出,当判断到b++时才停止,故输出值为else==2,1,2
int a = 10; a = !!a; 输出结果为 a = 1;
8、++i和i++的区别:
这里用两段代码来解释++i和i++的区别:
int i = 10;
int j = i++; //相当于tmp = i; j = tmp;i = i+1
printf("%d\n",i); //11
printf("%d\n",j); //10
int j = ++i; //相当于i= i+1;j = i;
printf("%d\n",i); //11
printf("%d\n",j); //11