由于大学的无知,懒惰,学过的c语言可能跟没学一样,自己也不知道学过哪些,需要补的洞还有很多,一点一点把它补全,凡是改变不可接受的,接受不可改变的,做一个内心有光的人。
很喜欢罗翔老师一句话,
其实我不是宿命论,宿命论会导致懒惰。同时我个人其实也不太相信天道酬勤,它会导致人走向骄傲或者虚无。当你成功的时候,你会觉得这是你努力拼搏来的,你配拥有这一切,所以你就瞧不起那些失败的人。但当你努力了拼搏了,最后依然失败,还是一无所成,你会陷入一种极大的抱怨,会认为天道不公。”
“我认为人生95%的事情可能是你自己决定不了的,但是我们依然要用5%的努力去撬动这95%你无法决定的事情,凡事尽力而为
开始复习c语言 跟鹏哥的视频课做一些笔记,会一直补充。
3.21开始学习鹏哥c语言
选择循环语句
结构体struct
定义一本书的时候
struct book
{
char name[20];
short price;
};
int main()
{
struct book a1 = { "c语言程序设计",55 };
printf("书名%s\n",a1.name); //结构体变量.成员
printf("价格%d元\n", a1.price);
return 0;
}
if switch语句
if 表达式大概分为3种
if(表达式)
语句
if(x>y)
printf("%d",x);
if(表达式)
语句1
else
语句2
if(x>y)
printf("%d",x);
else
printf("%d",y);
if(表达式1)
语句1
else if(表达式2)
语句2
else if(表达式3)
语句3
else
语句4
if语句编写一个输出1-100内的奇数
int main()
{
int i = 1;
while (i < 100)
{
if (i%2 == 1)
printf("%d\n", i);
i++;
}
return 0;
}
2.switch 语句
switch(表达式)
{
case 1:语句1;break;
case 2:语句2;break;
case 3:语句3;break;
}
switch 后面的表达式为整形、字符型、枚举型
如果表达式的值跟case后的常量值相同时,就执行后边的语句,break为跳出此程序。
{
int day = 0;
scanf_s("%d", &day);
switch (day)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
}
}
每一个case后 最好都加上break,方便后期添加代码时不会出现问题。
while语句
while(表达式)
{
语句1
}
用while输出0-10
int main()
{
int i = 0;
while (i <= 10)
{
printf("%d\n", i);
i++;
}
return 0;
}
for 语句
for循环是程序中用的比较多的循环语句。
for(初始条件;条件判断;调整语句)
循环语句
用for循环实际问题打印1-10数字
#include<stdio.h>
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
printf("%d\n", i);
}
return 0;
}
for循环continue 跳过本次循环后边的部分,进行调整。
while中 continue 跳过后边i++ 无法调整,陷入死循环。
练习题 求一下N的阶乘
n的阶乘就是1234**n-1n。
代码如下
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;
int n = 0;
int ab = 1; //从1开始 不可以是0 0乘任何数都为0.
scanf("%d", &n); //输入一个n的值
for (i = 1; i <= n; i++)
{
ab = ab * i;
}
printf("%d", ab);
return 0;
}
在一个有序的数组中,查找一个已知数写个代码。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 6;
int i = 0;
for (i = 0; i <= 10; i++)
{
if (k == arr[i])
{
printf("找到了下标为%d", i);
break;
}
if (i >= 10)
{
printf("找不到");
}
}
return 0;
}
**
二分查找算法
**
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//创建一个数组从0开始。
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组的长度
int left = 0;//最左端第一个数的下标
int right = sz - 1;//最右端最后一个数的下标
int k =8; //需要查找的数
while (left<=right) //当左下标<右下标的时候进行循环
{
int mid = (left + right) / 2;//中间数的下标
if (k > arr[mid])
{
left = mid+1;
}
else if (k < arr[mid])
{
right = mid-1;
}
else
{
printf("找到了,下标是%d", mid);
break;
}
}
if (left > right)
{
printf("找不到");
}
return 0;
}
此时k=8,下标是7.
求2个数的最大公约数
int main()
{
int m =6;
int n =16;
int c=0;
while(m%n)
{
c=m%n;
m=n;
n=c;
}
printf("最大公约数%d",n);
return 0;
}
函数中,函数声明放在.h文件 函数定义放在.c 文件 使用时#include“ ”调用。
1.sizeof(数组名)计算整个数组的大小,sizeof内部单独放一个数组名,数组名表示整个数组。
2.&数组名,取出的是数组的地址。&数组名,数组名表示整个数组。
除以上情况,所有数组名都表示数组首元素地址。