初学c语言
这一周观经过了十几个小时的c语言的学习,来谈谈我对c语言的了解。
**第一部分**——c语言程序编写软件
Microsoft visual studio 2019 下载链接与安装 https://zhuanlan.zhihu.com/p/94998894
**第二部分**——c语言的分布编译
1、预处理:宏定义展开,头文件展开,条件编译,去掉注释
2、编译:检查语法,将c语言转换成c汇编语言
3、汇编:将汇编语言转换成机械语言(采用二进制码)【这一点是我我们学习c语言的重点】
4、链接:将C语言依赖库链接到程序中
**第三部分**——c程序设计
1、了解什么是变量和常量
常量:在程序运行过程中,其值不能变化的量称为常量。
变量:变量代表一个有名字、具有特定属性的一个存储单元。它用来存放数据,也就是存放变量的值。在程序运行过程中它可以改变。
2、数据的类型![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424180212770.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU3Mzk2NjA5,size_16,color_FFFFFF,t_70#pic_center)
3、了解转义字符和最常用的算术运算符
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424181043979.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU3Mzk2NjA5,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424181104368.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU3Mzk2NjA5,size_16,color_FFFFFF,t_70#pic_center)
补充:include <stdio.h>
include 是导入一个文件
stdio.h 是一个标准库 i(input),o(output)是标准输入输出库 .h是头文件
< >表示导入系统文件 " "表示导入自定义文件
int main (){ }
int 是数据类型 整型 main程序的主函数 程序有且只有一个主函数
()里面表示函数的参数 里面可写void表示空
{ }:表示函数体 代码体 程序体
函数:如printf(“xxxx”,\n):
是stdio.h中系统提供的函数 表示在标准输出设备上打印字符串
\n是转义字符 表示换行
return 0
如果出现在其他函数中表示函数结束
4,最简单的c程序设计编译与执行(了解了以上前提下)
例题1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//一斤果3.25块钱,买3.2斤
int main(void)
{
float a = 3.25; //浮点型
float b = 3.2;
float c = a * b;
printf("%.2f\n", c); //保留2位小数
printf("嘎嘎嘎 "); //在屏幕上打出 嘎嘎嘎 ? %%(还有其它特殊转义字符)
return 0;
}
例题2
//求圆的面积与周长
#include <stdio.h>
int main(void)
{
const float pi = 3.141592;//const 表示常量
float r = 5;
float s = pi * r * r;
float c = 2 * pi * r;
printf(“圆的面积%.5f\n”, s);
printf(“圆的周长%.5f\n”, c);
return 0;
}
例题3
//输入一个十进制数,让它变为多少进制的
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int a, b;
printf(“请输入a,b的值:”);
scanf("%d,%d", &a, &b); //将键盘上输出a,b的值打在标椎设备上
printf(“a输出8进制值%o\n”, a);
printf(“a输出10进制值%d\n”, a);
printf(“a输出16进制值%X\n”, a);
printf(“b输出8进制值%o\n”, b);
printf(“b输出10进制值%d\n”, b);
printf(“b输出16进制值%x\n”, b);
return 0;
}
例题4(输出输入整型8,10,16进制数)
//输入不为十进制的书=数,让它变为其它进制
int main()
{
int a = 0123; //值为8进制类型
int b = 0x123; //值为16进制类型
printf(“a输出8进制值%o\n”, a);
printf(“a输出10进制值%d\n”, a);
printf(“a输出16进制值%X\n”, a);
printf(“b输出8进制值%o\n”, b);
printf(“b输出10进制值%d\n”, b);
printf(“b输出16进制值%x\n”, b);
return 0;
}
例题5
//整型类型(short ,int, long, long long的使用
#include <stdio.h>
int main(void)
{
short a = 10;
int b = 20;
long c = 30;
long long d = 40;
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
printf("%d\n", d);
return 0;
}
例题6
//整型的大小和范围
int main()
{
short a;
int b;
long c;
long long d;
unsigned int len = sizeof(long long);//括号内可以为 short int long long long
printf(“短整型%d\n”, sizeof(a));
printf(“整型%d\n”, sizeof(b));
printf(“长整型%d\n”, sizeof©);
printf(“长长整型%d\n”, sizeof(d));
return 0;
}
例题7(字符型)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char ch=‘a’; //字符型需要‘’,且‘’内只能放入一个字符,a为控制变量
printf(“请输入小写字母:”);
scanf("%c/n", &ch);
printf(“输出相应的大写字母为:%c\n”, ch-32); //ASCII值a=A+32,a从97开始,A从65开始
printf(“输出相应的控制字符ASCII值为:%d\n”, ch);
return 0;
}
//两个字符型相减用 %d
例题8(浮点型,内存地址编号)
/*类型:单精度float 表示为float a=3.14f;
双精度double 表示为double a=3.14
*/#include <stdio.h>
int main(void)
{
int a = 10;
printf("%p\n", &a); //%p 表示输出一个变量对应内存地址编号(无符号十六进制整形数)
return 0;
}
//查看内存地址编号步骤:调试-窗口-内存-内存-看第一行前四个字节(内存大小端对齐)
例题9(2,4,8,16进制互换;数据的储存形式)
/*十进制转成二进制、八进制、十六进制(除二、八、十六反序取余法)
eg 变二进制
10——1010
解:除以 整除数 余数
2 10 0
2 5 1
2 2 0
1 1
eg变八进制
123——173
解:除以 整除数 余数
8 123 3
8 15 7
1 1
eg变十六进制
123——7b
解:除以 整除数 余数
16 123 11=b(十六进制)
16 7 7
**二进制、八进制、十六进制转成十进制(权值法)
eg二进制变十进制(将2进制从末尾开始每个数*2^n,n=0开始,最后相加)
1010——10
解:
便捷方法总结——————
由十六进制-------(8421法则)十进制----------二进制(四个数字一格)
由八进制---------(8421法则)十进制----------二进制(三个数字一格)
eg.十六进制转成二进制(四个数一格)
73abc------0111 0011 1010 1011 1100
解:7 =4+3 =100+11 =111 补全0111
3 =11 补全0011
a =10 =8+2 =1000+10 =1010 1010
b =11 =8+3 =1000+11 =1011 1011
c =12 =8+4 =1000+100 =1100 1100
~~~~~(化成十进制)~~~~~~~ ~(化成十六进制)~
eg.二进制转成八进制(尾向首排三个数字一格)
10 001 010 101 010 101----------232525
解:10------2
001-----3
010-----2
101-----5
010-----2
101-----5 (十进制变化得到)
**数据的存储形式(二进制)
字符型char 一个字节8位
整型 int 一个字节32位
在计算机系统中数值一律用补码来储存
整型正数 原码=反码=补码 码的第一个数为0,表示正数(符号位)
整型负数 原码首数不变,其它1-0转换=反码; 反码最后数+1=补码 码的第一个数为1,表示负数(符号位)
eg.十进制变二进制(原码,反码,补码,几进制值之间的转换)
char ch=10;(正数十进制) char ch=-10;(负数十进制)
原码:0000 1010 原码:1000 1010
反码:0000 1010 反码:1111 0101
补码:0000 1010 补码:1111 0110
****数据最大储值
- signed int a=…
-2^7 至 2^7-1 (字符型 char)
-2^32 至 2^42-1 (整型 int)
-2^64 至 2^64-1 (整型 long)
*/
最后温馨提示(编程得多实战才有收获,才知道自己那些细节做得不够好)
个人感觉在做题中学习才能学得更好
不喜勿喷!
原文链接:http://blog.qmgua.com/?id=48
=========================================
http://blog.qmgua.com/ 为 “布尔博客” 唯一官方服务平台,请勿相信其他任何渠道。