有序递增数组顺序查找
int main()
{
//有序递增数组顺序查找
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int n = 0;
int i = 0;
int j = 0;
int k = -1;
scanf("%d",&n);
i = sizeof(arr)/sizeof(arr[0]);
for(j=0;arr[j] <= n;j++)
{
if(arr[j] == n){
k = j;
break;
}
}
if(k != -1)
printf("找到了,下标是%d\n",k);
else
printf("找不到\n");
return 0;
}
有序数组二分查找(折半查找)
#include <stdio.h>
int BinarySearch(int arr[],int x,int low,int high){
int mid = 0;
while(low<=high)
{
mid = low + (high -low ) / 2;//防止越界
//mid = (low + high) / 2;
if(arr[mid] == x)
return mid;
if(arr[mid] > x)
{
high = mid-1;
}
if(arr[mid] < x)
{
low = mid+1;
}
}
if(low > high)
return -1;
}
int main()
{
//有序数组二分查找
int a = -1;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int n = 0;
int high = 0;
int low = 0;
int i = 0;
scanf("%d",&n);
high = sizeof(arr)/sizeof(arr[0])-1;
i = BinarySearch(arr,n,low,high);
if(i != -1)
printf("找到了,下标是%d\n",i);
else
printf("找不到\n");
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char ch1[] = "hello world!";
char ch2[] = "############";
int low = 0;
int length = strlen(ch2);
int high = length-1;
printf("%s\n",ch2);
while(low<=high)
{
ch2[low] = ch1[low];
ch2[high] = ch1[high];
printf("%s\n",ch2);
low++;
high--;
}
return 0;
}
打印结果如图:
想看动态效果的话,可以加一条Sleep(1000);语句,使用时还要加#include <windows.h>头文件。可以使用system("cls");语句,cls可以清空屏幕,system是一个库函数,可以执行系统命令。
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main()
{
char ch1[] = "hello world!";
char ch2[] = "############";
int low = 0;
int length = strlen(ch2);
int high = length-1;
while(low<=high)
{
ch2[low] = ch1[low];
ch2[high] = ch1[high];
printf("%s\n",ch2);
Sleep(1000);
low++;
high--;
}
printf("%s\n",ch2);
return 0;
}
查看动态效果:动态效果-CSDN直播
比较两个字符串是否相等,不能使用 == ,而应该使用一个字符串比较库函数strcmp,如果返回值是0,表示两个字符串相等。
数组传参的时候传递的是首元素的地址。
猜数字小游戏(0-100)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//猜数字小游戏(0-100)
void memu()
{
printf("####################\n");
printf("##### 1.play #####\n");
printf("##### 0.exit #####\n");
printf("####################\n");
}
void game()
{
int guess = 0;
int ret = 0;
//生成0-100之间的随机数
ret = rand() % 100 + 1;
while(1){
printf("请猜数字:\n");
scanf("%d",&guess);
if(guess < ret)
printf("猜小了\n");
else if(guess > ret)
printf("猜大了\n");
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
//通过时间戳来生成随机数,放在主函数里,每次执行时生成一个随机数
srand((unsigned int)time(NULL));
do{
memu();
printf("请选择:");
scanf("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新选择\n");
break;
}
}while(input);
return 0;
}
关机程序
电脑运行起来后,一分钟之内关机
输入China,取消关机
使用goto语句跳转:
#include <stdio.h>
#include <string.h>
//关机程序
//电脑运行起来后,一分钟之内关机
//输入China,取消关机
int main()
{
char input[20] = {0};
system("shutdown -s -t 60");
again:
printf("请注意,你的电脑将在60分钟内关机,输入:China,取消关机");
scanf("%s",input);
if(strcmp(input,"China") == 0)
system("shutdown -a");
else
goto again;
return 0;
}
使用循环:
#include <stdio.h>
#include <string.h>
int main()
{
char input[20] = {0};
system("shutdown -s -t 60");
while(1)
{
printf("请注意,你的电脑将在60分钟内关机,输入:China,取消关机");
scanf("%s",input);
if(strcmp(input,"China") == 0)
{
system("shutdown -a");
break;
}
}
system("pause");
return 0;
}