41.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
输入9,输出9*9口诀表
输入12,输出12*12的乘法口诀表。
void CFB(int n)
{
int i = 0;
int j = 0;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d * %d = %d ", i, j, i * j);
}
printf("\n");
}
}
#include<stdio.h>
int main()
{
int cs = 0;
scanf("%d", &cs);
CFB(cs);
return 0;
}
42.实现一个函数来交换两个整数的内容。
#include<stdio.h>
void Swap(int* pa,int* pb)
{
int t = 0;
t = *pa;
*pa = *pb;
*pb = t;
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("交换前为%d %d \n", a, b);
Swap(&a, &b);
printf("交换后为%d %d \n",a,b );
return 0;
}
43.实现一个函数来进行整型有序数组的二分查找
数组在进行传参时,并不会把整个数组都传过去
数组在传参的过程中,本质上传的是首元素的地址
#include<stdio.h>
int binary_search(int arr[], int k, int sz)
{
int lift = 0;
int right = sz - 1;
while (lift <= right)
{
int mid = lift + (right - lift) / 2;
if (arr[mid] > k)
right = mid - 1;
else if (arr[mid] < k)
lift = mid + 1;
else
return mid;
}
if (lift > right)
return -1;
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 5;
int sz = sizeof(arr) / sizeof(arr[0]) ;
int ret = binary_search(arr, k,sz);
if (-1 == ret)
printf("找不到!");
else
printf("找到了,下标是:%d", ret);
return 0;
}
44.接收一个无符号整型,按照它们的顺序打印每一位。
例:
输入:1234
输出:1 2 3 4
利用递归(函数自己调用自己)来大事化小
递归=递推+回归
递归书写是必须有限制条件,当满足限制条件时递归停止。
每次递归后,会越来越接近递归停止的条件。
#include<stdio.h>
void print(int n)
{
if (n > 9)
print(n / 10);
printf("%d ", n % 10);
}
int main()
{
unsigned int n;
scanf("%d", &n);
print(n);
return 0;
}
45.利用递归的方式求N的阶乘
#include<stdio.h>
int Fac(unsigned int n)
{
int f;
if (n == 0 || n == 1)
f = 1;
else
f=Fac(n - 1)*n;
return (f);
}
int main()
{
unsigned int n= 0;
int y = 0;
scanf("%d", &n);
y = Fac(n);
printf("%d\n", y);
return 0;
}