C语言第二讲

1、大端、小端的定义:

小端:低地址存放低数据(例如PC、inter等)

大端:低地址存放高数据(例如手机、网络等)

举个例子:

对于0x12345678来说:

C语言第二讲_第1张图片

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

第二题后三个图解如下:

C语言第二讲_第2张图片C语言第二讲_第3张图片C语言第二讲_第4张图片

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


你可能感兴趣的:(基础)