首页 > 其他分享 >20221017笔记

20221017笔记

时间:2022-10-17 19:00:55浏览次数:56  
标签:include return 20221017 int 笔记 printf input main

这两天学了c语言的循环语句,有点烧脑,但是感觉的确能提高生产力。

一定要自己敲代码,不然很多问题学不会,比如分号、括号的位置,是大括号还是花括号,还有语句的表达式。

重要的事情说三遍。

!!!一定要自己敲代码!!!

!!!一定要自己敲代码!!!

​!!!一定要自己敲代码!!!

1.分支语句

1.1if语句

语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include <stdio.h>
//代码1
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
}

//代码2
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}

//代码3
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("少年\n");
}
else if(age>=18 && age<30)
{
printf("青年\n");
}
else if(age>=30 && age<50)
{
printf("中年\n");
}
else if(age>=50 && age<80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
}
#include <stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}

2.2switch语句

switch(整型表达式)
{
语句项;
}
//是一些case语句:
//如下:
case 整形常量表达式:
语句;
#include <stdio.h>
int main()
{
int day = 0;
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}

2.循环语句

2.1while循环

//while 语法结构
while(表达式)
循环语句;
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
//break 代码实例
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;
printf("%d ", i);
i = i+1;
}
return 0;
}
//continue 代码实例1
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
//continue 代码实例2
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
i = i+1;
if(i == 5)
continue;
printf("%d ", i);
}
return 0;
}
//代码什么意思?
//代码1
#include <stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
putchar(ch);
return 0;
}
这里的代码适当的修改是可以用来清理缓冲区的.
//代码2
#include <stdio.h>
int main()
{
char ch = '\0';
while ((ch = getchar()) != EOF)
{
if (ch < ‘0’ || ch > ‘9’)
continue;
putchar(ch);
}
return 0;
}
//这个代码的作用是:只打印数字字符,跳过其他字符的、

2.2for循环

记住,这里是​​;​​。我每次都会把​​;​​打成​​,​

for(表达式1; 表达式2; 表达式3)
循环语句;
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
int i = 0;
//实现相同的功能,使用while
i=1;//初始化部分
while(i<=10)//判断部分
{
printf("hehe\n");
i = i+1;//调整部分
}
//实现相同的功能,使用while
for(i=1; i<=10; i++)
{
printf("hehe\n");
}
//代码1
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ",i);
}
return 0;
}
//代码2
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
return 0;
}
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}
#include <stdio.h>
int main()
{
//代码1
for(;;)
{
printf("hehe\n");
}
//for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问
题。
//代码2
int i = 0;
int j = 0;
//这里打印多少个hehe?
for(i=0; i<10; i++)
{
for(j=0; j<10; j++)
{
printf("hehe\n");
}
}
//代码3
int i = 0;
int j = 0;
//如果省略掉初始化部分,这里打印多少个hehe?
for(; i<10; i++)
{
for(; j<10; j++)
{
printf("hehe\n");
}
}
//代码4-使用多余一个变量控制循环
int x, y;
for (x = 0, y = 0; x<2 && y<5; ++x, y++)
{
printf("hehe\n");
}
return 0;
}
//请问循环要循环多少次?
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for(i =0,k=0; k=0; i++,k++)
k++;
return 0;
}

2.3do...while循环

do
循环语句;
while(表达式);
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
}while(i<10);
return 0;
}
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == i)
break;
printf("%d\n", i);
}while(i<10);
return 0;
}
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == i)
continue;
printf("%d\n", i);
}while(i<10);
return 0;
}
//代码1
//编写代码,演示多个字符从两端移动,向中间汇聚
#include <stdio.h>
int main()
{
char arr1[] = "welcome to bit...";
char arr2[] = "#################";
int left = 0;
int right = strlen(arr1)-1;
printf("%s\n", arr2);
//while循环实现
while(left<=right)
{
Sleep(1000);
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left++;
right--;
printf("%s\n", arr2);
}
//for循环实现
for (left=0, right=strlen(src)-1;
left <= right;
left++, right--)
{
Sleep(1000);
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf( "%s\n", target);
}
retutn 0;
}
//代码2
int main()
{
char psw[10] = "" ;
int i = 0;
int j = 0;
for (i = 0; i < 3 ; ++i)
{
printf( "please input:");
scanf("%s", psw);
if (strcmp(psw, "password" ) == 0)
break;
}
if (i == 3)
printf("exit\n");
else
printf( "log in\n");
}
实现在主函数内:
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int left = 0;
int right = sizeof(arr)/sizeof(arr[0])-1;
int key = 7;
int mid = 0;
while(left<=right)
{
mid = (left+right)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
break;
}
if(left <= right)
printf("找到了,下标是%d\n", mid);
else
printf("找不到\n");
}
如果实现一个二分查找函数:
int bin_search(int arr[], int left, int right, int key)
{
int mid = 0;
while(left<=right)
{
mid = (left+right)>>1;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
return mid;//找到了,返回下标
}
return -1;//找不到
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("**********************************\n");
printf("*********** 1.play **********\n");
printf("*********** 0.exit **********\n");
printf("**********************************\n");
}
//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{
int random_num = rand()%100+1;
int input = 0;
while(1)
{
printf("请输入猜的数字>:");
scanf("%d", &input);
if(input > random_num)
{
printf("猜大了\n");
}
else if(input < random_num)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned)time(NULL));
do
{
menu();
printf("请选择>:");
scanf("%d", &input);
switch(input)
{
case 1:
game();
break;
case 0:
break;
default:
printf("选择错误,请重新输入!\n");
break;
}
}while(input);
return 0;
}

