getchar() putchar() strlen字符串长度判断 strcmp用来判断字符串相等 for循环的死循环 do-while循环 用二分法/折半查找寻找要在数组中找到元素7

输入缓冲区 getchar() 理解

#include<stdio.h>
int main()
{
    
    
	int ret = 0;
	char password[20] = {
    
     0 };
	printf("请输入密码\n");//这里在输入密码之后敲了一下空格
	scanf("%s", password);//这里获取的是输入缓冲区的密码但是没有获取空格
	getchar();//这里的getchar获取输入缓冲区里的空格
	printf("请确认(Y/N)\n");
	ret = getchar();
	if (ret == 'Y')
	{
    
    
		printf("确认成功\n");
	}
	else
	{
    
    
		printf("确认失败");
	}
	return 0;
}

getchar() putchar()

#include<stdio.h>
int main()
{
    
    
	int ch = 0;
	while((ch = getchar()) != EOF)
	//获取键盘敲一个字符如果不是EOF
		putchar(ch);
	//那么就打印出来这个字符

	return 0;
}

for循环的死循环

#include<stdio.h>
int main()
{
    
    
	for (;;)
	{
    
    
		printf("hehe\n");
	}
	return 0;
}
//1.for循环的初始化。调整。判断都可以省略
但是
for循环的额判断部分 如果被省略,那判断条件就是
恒为正(也就是死循环)

do…while()循环
do语句的语法

do
循环语句;
while(表达式);

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

计算n的阶乘

#include<stdio.h>
int main()
{
    
    
	int i = 0;
	int n = 0;
	int ret = 1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
    
    
		ret = ret * i;
	}
	printf("ret=%d\n", ret);
	return 0;
}

计算1!+2!+3!+…+10!
!表示的是阶乘

#include<stdio.h>
int main()
{
    
    
	int i = 0;
	int n = 0;
	int ret = 1;
	int sum = 0;
	for (n = 1; n <= 3; n++)
	{
    
    
		ret = ret * n;
		sum = sum + ret;
	}
	return 0;
}
#include<stdio.h>
int main()
{
    
    
	int i = 0;
	int n = 0;
	int ret = 1;
	int sum = 0;
	for (n = 1; n <= 10; n++)
	{
    
    
		ret = 1;
		for (i = 1; i <= n; i++)
		{
    
    
			ret = ret * i;
		}
		sum = sum + ret;
	}
	printf("sum=%d\n", sum);

	return 0;
}

在一个有序的数组中查找具体的某个数字n

#include<stdio.h>
int main()
{
    
    
	int arr[] = {
    
    1,2,3,4,5,6,7,8,9,10};
	int k = 7;
	//写一个代码,在arr数组(有序的)中找到7
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i < sz; i++)
	{
    
    
		if (k == arr[i])
		{
    
    
			printf("找到了:它的下标是%d\n",i);
			break;
		}
		
	}
	if (k == sz)
	{
    
    
		printf("没找到\n");
	}
	return 0;
}

用二分法/折半查找寻找要在数组中找到元素7

#include<stdio.h>
int main()
{
    
    
	int arr[] = {
    
     1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int k = 7;//要在数组中找到元素7用二分法/折半查找寻找
	int sz = sizeof(arr) / sizeof(arr[0]);//计算元素的个数
	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");
	}
	return 0;
}

编写代码演示多个字符从两端移动向中间汇聚

#include<stdio.h>
#include<string.h>//strlen
#include<windows.h>//Sleep
#include<stdlib.h>//system
int main()
{
    
    
	char arr1[] = "welcome to bit!!!!!!";
	char arr2[] = "####################";
	int left = 0;
	int right = strlen(arr1)-1;
	while (left<=right)
	{
    
    
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);//让每打印一下停一秒
		system("cls");//执行系统命令 cls清空屏幕
		left++;
		right--;
	}
	printf("%s\n", arr2);
	
	return 0;
}

效果

编写代码实现,模拟用户登录情景,并且只能登录三次。
(只允许输入三次密码,如果正确提示成功,如果三次都错误,则退出程序)。

strcmp用来判断字符串相等

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	int i = 0;
	char password[20] = {
    
    0};
	for (i = 0; i < 3; i++)
	{
    
    
		printf("请输入密码");
		scanf("%s", password);
		if (strcmp(password ,"123456")==0)
		//== 不能用来比较两个字符串是否相等,应该使用一个库函数-strcmp
		{
    
    
			printf("登录成功\n");
			break;
		}
		else
		{
    
    
			printf("密码错误\n");
		}
	}
	if (i == 3)
		printf("三次密码均输入错误\n");
	return 0;
}

Guess you like

Origin blog.csdn.net/weixin_52495715/article/details/118876632