1、C语言实现两个变量中内容的交换,我们有多种实现方式:
(1)再重新定义一个变量(给计算机增加负担)
(2)用加法或减法实现(若数值比较大,易造成溢出)
(3)按位异或运算(不用重新开辟空间,不会造成溢出)
#include<stdio.h>
#include<windows.h>
#include<math.h>
#pragma warning(disable:4996)
void Swap(int *x, int *y)//形式参数(只在函数中有效):函数名括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元)
{
*x = (*x)^(*y);//按位异或,相同为0,不同为1
*y = (*x)^(*y);
*x = (*x)^(*y);
}
int main()
{
int x, y;
printf("Please input\n");
scanf("%d %d", &x, &y);
Swap(&x, &y);//实际参数(常量、变量、表达式、函数等)
printf("Please output x=%d,y=%d\n", x, y);
system("pause");
return 0;
}
形参实例化之后其实相当于实参的一份临时拷贝
任何函数,只要进行传参,必产生临时变量
2、判断一个数是不是素数
(1)素数就是除过1和它本身再无其他约数,所以模上除过它和1的其它数等于零的话,就不是素数
(2)模上2到它的二分之一之间的数
(3)模上2到它之间的所有奇数(不包括2)
(4)该数开方,模上2到它的开方数之间的数(最优函数实现方法)
#include<stdio.h>
#include<windows.h>
#include<math.h>
#pragma warning(disable:4996)
void is_suShu(int *x)
{
int top;
top= sqrt((double)(*x));//给一个数开方
int i = 2;
for (; i <= top; i++)//减少循环次数
{
if ((*x) % i == 0)//不是素数
{
break;
}
else if (i >=top)//开方之内的数已经判断完毕,运行到此说明是素数
{
printf("is sushu\n");
}
}
}
int main()
{
int x;
printf("Please input:\n");
scanf("%d", &x);
is_suShu(&x);
system("pause");
return 0;
}