筑基八层 —— 问题思考分析并解决
创始人
2024-05-27 05:45:06
0

 

目录

 

零:移步

一.修炼必备

二.问题思考(先思考)

三.问题解答


零:移步

  CSDN由于我的排版不怎么好看,我的有道云笔记相当的美观,请移步有道云笔记

一.修炼必备

 1.入门必备:VS2019社区版,下载地址:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com)

 2.趁手武器:印象笔记/有道云笔记

 3.修炼秘籍:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com)

 4.雷劫必备:leetcode 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

 注:遇到瓶颈怎么办?百度百科_全球领先的中文百科全书 (baidu.com)

二.问题思考(先思考)

 注:所有问题需代码证明

 1.短路运算符的特点

 2.%操作符和/操作符的特点

1)%的特点
2) /的特点:a.整数除法  b.小数除法  【观察结果得出结论】

 3. 逗号表达式的特点

 4.当函数的返回值没有写的时候,默认返回的是int

 5.字符串或数组在进行传参的时候把数组名传过去,形参中接收到的是什么?

 6.建议:当指针的内容无需改变的时候,加const,const使指针指向的内容不能改变(即加上const后具有健壮性)

 7.怎么证明数据在内存中存储的是补码?

 8.既然内存中存储的是补码,那么在控制台上打印的数值是补码吗?为什么?

 9.补码变成原码的两种形式

 10.正整数和负整数的二进制表示形式?

1)整数的表示形式是原码、反码、补码
2)正整数的表示形式均相同

3)负整数的表示形式:原码;反码 = 原码符号位不变 + 其他位按位取反

 11.正/负整数的原码、反码、补码规则

 12.说说C语言中#include 是什么意思

 13.为什么long型的数据类型明明比int型的数据类型大,为什么两者的所占的字节数相等?

 14.求出C语言中各个数据类型所占的字节空间

 15.全局变量和局部变量的区别?

 16.全局变量和局部变量的作用域和生命周期?

 17.C语言中常量的种类及它们的使用形式?

 18.scanf()和printf()函数的返回值是什么类型?并查看它们的函数模型

 19.C语言中的字符串结束标志是什么?如何查看一个字符串中是否有结束标志?

 20.代码验证:为什么C语言中0表示假,非0表示真

三.问题解答

 1.短路运算符的特点

&&:如果第一个操作符为假,则不执行后面的代码

||:如果第一个操作符为真,则不执行后面的代码

#include 
int main()
{int a = 0, b = 1, c = 2;//int d = a++ && b++ && c;//a=0为假,后置++先使用再++//printf("a=%d,b=%d,c=%d,d=%d\n", a, b, c, d);//1,1,2,0int d = a++ || b ++ || c++;//a为0,为假,b=1为真printf("a=%d,b=%d,c=%d,d=%d\n", a, b, c, d);//1,2,2,1return 0;
}

 2.%操作符和/操作符的特点

1)除法的特点:

      a.整数除法:得到的结果是整数,舍弃了小数部分

      b.小数除法:得到的结果是小数,两个操作数中必有一个浮点数

2)%的特点:只能进行整数之间的取模,浮点数之间不能进行取模

#include 
int main()
{int a = 9;int b = 2;int c = a / b;//整数除法double d = a / 2.0;//小数除法,有一方为浮点数printf("%d %lf\n", c, d);int e = a % b;//整数能进行取模运算//int f = a % 3.0;//浮点数不能进行取模运算return 0;
}

 3.逗号表达式的特点

  ——当运算中有多个逗号隔开的表达式,最后一个表达式是结果

#include 
int main()
{int a = 1;int b = 1;int num = (a++, b++, a);//最后一个表达式a为结果printf("%d\n", num);//2return 0;
}

 4.当函数的返回值没有写的时候,默认返回的是int

#include 
swap()
{int num = 10;//当没有写返回值的时候,结果返回的是随机值return num;
}
int main()
{int res = swap();printf("%d\n", res);//10return 0;
}

 5.字符串或数组在进行传参的时候把数组名传过去,形参中接收到的是什么?

  ——形参收到的是数组或字符串的首元素地址

#include 
void test1(char* ch)
{//查看形参的地址printf("%p\n", ch);
}void test2(int* arr)
{//查看形参的地址printf("%p\n", arr);
}int main()
{char ch[100] = "abcdef";int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//形参的地址和字符串/数组首元素的地址进行比较test1(ch);printf("ch[0] = %p\n", &ch[0]);test2(arr);printf("arr[0] = %p\n", &arr[0]);return 0;
}

 6..建议:当指针的内容不需要改变的时候,加上const,const使指针指向的内容不能改变(即加上const后具有健壮性)

#include 
void test(const char* arr)
{//*arr = 'a';//错误,加上const后不能修改arr的值
}int main()
{char arr[100] = "abcdfhgeh";test(arr);return 0;
}

 7.怎么证明数据在内存中存储的是补码?

