【C语言】关机程序、二分查找程序、递归程序

一个关机程序:

程序说明:运行即120秒后关机,若输入‘wzr’则取消关机

shutdown -s (设置关机) -t 60 (设置时间关机 60秒钟)
shutdown -a 取消关机
system() 执行系统命令的

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char input[22];
	system("shutdown -s -t 120");//stdlib.h
again:
	printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!\n电脑即将在120秒后关机\n");
	printf("如果输入:wzr 。 就取消关机\n请输入:");
	scanf("%s",input);
	if(strcmp(input,"wzr")==0) //比较两个字符串  strcmp(), string.h
	{
		system("shutdown -a");
	}
	else
	{
		goto again;//跳转到sgain
	}
	return 0;
}

运行结果👇👇
1
2

二分查找:

说明:二分查找:在一个有序数组中查找具体的某个数

程序说明:在一个有序数组(1~10)中查找具体的某个数,如果找到显示下标,如果没找到就显示没找到

sizeof()函数
是一个判断数据类型或者表达式长度的运算符,其作用就是返回一个对象或者类型所占的内存字节数
两种用法:
1. sizeof(type_name);//sizeof(类型);
2. sizeof object;//sizeof对象;
数组的sizeof值:等于数组所占用的内存字节数

求数组元素的个数通常有下面两种写法:
int c1=sizeof(a1)/sizeof(char); //总长度/单个元素的长度 (char型)
int c2=sizeof(a2)/sizeof(a2[0]); //总长度/第一个元素的长度 (int型)

#include<stdio.h>
#include<string.h>
//				本质上a是一个指针
int two_search(int a[],int i,int sz)
{
	//函数内部想求参数部分的数组元素的个数——做不到。
	//解决方法:在外面求好个数之后传进来
	//二分查找算法:
	int	left=0;
	int right=sz-1;
	while(left<=right)
	{
	int mid=(right+left)/2;//中间元素的下标。
	if(a[mid]<i)
	{
		left=mid+1;
	}
	else if(a[mid]>i)
	{
		right=mid-1;
	}
	else
		return mid;
	}
	return -1;
}
int main()
{
	//二分查找
	//在一个有序数组中查找具体的某个数
	//如果找到了返回这个数的下标,如果找不到返回-1
	int a[]={1,2,3,4,5,6,7,8,9,10};
	int i;
	printf("请输入要查找的数:");
	scanf("%d",&i);
	//求出数组元素的个数
	int sz=sizeof(a)/sizeof(a[0]);
	//		传递过去的a是a[]的数组首元素地址!!
	int j=two_search(a,i,sz);
	if(j==-1)
		printf("\n公子,实在是找不到该数字啊!!!\n");
	else
		printf("\n*****正在飞速寻找中~~~~~\n\n!!找到了!!该数字的下标:%d\n",j);
	return 0;
}

运行结果👇👇
3
3.5

递归:

程序说明:利用递归 依次将输出的数,一个个输出(正序 / 逆序)

#include<stdio.h>
void pir(int num)
{
	/*
	if(num>0)		//将数字逆序输出
	{
		printf("%d ",num%10);
		pir(num/10); //递归
	}
	*/
	if(num>9)     //将数字正序输出
	{
	
		pir(num/10); //递归
	}
	printf("%d ",num%10);
}
int main()
{
	int num;
	printf("输入要拆分的数:");
	scanf("%d",&num);
	printf("\n公子,拆分之后的结果为: ");
	pir(num);
	printf("\n");
	return 0;
}

运行结果👇👇
4
逆序输出👇👇
5

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王某壬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值