目录
while循环
while循环通俗来讲就是让程序一直执行循环内的命令,直到触及到循环结束的条件为止,以下面的代码为例
#include <stdio.h>
//利用循环实现从1-100的累加
int main()
{
int sum = 0;
int i = 1;
while (i <= 100)
{
sum = i + sum;
printf("第%d次相加,相加结果为%d\n",i,sum);
i++;
}
printf("最后的累加结果为%d\n", sum);
return 0;
}
此代码实现的功能就是利用循环实现从1-100的累加,可以看到给定一个初始值i=1,直到满足i<=100此代码才会跳出循环,这就是while循环语句的在C语言中的运用
if选择语句
if选择语句就是让程序判断是否满足给定条件,如果满足则执行if下面的程序步骤,不满足则执行else的下的程序步骤,如果if或者else有多个步骤需要执行可以在其底下加一个大括号来囊括所有的操作,利用if选择语句和while循环我们可以简单完成以下程序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
printf("今天是否要写代码\n写的话输入1,否则输入0\n");
int a=2 ;
while (a != (0||1))
{
scanf("%d", &a);
if (a == 1)
printf("奖励每天都写代码");
else if (a == 0)
printf("回家睡觉吧");
else
{
printf("是输入0或者1,你看看你输入的是什么\n");
printf("重新输入一遍\n");
}
}
return 0;
}
可以看到当输入为1或者0又或是其他的时候分别对应的结果,因为程序要求只能输入1或者0,因此我们可以加一个while循环当输入人输入别的数字时强制再让其输入一遍,可以看看输出的结果为
既只有输入1或0才会跳出循环
函数
函数和初高中学的函数的意思是相同的,就是使用一种运算规律,通过这个对应法则来得出来的数,比如我们要写两个数相乘(需要注意的是定义函数要在调用前提前声明,并且在主函数上面)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
float Multi(float a, float b)
{
float c = a * b;
return c;
}
int main()
{
float a = 0.0;
float b = 0.0;
float c = 0.0;
printf("请输入需要相乘的两个数\n");
scanf("%f %f" ,&a,&b);
c = Multi(a, b);
printf("相乘结果为%f",c);
return 0;
}
如输出乘数为26和10输出结果如下
数组
如果要存放多个数字的话我们就需要用到数组,数组的定义如下
此数组我们定义的是浮点类型的数组,存放了1-10十个数字
如果需要调用数组既在数组后面用中括号选择要调用数的位置,需要注意的是在C语言中第一个数的位置是0 如我们结合我们写的乘法函数来调用数组计算一下结果
#include <stdio.h>
float Multi(float a, float b)
{
float c = a * b;
return c;
}
int main()
{
float A[10] = { 1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0 };
float z = 0;
z = Multi(A[0], A[9]);
printf("输出结果为%f", z);
return 0;
}
此程序运行的结果为10,代表调用了数组的第一个和第十个数字,但是我们引用引脚的时候分别对应的是0和9
关键字typedef和static
typedef
typedef是类型定义,也可以叫做类型重命名,可以把一些比较难打的类型简化如下:
#include <stdio.h>
typedef unsigned int u_int;
int main()
{
u_int a = 90;
printf("%d", a);
return 0;
}
可以看到这里无符号整数unsigned int 定义为了u_int下次调用unsigned int 直接输入u_int 即可
static
static的中文为静态的意思,可以用来修饰局部变量和全局变量以及函数
static修饰局部变量
首先我们来看下面两串代码进行比较让我们看看static对局部变量修饰的一个直观的理解第一个代码是没有static的 第二个代码在命名test函数的时候加上了个 static int a =1
#include <stdio.h>
//static修饰局部变量
void test()
{
int a = 1;
a++;
printf("%d", a);
}
int main()
{
int i = 1;
while(i <= 10)
{
test();
i++;
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//static修饰局部变量
void test()
{
int a = 1;
a++;
printf("%d", a);
}
int main()
{
int i = 1;
while(i <= 10)
{
test();
i++;
}
return 0;
}
在没有static限制条件下的输出结果如下
在加入static之后我们发现输出为
我们直到一个局部变量的生命周期就是在其函数内定义完直到此函数调用或者说使用结束后就消失了,所以说理所当然的第一个输出都为2,而static的作用就是让函数的生命周期为整个主函数周期那么长。其实static的本质是改变了变量的存储类型。内存可以分为栈区堆区和静态区,其中局部变量储存在栈区,全局变量和static修饰的静态变量处于在静态区,用static改变局部变量以后相当于将其从栈区变为静态区变量,因此生命周期为整个主函数。
static修饰全局变量和函数
对于一个全局变量,不同两个文件调用可以采用extern来引入,如下所示
输出的结果为20
但是如果用static来修饰之后会是怎么样呢?
可以看到对于不同文件来说,static修饰的全局变量让程序报错,其实,static修饰全局变量以后只能在此文件下进行调用,不可以在别的文件进行调用,相同的,函数也是如此。