-
目录:
一.二分查找
二.打印1到100中9的个数
三.关机程序
四.1!+2!+3!······n!
五.猜数字游戏 -
前言: 代码的重难点我会直接在程序中注释出来,当然如果有什么疑问,我们也可以评论区交流。
-
1:在一个有序数组中查找具体的某个数字n。(讲解二分查找)
//根据一个有序数组确定数组的左右下标,求得中间元素的下标。
//用中间元素的下标和相比,不断缩小空间,每次数据量减少一半。
//因此也叫折半查找。
#include <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 8;
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("找到了,k的下标:>%d", mid);
break;
}
}
return 0;
}
3.2:打印1到100中9的个数
//数字9主要分别在十位和百位上,因此我们只需要统计个位上的9和十位上的9相加即可。
#include <stdio.h>
int main()
{
int i = 1;
int count = 0;//记数
for (i = 1; i <= 100; i++)
{
if (i % 10 == 9)
{
count++;//个位为9
}
if (i / 10 == 9)
{
count++;//十位为9
}
}
printf("%d\n", count);
return 0;
}
3.3:关机程序
//1. List item
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char entry[10] = { 0 };
system("shutdown -s -t 60");
again:
printf("电脑将在1分钟后关机,输入我是猪将取消关机\n");
scanf("%s", entry);
if (strcmp(entry, "我是猪") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
3.4:1!+2!+3!······n!
10.#include <windows.h>
#include <stdio.h>
int main()
{
int sum = 0;
int ret = 1;
int i = 0;
int num = 0;
scanf("%d", &num);
for (i = 1; i <= num; i++)
{
ret *= i;//计算i的阶乘
sum += ret;//把i的阶乘加到sum里即可
}
printf("%d\n", sum);
return 0;
}
3.5 猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("******************************\n");
printf("*****1. play 0. exit********\n");
printf("******************************\n");
}
void game()
{
int num = rand() % 100 + 1;
int n = 0;
printf("请输入你猜取得数字:>");
scanf("%d", &n);
while (1)
{
if (num > n)
{
printf("caixaiole\n");
}
else if (num < n)
{
printf("caidale\n");
}
else
{
printf("caiduile\n");
}
scanf("%d", &n);
}
}