使用负数证明,把补码中存储的值按照十六进行打印

注:我们还可以使用调试来查看a在内存中的存储

#include 
int main()
{int a = -1;//10000000 00000000 00000000 00000001 原码//11111111 11111111 11111111 11111110 反码//11111111 11111111 11111111 11111111 补码//四个二进制位是一个16进制位//ffffffffprintf("%x\n", a);//ffffffffreturn 0;
}

 8.内存中存储的是补码,那么在控制台上打印的数值是补码吗?为什么?

  ——不是,打印是十进制数,补码需要转化为原码,在由原码转化为十进制

#include 
int main()
{int a = -1;//10000000 00000000 00000000 00000001 原码//11111111 11111111 11111111 11111110 反码//11111111 11111111 11111111 11111111 补码printf("%d\n", a);//-1//注意:若是按照十六进制打印,则打印的补码(因为%x是打印无符号数,原码、反码、补码均相同)return 0;
}

 9.补码变成原码的两种形式

1)-1,取反

2)取反,+1

#include 
int main()
{int a = -2;//11111111 11111111 11111111 11111110 补码//变回原码:法一//11111111 11111111 11111111 11111110 补码//11111111 11111111 11111111 11111101 反码//10000000 00000000 00000000 00000010 原码 -2//法二// 11111111 11111111 11111111 11111110 补码// 10000000 00000000 00000000 00000001 取反// 10000000 00000000 00000000 00000010 +1 -2return 0;
}

 10.整数的二进制表示形式?

 11.正/负整数的原码、反码、补码规则

1)整数的表示形式是原码、反码、补码;

2)正整数的表示形式均相同;

3)负整数的表示形式:原码;反码 = 原码符号位不变 + 其他位按位取反

#include 
int main()
{int a = 1;//00000000 00000000 00000000 00000001 补码printf("%x\n", a);//%x把补码按照十六进制打印 :1int b = -1;//10000000 00000000 00000000 00000001 原码//11111111 11111111 11111111 11111110 反码//11111111 11111111 11111111 11111111 补码//ffffff --> 十六进制形式printf("%x\n", b);//ffffffffreturn 0;
}

 12.说说C语言中#include 是什么意思

1)#include 是预处理指令

2)stdio : standard input output --> 标准输入输出

3).h表示这是一个头文件 

 13.为什么long型的排名明明在int型的后面,为什么两者的所占的字节数相等? 

  ——C语言标准下: sizeof(long) >= sizeof(int)

#include 
int main()
{//int的值最大值是2147483647int a = 2147483647;long b = 2147483647;//注:两者的最大值均是2^31-1;printf("%d\n", a);return 0;
}

 14.求出C语言中各个数据类型所占的字节空间

#include 
int main()
{printf("%d\n", sizeof(char));//1printf("%d\n", sizeof(short));//2printf("%d\n", sizeof(int));//4printf("%d\n", sizeof(long));//4printf("%d\n", sizeof(long long));//8printf("%d\n", sizeof(float));//4printf("%d\n", sizeof(double));//8return 0;
}

 15.全局变量和局部变量的区别?

1)全局变量具有全局性,在源程序中均可使用全局变量

2)局部变量具有局部性,即局限于一个{}中,只能在{}中使用

3)注:当局部变量和全局变量名字相同时,在使用时,优先使用局部变量

#include 
int num = 10;
int main()
{{int num = 20;printf("%d\n", num);//20}printf("%d\n", num);//10return 0;
}

 16.全局变量和局部变量的作用域和生命周期?

1)作用域

  a.全局变量:全局变量的作用域在整个工程内,即整个工程内那点均可使用

  b.局部变量:在自己的{}中

2)生命周期

  a.全局变量:全局变量的生命周期和整个工程的生命周期一样

  b.局部变量:出了{}后没有作用

#include 
int main()
{{int num = 10;}//printf("%d\n", num);//错误,num的变量的作用域和生命周期在自己所在{}中return 0;
}
//注:我们不推荐大量使用全局变量,因为全局变量容易被改变,一不小心就会使程序崩溃

 17.C语言中常量的种类及它们的使用形式?

1)字面常量:3,5,'a',"abcd"

2)const定义的常变量:const int a = 10; a不可在改变

3)#define定义的标识符常量 : #define MAX 10

4)枚举常量: enum Grade{ A,B,C,D};

注:常量一般需要使用大写字面表示

#include 
int main()
{//字面常量3, 5, "agcgs";//const定义的常变量const int num = 10;//num = 11;//不可改变//#define定义的标识符常量
#define MAX 10printf("%d\n", MAX);//10//枚举常量enum Grade{A,//0B,//1C,//2D//3};printf("%d\n", A);//0printf("%d\n", B);//1printf("%d\n", C);//2printf("%d\n", D);//3return 0;
}

 18.scanf()和printf()函数的返回值是什么类型?并查看它们的函数模型

  ——scanf()和printf()函数的返回类型是int

