C语言基础一
视频来源于b站
更博只是为了充当 学习笔记…无盗用之意
1.分支和循环(分支语句和循环语句)
1.1介绍:
1.2 什么是语句???:
只要有 “;”隔开 就是一条语句…
1.3 if 语句:
1.3.1 基本的:
1.3.2 代码块:
1.3.2 悬空else:
结论:else 只和 离的最近的 if 匹配…
1.3.3 if 的书写格式:
1.3.4 0-100 内的所有奇数:
1.4 switch语句:
switch 也是一种分支语句…
1.4.1 if…else if…很繁琐…
1.4.2 switch…case…:
int day =0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
}
return 0;
}
1.switch 表达式一定要是个整型…
2.case 后面是 整型 + 常量 …
1.4.2 (二) :
int day =0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
}
1.4.3 default:
int day =0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
default:
printf("输入错误");
break;
}
1.4.4 练习:
1.5 循环语句(while / for / do while):
1.5.1 while:
1.5.2 break 跳出总的循环:
1.5.3 continue 跳出本次循环:
1.5.4 练习:
1.5.4.1 getchar ( ) :
int ch = getchar();//这里用int 是因为接收的是ascll码值...
putchar(ch);
printf("%c\n",ch);
return 0;
1.5.4.2 :
int ch =0;
while((ch = getchar())!= EOF)
{
putchar(ch);
}
EOF > end of file(文件结束标志) > -1
1.6 练习(二):
1.6.1 用char name [ ] 数组 存储字符串:
char name[20] = {0};//例如定义一个 字符数组 来存储“字符串”;
1.6.1.1 strcpy:
1.要想改变 字符数组里面 字符串的值:
只能用<string.h> 库里的 strcpy(name ,“字符串”)…这样改值…
1.6.1.2 scanf ( ):
2.使用scanf ("%s",name ):
不需要 “取地址&”…
1.6.2 getchar ( ) / putchar ( ) :
1.tips: getchar 接收的是ascall码的值…
int ch =0;
ch = getchar();//ch接收的是ascll码...
1.6.3 输入缓存区:
getchar ( ) / scanf ( ) … 输入函数会去输入缓存区找 字符串…
int ch =0;
int xiaohao = 0;
int jieshou =0;//接收getchar()
char suzu[20] = {0};//接收password字符串
scanf("%s",suzu);//字符数组接收字符串...不需用“&”
printf("请确认...(Y/N)");
while((xiaohao = getchar() != '\n'));
{
;
}
jieshou = getchar();//jeihsou 接收getchar的为 int类型的ascall码值....
if(jieshou == 'Y')
printf("确认成功...");
else
printf("确认失败...");
1.7练习(三):
int ch = 0;
while((ch = getchar()) != EOF)
{
if(ch < '0'|| ch > '9')//0-9的字符不用continue
continue;
putchar(ch);
}
1.8 for循环:
1.8.1 定义:
1.8.2 第一个 for循环:
int i= 0;
for(i=1;i<10;i++)
{
printf("%d\n",i);
}
1.8.3 while 和 for 的区别:
1.8.3 for循环的一些建议:
1.8.3 for循环的一些变种(一):
for 循环的初始化、判断、调整都可以省略,但是:for循环的
1.判断部分如果被省略、那判断条件恒为真…
1.8.3.1 打印 100个 hehe:
int i= 0;
int j= 0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
printf("hehe\n");
}
}
1.8.3.2 随便省略 只打印了 10个 hehe:
int i= 0;
int j= 0;
for(;i<10;i++)
{
for(;j<10;j++)
{
printf("hehe\n");
}
}
1.8.4 for循环的一些变种(二):
1.8.5 for循环多少次:
1.9 do…while…循环:
int i=1;
do
{
printf("%d\n",i);
i++;
}
while(i<=10);
do…while…语句的特点:至少执行一次…
2.0 练习:
2.1 n的阶乘:
int i ;
int n=0;//自己输入n
int ret = 1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ret *= i;
}
printf("%d\n",ret);
2.2 1!+2!+3!..9!+10!..的阶乘(双for循环):
int i ;
int n=0;//自己输入n
int ret = 1;
int sum =0;
for(n=1;n<=10;n++)
{
ret =1;//ret 要每次从“1”开始阶乘...不要累加...
for(i=1;i<=n;i++)
{
ret *= i;
}
//求和:
sum += ret;
}
printf("%d\n",sum);
2.3 在一段 有序数组中 查找 数字n:
2.3.1 循环的找:
int arry[] ={1,2,3,4,5,6,7,8,9};
int k=7;//要找到 7 这个数字;
int i;
int sz =sizeof(arry)/sizeof(arry[1]);//多少个元素
for(i =0;i<sz;i++)//下标从0-(sz-1)
{
if (k==arry[i])
{
printf("get it:%d\n",i);
break;
}
}
if(i==sz)
printf("找不到");
2.3.2 二分发:
int arr[] = {1,2,3,4,5,6,7,8,9,10};//建立一个数组存10个数
int k=7;//假设变量要找到 7
int sz = sizeof(arr)/sizeof(arr[1]);//计算元素个数
int left =0;//左下标
int right = sz-1;//右下标
while(left<=right)//
{
int mid = (left + right)/2;//中间元素
if(arr[mid] > k)
{
right = mid -1;
}
else if(arr[mid]<k)
{
left = mid+1;
}
else
{
printf("找到了...下标识:%d\n",mid);
break;
}
}
if(left>right)
{
printf("找不到\n");
}
2.3.3 编写代码,演示多个字符从两端移动,向中间汇聚:
char arr1[] = "weclome to bit !!!!!";
char arr2[] = "####################";
int left = 0;
//int right = sizeof(arr1)/sizeof(arr1[0])-2;//err
int right = strlen(arr1)-1;
while(left<=right)
{
//赋值
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
left++;
right--;
}
2.3.3.1 sleep(1000) - 睡1s:
#include <windows.h>
//休息1s;
Sleep(1000);
2.3.3.2 system(“cls”) - 执行系统函数 - 清空屏幕:
#include <stdlib.h>
system("cls");//执行系统命令的一个函数 - cls - 清空屏幕
2.4 模拟登陆:
2.4.1 字符串比较 strcmp:
#include "string.h"
strcmp(password ,"123456")==0
2.4.2 代码:
int i=0;
char password[20] = {0};
for(i=0;i<3;i++)
{
printf("请输入密码:>");
scanf("%s",password);
if(strcmp(password ,"123456")==0)// "==" 不能用来比较两个字符串是否相等..,应该使用一个库函数strcmp
{
printf("登陆成功");
break;
}
if(i == 3)
printf("三次均错误,退出程序\n");
}