一、小试牛刀
本文将通过使用案例来进行c语言的快速入门(本教程是以目的性为导向的学习目录),及通过可以运行的案例,并在开始说出能够完全自行敲出代码所需要的知识面,以此来帮助我们自行查找相关的资料进行针对性学习。
在最先的开始,我们要知道“注释”这个东西,只要在注释后面写入的东西都不会被计算机识别(编译器)识别,注释有两种,一种是“//”单行注释,一种就是 多行注释,他们分别如下形式
//单行注释:计算机看不见我
/*多行注释
*计算机看不见我
*计算机看不见我
*/
首先先来一个非常简单的入门程序,输出“hello!world”!
#include <stdio.h>
int main()
{
printf("Hello! World!");//输出语句:printf("你要输入的文本");_
return 0;
}
其中为了确保能将其输出就必须有一个大框架,这个大框架是一个万金油,之后在C语言的很多程序都可以看见它,这个大框架如下:
#include
int main()
{
//"添加您所需要的功能语句"
return 0;
}
由此我们可以输出更多你想要输出的
#include <stdio.h>
int main()
{
printf("1111\n");
return 0
}
二、字符大小写转换
这里涉及到的知识为:
1.变量、常量
2.循环语句while
3.条件语句if_else
4.输入语句getchar();
5.标准化输入输出语句
#include<stdio.h>
int main()
{
int i=1;//int 是一种数据类型,表示整形,在这里用作循环变量
while(i<=3)//重复循环3次,大写转小写
{
printf("please input you want to %d turn chars:\n ",i);
char c1;
scanf("%c",&c1);
getchar();
/*这里getchar的作用是吃掉垃圾字符回车键,
*因为printf函数确定输入需要按下一个回车键,
*这个回车键回残留在缓冲区,
*当i=0第一次循环过后,
*第二次循环回scanf会读取缓冲区的数据,
*就把我们本不想输入的回车吃了进去。
*导致输出结果与我们想想的不一样*/
if(c1>='A'&&c1<='Z')//这里确定是大写的字符,'a'会被机器识别成为ascii码即a是65
{
char cAtoa=c1+32;//a是65 +32 将会转换程大写的A,同理b->B
printf("c1=%c,turn=%c\n",c1,cAtoa);
}
else if(c1>='a'&&c1<='z')//这里确定是小写字符
{
char catoA=c1-32;
printf("c1=%c,turn=%c\n",c1,catoA);
}
else
{
printf("input error!\n");
}
i++;
}
return 0;
}
三、求字符串大小
1.标准化输出语句printf
2.运算符sizeof
3.string.h头文件
4.数据类型
#include <stdio.h>
#include<string.h>
int main()
{
//各种类型数据在内存中所占的内存空间
printf("sizeof(char)=%ld个Byte=8bit)\n",sizeof(char));
printf("sizeof(short)=%ld个(Byte=8bit)\n",sizeof(short));
printf("sizeof(int)=%ld个(Byte=8bit)\n",sizeof(int));
printf("sizeof(long)=%ld个(Byte=8bit)\n",sizeof(long));
printf("sizeof(float)=%ld个(Byte=8bit)\n",sizeof(float));
printf("sizeof(double)=%ld个(Byte=8bit)\n",sizeof(double));
//转义字符长度
printf("该字符有%ld个(Byte=8bit)\n",sizeof("\\\n\?\r"));
printf("该字符有%ld个(Byte=8bit)\n",sizeof("\\\n\456\r"));
return 0;
}
三、进制转换(C语言实现好麻烦,没来得及去思考如何去实现,逻辑思维转换如下图)
四、计算圆 的周长和半径
1.数据类型 float
2.宏定义
3.运算符
4.标准化输入、输出语句
#include <stdio.h>
#define PI 3.14//宏定义
int main()
{
float area=0;
float r=0;
float SumSide=0;
printf("请输入圆的半径:\n");
scanf("%f",&r);
area=PI*r*r;
SumSide=2*PI*r;
printf("该圆的边长为:%f\n该圆打面积为:%f\n",SumSide,area);
return 0;
}
五、宏函数01
1.宏函数
2.标准化输出语句
#include <stdio.h>
#define ADD(a,b) a+b//不加括号的运算
#define MUL(a,b) a*b
#define ImADD(a,b) ((a)+(b))//处处加括号的运算
#define ImMUL(a,b) ((a)*(b))
int main()
{
printf("和为%d\n",ADD(2,3)*ADD(1,4));
printf("积为%d\n",MUL(1+2,3));
printf("和为%d\n",ADD(2,3)*ADD(1,4));
printf("积为%d\n",MUL(1+2,3));
return 0;
}
六、输出未初始化的全局变量和局部变量
1.数据类型 int
2.全局变量、局部变量
3.标准化输入输出函数
4.计算机的存储结构
//全局和局部变量:Global and local
#include <stdio.h>
int b;//未初始化打全局---.bss 未初始化 0
int C = 0;//初始化的全局---.date 初始化 0
int main()
{
int a;//局部 栈区 未初始化 随机
printf("局部变量未初始化(32bit是随机数):%d\n全局变量未初始化:%d\n",a,b);
return 0;
}
六、extern有啥用
1.标准化输入输出语句
2.extern的使用
注意这里要在同一个文件夹内,新建2个.c文件
名字为 va.c
int a =10;//对,你没看错只有一行代码
名字为Test.c的文件
#include <stdio.h>
int a;//告诉编译器a,在其他文件中定义了
int main()
{
printf("%d\n",a);
return 0;
}
之后同时编译运行
gcc a.c Test.c//编译
./a.out//运行
结果:在高版本的Ubuntu中,如果Test.c中没有extern将会报错,低版本则不会。
七、static有啥用
1.标准化输出函数
2.存储类型 static
3.循环结构:for循环
#include <stdio.h>
int main()
{
int i= 0;
static int b;
for(i=0;i<5;i++)
{
//1.延长局部变量打生命周期:直到程序结束
//2.如果局部变量没有初始化,他的值为
//3.如果初始化了,只能初始化1次:初始化这条语句只执行一次
static int a=0;
a++;
printf("%d\n",a);
}
printf("static没有初始化的值为:%d\n",b);
return 0;
}
八、类型转换规则
1.标准化输出语句
2.数据类型:char、short、int、unsigned、float、double
强制类型转换:由我们字自行进行转换
隐式类型转换:横着的箭头不需要进行混合运算就可以进行转化
#include <stdio.h>
int main()
{
printf("=====强制类型转换(由我们自己转换的)=====\n");
float a=3.14;
int b=0;
b=(int)a;
printf("%f强制转换后的结果:%d\n",a,b);
printf("==========隐式类型转换(编译器自己转换的)============\n");
printf("=====1.char->int(不需要进行混合运算,就会进行转化)=====\n");
char a1='a';
printf("%d\n",a1);//char可以当作当int(%d)类型去用
printf("=====2.short->int(不需要进行混合运算,就会进行转化)=====\n");
short a2=20;
printf("%d\n",a2);//short可以当做int(%d)类型去用
printf("=====3.float->double(不需要进行混合运算,就会进行转化)=====\n");
float a3=3.14;
printf("%lf\n",a3);//float可以当作double(%lf)类型去用
printf("==========4.int*long->unsigned==========\n");
unsigned int a4=2;
int b4=-10;
printf("%d\n",a4+b4);//%u、%d
printf("==========5.unsigned*long->long==========\n");
long a5=3;
unsigned b5=5;
printf("%ld\n",a5+b5);//%ld
printf("==========6.long*double->double==========\n");
double a6 = 11;
long b6 = 22;
printf("%lf\n",a6+b6);//%f、%lf
printf("==========7.int*float->double==========\n");
float a7=6.66;
int b7=23;
printf("%lf\n",a7*b7);//%f、%lf
printf("==========8.char*float->double==========\n");
float b8=3.33;
char a8='a';
printf("%lf",a8*b8);//%f、%lf
return 0;
}
九、判断闰年与否
1.if_else语句
2.输出语句
#include <stdio.h>
//世纪闰年、普通闰年
int main()
{ int year=0;
printf("请输入您要判断的年份:\n");
scanf("%d",&year);
if((0==year%4&&0!=year%100)||(0==year%400))
{
printf("%d年为闰年\n",year);
}
else
{
printf("%d年不是闰年\n",year);
}
return 0;
}
未完待续