3.goto语句

for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}

error:
if(disaster)
// 处理错误情况
#include <stdio.h>
int main()
{
char input[10] = {0};
system("shutdown -s -t 60");
again:
printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", input);
if(0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
char input[10] = {0};
system("shutdown -s -t 60");
while(1)
{
printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", input);
if(0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
break;
}
}
return 0;
}

附:练习代码

//#include<stdio.h>
//
//int main()
//{
// printf("hehe/n");
// return 0;
//}

//#include <stdio.h>
//int main()
//{
// printf("%d\n", sizeof(char));
// printf("%d\n", sizeof(short));
// printf("%d\n", sizeof(int));
// printf("%d\n", sizeof(long));
// printf("%d\n", sizeof(long long));
// printf("%d\n", sizeof(float));
// printf("%d\n", sizeof(double));
// printf("%d\n", sizeof(long double));
// return 0;
//}

//判断一个数是不是奇数
//#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//
//int main()
//{
// int num = 0;
//
// printf("请任意输入一个整数:\n");
// scanf("%d", &num);//输入一个数
//
// if (0 == num % 2)
// {
// printf("这个数是偶数\n");
// }
// else
// {
// printf("这个数是奇数\n");
// }
// return 0;
//}

//输出1~100之间的奇数
//#include <stdio.h>
// int main()
// {
// int ji_num = 1;
//
// while (ji_num <= 100)
// {
// if (1 == ji_num % 2)
// printf("%d\n", ji_num);
// ji_num++;
//
// }
//
// return 0;
// }

//打印1~10
//#define _CRT_SECURE_NO_WARNINGS
//
//#include <stdio.h>
//
//int main()
//{
// int i = 1;
// while (i<=10)
// {
// printf("%d", i);
// i++;
// }
//
// return 0;
//}

//n的阶乘
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//
//int main()
//{
// int n = 0;
// int n_sum = 1;
// int sum_n_sum = 0;
// int i;
// printf("请输入任意整数,将计算它的阶乘\n");
// scanf("%d", &n);
//
// for (i =1; i <= n; i++)
// {
// n_sum = n_sum * i;
// sum_n_sum = sum_n_sum + n_sum;
// }
// printf("n的阶乘是%d\n", n_sum);//n的阶乘
// printf("n的阶乘之和是%d\n", sum_n_sum);//n的阶乘之和
//
//
// return 0;
//
//}

//打印1~100之间所有3的倍数的数字
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//
//int main()
//{
// int num = 1;
// for(num = 1; num <= 100; num++)
// {
// if (0 == num % 3)
// {
// printf("%d\n", num);
// }
//
//
//
//
// }
//
// return 0;
//}

//十个数里面求最大值
//#include<stdio.h>
//
//int main()
//{
// int arr[] = { 4, 5, 8, 6, 2, 8, 4, 2, 5, 71 };
// int max = arr[0];
// int i = 1;
// int sz = sizeof(arr) / sizeof(arr[0]);
//
// for (i = 1; i <= sz; i++)
// {
// if (arr[i] > max)
// max = arr[i];
// }
// printf("max = %d\n", max);
//
// return 0;
//}

//打印9*9乘法口诀表
//#include<stdio.h>
//
//int main()
//{
// int h = 1;
// //打印9行
// for (h = 1; h <= 9; h++)
// {
// //打印一列
// int l = 1;
// for (l = 1; l <= h; l++)
// {
// printf("%d*%d=%-2d ", l, h, l * h);
// }
// printf("\n");
// }
// return 0;
//}
//猜数字游戏
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <time.h>

void menu()
{
printf("*** 1~100之内猜数字游戏 ***\n");
printf("*** 请输入 ***\n");
printf("*** 1.开始游戏 2.退出游戏 ***\n");
printf("*** ***\n");
}

void game()
{
int random_num = rand() % 100 + 1;
int input = 0;
while (1)
{
printf("请输入你猜的数字>:");
scanf("%d", &input);
if (input > random_num)
{
printf("你猜大了\n");
}
else if (input < random_num)
{
printf("你猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}

int main()
{
int input = 0;
srand((unsigned)time(NULL));
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 2:
break;
default:
printf("输入有误,请重新输入!\n");
break;

}
} while ( 2 != input);
return 0;
}

//#include <stdio.h>
//int main()
//{
// int i = 1;
// do
// {
// printf("%d\n", i);
// i++;
// } while (i<10);//满足条件执行,否则跳出do...while循环
// return 0;
//}
//#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//#include <stdlib.h>
//#include <time.h>
//void menu()
//{
// printf("**********************************\n");
// printf("*********** 1.play **********\n");
// printf("*********** 0.exit **********\n");
// printf("**********************************\n");
//}
////RAND_MAX--rand函数能返回随机数的最大值。
//void game()
//{
// int random_num = rand() % 100 + 1;
// int input = 0;
// while (1)
// {
// printf("请输入猜的数字>:");
// scanf("%d", &input);
// if (input > random_num)
// {
// printf("猜大了\n");
// }
// else if (input < random_num)
// {
// printf("猜小了\n");
// }
// else
// {
// printf("恭喜你,猜对了\n");
// break;
// }
// }
//}
//int main()
//{
// int input = 0;
// srand((unsigned)time(NULL));
// do
// {
// menu();
// printf("请选择>:");
// scanf("%d", &input);
// switch (input)
// {
// case 1:
// game();
// break;
// case 0:
// break;
// default:
// printf("选择错误,请重新输入!\n");
// break;
// }
// } while (input);
// return 0;
//}

标签:include,return,20221017,int,笔记,printf,input,main
From: https://blog.51cto.com/u_15831330/5763852

相关文章

  • 论文笔记 - Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-
    prompt的影响因素MotivationPrompt中Example的排列顺序对模型性能有较大影响(即使已经校准参见好的情况下,选取不同的排列顺序依然会有很大的方差):校准可以大幅度提......
  • 上课笔记
                      ......
  • 学习笔记
    site:edu.cnfiletype:xls身份证site:edu.cninurl:adminSQL注入sql常见特征:?id=1?xxx=xxx1.利用搜索引擎搜索特征获取到sql注入漏洞例如:inurl:?id=1inurl:login.php2......
  • skyler实战渗透笔记(十二)—Kioptrix-2
    skyler实战渗透笔记:笔记是为了记录实战渗透学习过程,分享渗透过程思路与方法。请注意:对于所有笔记中复现的终端或服务器,都是自行搭建环境或已获授权渗透的。使用的技术仅......
  • Vue笔记
    一、Vue介绍1、Vue简介(1)官网:​英文官网​ 中文官网2、介绍与描述Vue是一套用来动态构建用户界面的渐进式JavaScript框架构建用户界面:把数据......
  • Improving Item Cold-start Recommendation via Model-agnostic Conditional Variatio
    动机本文是2022年SIGIR上的一篇论文。解决推荐系统中冷启动问题通常有两种方法:1.挖掘历史数据中的分布模式,例如学习一个辅助信息到id的映射。2.在交互物品有限的情况下提......
  • 【学习笔记】二分
    你觉得一个算法难,是因为你的大脑对未知世界的恐惧。——yxc简单讲讲二分二分是什么?顾名思义:就是一分为二(✓)它是一种在有序数组中查找某一特定元素的搜索算法......
  • 【笔记】原根
    阶定义阶:满足同余式\(a^n\equiv1\pmodm\)的最小正整数\(n\)存在,称作\(a\)模\(m\)的阶,记作\(\delta_m(a)\)。性质\(a,a^2,\ldots,a^{\delta_m(a......
  • 【SpingBoot学习笔记】SpingBoot之读取resource/config目录下自定义properties文件(注
    之前已经写了一篇读写properties文件的文章,见《Java读取properties配置文件写法》,但如果是springboot项目,配置统一在resource/config目录下,使用注解如何读取呢,写法如下打......
  • 【杂谈】想成为机器学习学霸?先学会做笔记吧(Evernote,BoostNote,Leanote等)
    今天聊聊记笔记这件事儿,在学习的过程中做好总结记录是非常重要的。作者|小满&有三编辑|小满&有三《人类简史》有一个有趣的现象描写:远古时期的智人是看什么就吃什么,会塞......