1.将数组A中的内容和数组B中的内容进行交换。(数组一样大)
这个编程的思路和前面交换两个整数思路一样,编程采用位异或进行交换。
#include<stdio.h>
#include<windows.h>
int main()
{
int i = 0;
int a[] = { 1, 12, 23, 34, 45 };
int b[] = { 2, 43, 54, 56, 67 };
int top = sizeof(a) / sizeof(a[0]);
for (; i < top; i++)
{
a[i] = a[i] ^ b[i];
b[i] = a[i] ^ b[i];
a[i] = a[i] ^ b[i];
printf("%d %d\n", a[i], b[i]);
}
printf("\n");
system("pause");
return 0;
}
2. 计算1/1-1/2+1/3-1/4+1/5 ⋯⋯ + 1/99 - 1/100 的值。
方法1:使用函数pow表示一个数的幂次方,让正负得以实现,得到结果为0.688172.
#include<stdio.h>
#include<windows.h>
#include<math.h>
int main()
{
int i=1;
double sum = 0.0,n,m;
for (; i <= 100; i++)
{
n = pow((-1), i + 1);使用pow计算1的i幂次方.
m = 1.0 / i;
sum = sum + (n*m);
}
printf("%f", sum);
system("pause");
return 0;
}
方法二,直接使用正负让编程优化。
#include<stdio.h>
#include<windows.h>
int main()
{
int flag = 1;
int i = 1;
double sum = 0.0;
for (; i <= 100; i++)
{
sum = sum + (1.0 * flag) / i;
flag = -flag;//1和-1交替。
}
printf("%f", sum);
system("pause");
return 0;
}
3. 编写程序数一下 1到 100 的所有整数中出现多少次数字9。
#include<stdio.h>
#include<windows.h>
int main()
{
int i = 0;
int n = 0;
for (i = 0; i <= 100; i++)
{
if (i % 10 == 9)//判断个位出现9
{
n++;
printf("%d\n", i);
}
if (i / 10 == 9)//判断十位出现9
{
n++;
printf("%d\n", i);
}
}
printf("出现9的次数 %d\n", n);
system("pause");
return 0;
}
注意:不能用逻辑或来判断if (i%10==9||i/10==9)//第一个判断个位数是9,第二个判断十位数是9.这样99只判断了一次,结果为19.