流程控制
分支语句-if
可以写范围
#include <stdio.h>
int main() {
int i = 20;
if (i < 60) {
if (i > 30) {
printf("java");
} else {
printf("C++");
}
}
}
分支语句-switch
#include <stdio.h>
int main() {
char i = 'B';
switch (i) {
case 'A':
printf("C++");
break;
case 'B':
printf("JAVa");
break;
case 'C':
printf("python");
break;
default:
printf("CCCC");
}
}
循环语句for
#include <stdio.h>
int main() {
for (int i = 0; i <4 ; ++i) {
printf("what are you doing ?\n");
}
}
if 和 for循环语句:
#include <stdio.h>
int main() {
for (int i = 0; i < 4; ++i) {
if (i == 3) break;
printf("%d\n", i);
}
}
在循环过程中提前终止和或是加速循环的进行:
比如我们现在希望在满足某个条件下提前终止循环,可以使用break关键字来跳出循环
使用continue关键字会加速循环,无论后面有没有未执行完的代码,都会直接开启下一轮
#include <stdio.h>
int main() {
for (int i = 0; i < 10; ++i) {
if (i == 5) continue;
printf("%d", i);
}
}
注意使用break和continue
#include <stdio.h>
int main() {
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4 ; ++j) {
printf("%d,%d\n", i, j);
}
}
}
循环语句while
相比for循环,while循环更多用在不明确具体的结束时机的情况下,而for循环更多用于明确知道循环的情况
#include <stdio.h>
int main() {
int i = 100;
while (i > 0) {
printf("%d\n", i);
i /=2;
}
}
#include <stdio.h>
int main() {
int i = 100;
while (i > 0) {
if(i < 30) break;
printf("%d\n", i);
i /=2;
}
}
阶乘:
#include <stdio.h>
int main() {
int i =3, res=1;
for (int j = 0; j < 5; ++j) {
res *= i;
printf("%d\n",res);
}
}
实战:寻找水仙花数
也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。例如:1^3+5^3+3^3=153。
打印出所有1000以内的水仙花数
#include <stdio.h>
int main() {
for (int i = 0; i < 1000; ++i) {
int a = i % 10, b = i / 10 % 10, c = i / 10 / 10;
if (a * a * a + b * b * b + c * c * c == i) {
printf("%d\n", i);
}
}
}
实战:打印九九乘法表
#include <stdio.h>
int main() {
for (int i = 1; i < 10; ++i) {
for (int j = 1; j < 10; ++j) {
if(i < j) continue;
printf("%d * %d = %d ",i ,j ,i *j );
}
printf("\n");
}
}
实战:斐波那契数列
#include <stdio.h>
int main() {
int target = 10, result;
int a = 1, b = 2, c;
for (int i = 2; i < 10; ++i) {
c = a + b;
a = b;
b = c;
}
result = c ;
printf("%d \n", c );
}
数组
#include <stdio.h>
int main() {
int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
for (int i = 0; i < 12 ; ++i) {
int days = arr[i];
printf("%2d : %d \n",(i + 1), days);
}
}
#include <stdio.h>
int main() {
int arr[12] = {[4]=31};
for (int i = 0; i < 12 ; ++i) {
int days = arr[i];
printf("%2d : %d \n",(i + 1), days);
}
}
#include <stdio.h>
int main() {
int arr[12] = {999,111,222,333};
arr[1]=1000;
printf("%d",arr[1]);
}
数据替换
超出大于30的月份
#include <stdio.h>
int main() {
int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
for (int i = 0; i < 12; ++i) {
if(arr[i] > 30){
printf("%d\n",i + 1);
}
}
}
将低于31天的修改为0
#include <stdio.h>
int main() {
int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
for (int i = 0; i < 12; ++i) {
if(arr[i] < 31 ) arr[i] = 0;
}
for (int i = 0; i < 12; ++i) {
printf("%d,",arr[i]);
}
}
多维数组
#include <stdio.h>
int main() {
int arr[3][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }};
printf("%d\n",arr[0][4]);
}
冒泡排序算法
#include <stdio.h>
int main() {
int arr[10] = {2, 2, 43, 19, 5, 5, 6, 76, 7, 10};
for (int i = 0; i < 10; ++i) {
_Bool flag = 0;
for (int j = 1; j < 10; ++j) {
if (arr[j] < arr[j - 1]) {
int tmp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = tmp;
flag = 1;
}
}
if (flag == 0) break;
}
for (int i = 0; i < 10; ++i) {
printf("%d ", arr[i]);
}
}
斐波那契数列
动态规划算法通常用于求解具有某种最优性质的问题
#include <stdio.h>
int main() {
int target = 10;
int dp[target];
dp[1] = dp[0] =1;
for (int i = 2; i < target; ++i) {
dp[i] = dp[i-1] + dp[i-2];
}
printf("%d",dp[target - 1]);
}
备注:如有错误,请谅解!
此文章为本人学习笔记,仅供参考!如有重复!!!请联系本人