C语言 基础一

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");
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值