1.打印乘法口诀表
口诀表的行数和列数自己指定如:输入9,输出9×9口诀表,输出12,输出12×12的乘法口诀表。
multiplication(int index) {
if (index == 9) {
int i = 0;
for (i = 1; i < 10; i++) {
int j = 0;
for (j = 1; j < i; j++) {
printf("%d * %d = %d ", i, j, i * j);
}
printf("\n");
}
}
if (index == 12) {
int i = 0;
for (i = 1; i < 13; i++) {
int j = 0;
for (j = 1; j < i; j++) {
printf("%d * %d = %d", i, j, i * j);
}
printf("\n");
}
}
}
int main() {
int index = 0;
scanf("%d", &index);
multiplication(index);
}
2.写一个二分查找函数
功能:在一个升序数组中查找指定的数值,找到了就返回下标,找不到就返回-1.
int bin_search(int arr[], int left, int right, int key) {
// arr 是查找的数组
//left 数组的左下标
//right 数组的右下标
//key 要查找的数字
while (left<=right)
{
int mid = left + (right - left) / 2;//防止整形溢出
if (arr[mid] ==key) {
return mid;
break;
}
else if(arr[mid]<key) //中间值小于右边
{
left = mid + 1; //左下标往右
}
else
{
left = mid - 1; //中间值大于右边 左下标往左
}
}
return -1;
}
//二分查找
int main() {
int key = 0;
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("请输入你想要查找的元素:\n");
scanf("%d", &key);
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz-1;
int ret = bin_search(arr,left,right,key);
if (ret != -1) {
printf("元素%d,的数组下标为%d", key, ret);
}
else {
printf("没找到,返回%d", ret);
}
return 0;
}
3.判断闰年
int is_leap_year(int y);//函数声明 两种方法
int is_leap_year(int); //函数声明 形参可以省略
int main()
{
int y = 0;
scanf("%d", &y);
int r = is_leap_year(y);
if (r == 1)
printf("闰年\n");
else
printf("⾮闰年\n");
return 0;
}
//函数定义
int is_leap_year(int y) { //判断闰年函数 只有两种情况 用bool类型
if (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)))
return 1;
else
return 0;
}
4.判断素数
-
实现一个函数is_prime,判断一个数是不是素数。
-
利用上面实现的is_prime函数,打印100到200之间的素数。
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
// 判断一个数是否是素数
bool is_prime(int n) {
// 如果 n 小于 2,则不是素数
if (n < 2) {
return false;
}
// 如果 n 是 2,则是素数
if (n == 2) {
return true;
}
// 如果 n 是偶数,则不是素数
if (n % 2 == 0) {
return false;
}
// 检查 n 是否可以被小于或等于其平方根的奇数整除
int limit = (int) sqrt(n) + 1;
for (int i = 3; i < limit; i += 2) {
if (n % i == 0) {
return false;
}
}
// 如果没有找到可以整除 n 的数,则 n 是素数
return true;
}
int main() {
// 打印100到200之间的素数
for (int num = 100; num <= 200; num++) {
if (is_prime(num)) {
printf("%d\n", num);
}
}
return 0;
}
5.创建一个整形数组,完成对数组的操作
-
实现函数init() 初始化数组为全0
-
实现print() 打印数组的每个元素
-
实现reverse() 函数完成数组元素的逆置。
要求:自己设计以上函数的参数,返回值。
void Init(int arr[], int sz, int set)
{int i = 0;for(i=0; i<sz; i++){arr[i] = set;}
}
void Print(int arr[], int sz)
{int i = 0;for(i=0; i<sz; i++){printf("%d ", arr[i]);}printf("\n");
}
void Reverse(int arr[], int sz)
{int left = 0;int right = sz-1;
while(left<right){int tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}
}
int main()
{int arry[] = { 0,1,2,3,4,5,6,7,8,9 };int sz = sizeof(arry) / sizeof(arry[0]);Print(arry, sz);Reverse(arry, sz);Print(arry, sz);Init(arry, sz,0);Print(arry, sz);return 0;
}