目录
4.判断质数:设一个数n是否能整除2—>n-1的数,真为合数,假为质数
1.判断是否为某数的倍数
2.用三元运算符比较大小
max(int x, int y) {
int z;
z = x > y ? x : y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int c = max(a, b);
printf("%d", c);
return 0;
}
3.交换变量大小
失败原因:a,b,x,y是四个地址,函数无返回
解决方法:调用指针
&a,&b是a,b的地址;*pa,*pb指针变量放的是a,b的地址,所以a,b,x,y只两个地址
void swap(int*pa, int*pb) {
int z=0;
z = *pa;
*pa = *pb;
*pb = z;
}
int main()
{
int a = 10;
int b = 20;
printf("交换前:%d,%d\n", a, b);
swap(&a, &b);
printf("交换后:%d,%d", a,b);
return 0;
}
4.判断质数:设一个数n是否能整除2—>n-1的数,真为合数,假为质数
int prime(int x) {
int n = 0;
for (n = 2;n < x;n++) {
if (x % n == 0)
return 0;
}
return 1;
}
int main() {
int i = 0;
int count = 0;
for (i = 100;i <= 200; i++) {
prime(i);
if (prime(i) == 1) {
printf("质数:%d\n", i);
count ++;
}
}
printf("共有%d个质数", count);
return 0;
}
5.判断闰年
int prime(int x) {
if (x % 400 == 0||(x%4==0&(x%100!=0)))
return 1;
return 0;
}
int main() {
int i = 0;
int count = 0;
for (i = 1000;i <= 2000; i++) {
prime(i);
if (prime(i) == 1) {
printf("闰年:%d ", i);
count ++;
}
}
printf("共有%d个闰年", count);
return 0;
}
6.有序数列的二分查找
int search(int a[], int k, int sz) {
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (a[mid] > k)
right = mid - 1;
else if (a[mid] < k)
left = mid + 1;
else
return mid;
}
return -1;
}
int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int key = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = search(arr, key, sz);
if (ret == -1)
printf("找不到");
else
printf("找到了,下标是%d", ret);
return 0;
}
7.每调用一次函数,num的值加一
函数内部想要改变外部的值(把形参的值传给实参)——用指针
指针发送外部变量给函数,函数用*变量接收
add(int *pa) {
(*pa)++;
}
int main() {
int num = 0;
for (int i = 1;i < 10;i++) {
add(&num);
printf("调用了%d次函数\n",num);
}
return 0;
}