#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
//练习1:计算n的阶乘 并计算你所输入的数的阶乘之和
int main() {
/*int i = 0;
int n = 0;
int a = 1; // 1!x2!x3!.........x10!............xn!
int num = 0;
scanf("%d", &n);
for (i = 1;i<=n; i++) {
a *= i;
num = num+a;
printf("%d ", a);
printf("%d\n", num);
}*/
//在一个有序数列里,查看里面是否有某个具体的数字
//方法一:遍历法 整个数组查找一遍
//int arr[] = { 2,4,6,8,10,12,14,16 ,18,20 };
在这个数组中查找
//int num = 8;
//int i = 0;
//int size = sizeof(arr) / sizeof(arr[i]);
//for (i = 0; i <= size; i++)
//{
// if (num == arr[i]) {
// printf("找到了,下标是%d\n", i);
// break;
// }
// if (i == size) {
// printf("没有你想找的数字!");
// break;
// }
//}
//方法二:使用二分法查找有序数列的具体某个值 公式
int arr1[] = { 2,4,6,8,10,12,14,16 ,18,20 };
int a = 0;
scanf("%d", &a);
int left = 0;
int size1 = sizeof(arr1) / sizeof(arr1[1]);
int right = size1 - 1;
while (left <= right) {
int p = (left + right) / 2;
int mid = arr1[p];
if (a < arr1[p])
right = p - 1;
else if (a > arr1[p])
left = p + 1;
else {
printf("找到了,下标是%d\n", p);
break;
}
if (left > right) {
printf("没找到");
break;
}
}
return 0;
}
//这个是通过代码实现两边逐渐向逐渐向中间显示
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<stdlib.h>
//编写一段代码可以实现文字从两边出现 逐渐完全出现
int main() {
char arr[] = { "welcome to beijing!!!!!!" };
char arr1[] = { "########################" };
int left = 0;
int right = strlen(arr) - 1;
while(left<=right)
{
arr1[left] = arr[left];
arr1[right] = arr[right];
printf("%s\n", arr1);
left++;
right--;
Sleep(500);//停顿500毫秒
system("cls");//执行系统文件 清屏
}
return 0;
}
通过以上的练习,意识到可以使用循环和选择解决很多数学问题。
在数组中,下标是非常易用的关键点,它是将数组内成员细分的工具。