#include 
int main()
{int num = 0;int ret = scanf("%d", &num);int res = printf("%d\n", num);printf("%d %d\n", ret, res);//1 2return 0;
}

 函数模型:

 

 19.C语言中的字符串结束标志是什么?如何查看一个字符串中是否有结束标志?

  ——结束标志:'\0'

#include 
int main()
{char str[100] = "abcdhdde";return 0;
}

  调式过程:

 20. 代码验证:为什么C语言中0表示假,非0表示真

#include 
int main()
{int a = 0;int b = -1;int c = 1;if (a){printf("haha\n");}if (!a){printf("hehe\n");}if (b){printf("hihi\n");}if (c){printf("hoho\n");}return 0;
}

  !!!恭喜,成功突破至筑基八层!!!

相关内容

热门资讯

iOSapp移植到安卓系统,i... 你有没有想过,那些在iOS上让你爱不释手的app,是不是也能在安卓系统上大放异彩呢?今天,就让我带你...
现在安卓随便换系统,探索个性化... 你知道吗?现在安卓手机换系统简直就像换衣服一样简单!没错,就是那种随时随地、随心所欲的感觉。今天,就...
安卓系统安装按钮灰色,探究原因... 最近发现了一个让人头疼的小问题,那就是安卓手机的安装按钮突然变成了灰色,这可真是让人摸不着头脑。你知...
安卓7.1.1操作系统,系统特... 你知道吗?最近我在手机上发现了一个超级酷的新玩意儿——安卓7.1.1操作系统!这可不是什么小打小闹的...
安卓os系统怎么设置,并使用`... 你有没有发现,你的安卓手机有时候就像一个不听话的小孩子,有时候设置起来真是让人头疼呢?别急,今天就来...
安卓降低系统版本5.1,探索安... 你知道吗?最近安卓系统又来了一次大动作,竟然把系统版本给降到了5.1!这可真是让人有点摸不着头脑,不...
解放安卓系统被保护,解放安卓系... 你有没有想过,你的安卓手机其实可以更加自由地呼吸呢?是的,你没听错,我说的就是解放安卓系统被保护的束...
校务帮安卓系统下载,便捷校园生... 你有没有想过,你的手机里装了一个神奇的助手——校务帮安卓系统下载?没错,就是那个能让你轻松管理学校事...
安卓系统没有拼多多,拼多多崛起... 你知道吗?最近我在手机上发现了一个小小的秘密,那就是安卓系统里竟然没有拼多多这个应用!这可真是让我大...
甜城麻将安卓系统,解锁全新麻将... 你有没有听说过那个超级火的甜城麻将安卓系统?没错,就是那个让无数麻将爱好者为之疯狂的软件!今天,就让...
安卓系统卸载的软件,深度揭秘卸... 手机里的软件越来越多,是不是感觉内存不够用了?别急,今天就来教你怎么在安卓系统里卸载那些不再需要的软...
安卓系统推荐好游戏,畅享指尖乐... 手机里的游戏可是咱们休闲娱乐的好伙伴,尤其是安卓系统的用户,选择面那可是相当广呢!今天,就让我来给你...
王者安卓系统怎么卖,揭秘如何轻... 你有没有听说最近王者安卓系统的火爆程度?没错,就是那个让无数玩家沉迷其中的王者荣耀!今天,我就来给你...
安卓开发系统内置证书,基于安卓... 你有没有想过,你的安卓手机里那些神秘的内置证书,它们到底是个啥玩意儿?别急,今天就来给你揭秘这些隐藏...
荣耀安装安卓原生系统,深度体验... 你知道吗?最近荣耀手机界可是掀起了一股热潮,那就是——荣耀安装安卓原生系统!这可不是什么小打小闹,而...
安卓13小米系统,创新功能与流... 你知道吗?最近安卓13系统可谓是风头无两,各大手机厂商纷纷推出自家的新版系统,其中小米的安卓13系统...
鸿蒙系统底层安卓10,融合与创... 你知道吗?最近手机圈里可是热闹非凡呢!华为的新操作系统鸿蒙系统,竟然在底层采用了安卓10的架构。这可...
安卓系统辅助在哪关闭,轻松关闭... 你有没有发现,安卓系统的辅助功能真是贴心到不行啊!不过,有时候这些功能太多,用起来有点乱糟糟的。别急...
安卓系统outlook邮件设置... 你有没有发现,自从你把手机升级到了安卓系统,邮件管理变得有点复杂呢?别急,今天就来手把手教你如何设置...
安卓系统停止向华为,自主操作系... 你知道吗?最近科技圈可是炸开了锅!安卓系统突然宣布停止向华为提供技术支持,这可不仅仅是两家公司之间的...