99乘法表——拓展:N阶乘法表。
猜数字。
函数交换两个整型。
二分查找。
#define _CRT_SECURE_NO_WARNINGS 1
//99乘法表
//int main()
//{
// int i, j;
// for (i = 1; i <= 9; i++)
// {
// for (j = 1; j <= i; j++)
// {
// printf("%d ", i * j);
// }
// printf("\n");
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int i, k;
// int arr[10] = { 0 };
// int max = arr[0];
// for (k = 0; k < 10; k++)
// {
// scanf("%d", &arr[k]);
// }
// for (i = 1; i < 10; i++)
// {
// if (arr[i] > max)
// max = arr[i];
// }
// printf("%d", max);
// return 0;
//}
//猜数字
//#include<stdio.h>
//#include<stdlib.h>
//#include<time.h>
//
//void menu()
//{
// printf("****************************\n");
// printf("******** 1. play *******\n");
// printf("******** 0. exit *******\n");
// printf("****************************\n");
//}
//void game()
//{
// int ret = rand() % 100 + 1;
// int num = 0;
// int count = 0;
// while (1)
// {
// printf("请猜数字:>");
// scanf("%d", &num);
// if (num == ret)
// {
// printf("猜对了\n");
// }
// else if (num > ret)
// {
// printf("猜大了\n");
// }
// else
// {
// printf("猜小了\n");
// }
// printf("您已猜了%d次\n",++count);
// }
//}
//
//int main()
//{
// int guess = 0;
// srand((unsigned int)time(NULL));
// do
// {
// menu();
// printf("请选择:>");
// scanf("%d", &guess);
// switch (guess)
// {
// case 1:
// game();
// break;
// case 0:
// printf("退出\n");
//
// default:
// printf("选择错误\n");
// break;
// }
// } while (guess);
// return 0;
//}
//二分查找
/* 具体找的方式:
1. 找到数组的中间位置
2. 检测中间位置的数据是否与要查找的数据key相等
a : 相等,找到,打印下标,跳出循环
b : key < arr[mid], 则key可能在arr[mid]的左半侧,继续到左半侧进行二分查找
c : key > arr[mid], 则key可能在arr[mid]的右半侧,继续到右半侧进行二分查找
如果找到返回下标,否则继续,直到区间中没有元素时,说明key不在集合中,打印找不到
易错点:
1. right的右半侧区间取值,该值决定了后序的写法
2. while循环的条件是否有等号
3. 求中间位置的方法,直接相加除2容易造成溢出
4. 更改left和right的边界时,不确定是否要 + 1和 - 1
*/
//#include<stdio.h>
//int main()
//{
// int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
// int key = 4;
// int left = 0;
// int right = sizeof(arr) / sizeof(arr[0]) - 1;
// while (left <= right)
// {
// int mid = left + (right - left) / 2;
// if (arr[mid] > key)
// {
// right = mid - 1;
// }
// else if (arr[mid] < key)
// {
// left = mid + 1;
// }
// else
// {
// printf("找到了,下标是:%d\n", mid);
// break;
// }
// }
// if (left > right)
// printf("找不到\n");
// return 0;
//}
//N阶乘法表
//#include<stdio.h>
//int main()
//{
// int n = 0 ;
// scanf("%d", &n);
// int i, j;
// for (i = 1; i <= n; i++)
// {
// for (j = 1; j <= i; j++)
// {
// printf("%d*%d=%d ",i, j, i * j);
// }
// printf("\n");
// }
// return 0;
//}
//函数交换两个整数
//#include<stdio.h>
//void Swap(int *a, int *b) 因为函数只能返回一个值,而需要改变两个值,固需要传址(改变实参),而不是传值(改变形参)
//{
// int t;
// t = *a;
// *a = *b;
// *b = t;
//}
//int main()
//{
// int num1, num2;
// scanf("%d %d", &num1, &num2);
// Swap(&num1, &num2);
// printf("%d %d",num1,num2);
// return 0;
//}
//
//实现函数判断year是不是润年。
//#include<stdio.h>
//void leap_year(int year)
//{
// if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
// {
// printf("%d是闰年", year);
// }
// else
// {
// printf("%d不是闰年", year);
//
// }
//}
//int main()
//{
// int year;
// printf("请输入年份\n");
// scanf("%d", &year);
// leap_year(year);
// return 0;
//}
//
//
//实现一个函数,判断一个数是不是素数。
//利用上面实现的函数打印100到200之间的素数。
//#include<stdio.h>
//#include<math.h>
//int isPrime(int num)
//{
// int i = 0;
// for (i = 2; i <= sqrt(num); i + 2)
// {
// if (num % i == 0)
// return 0;
// else
// return 1;
// }
//}
//int main()
//{
// int num;
// int ret;
// for (num = 101; num <= 200; num++)
// {
// ret = isPrime(num);
// if (ret == 1)
// printf("%d ", num);
// }
// return 0;
//}