交换两个数组的内容
写个for循环,再按交换两个数的思想来写即可。代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int b[5] = { 5, 4, 3, 2, 1 };
int i;
printf("a数组:");
for (i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
putchar('\n');
printf("b数组:");
for (i = 0; i < 5; i++)
{
printf("%d ", b[i]);
}
putchar('\n');
for (i = 0; i < 5; i++)
{
int tmp;
tmp = a[i];
a[i] = b[i];
b[i] = tmp;
}
printf("a数组:");
for (i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
putchar('\n');
printf("b数组:");
for (i = 0; i < 5; i++)
{
printf("%d ", b[i]);
}
putchar('\n');
return 0;
}
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
先找算法,就是当拿到这道题时按数学思维怎么做:两种方法:
- 将其分为两部分,一部分是1+1/3+...+1/99,第二部分是-1/2-1/4-...-1/100。第一部分分母为奇数,第二部分分母为偶数,按此思想就可以写出第一种代码,如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(){ float sum = 0; float sum1 = 0; float sum2 = 0; int i = 0; for (i = 1; i < 100; i += 2){ sum1 = sum1 + 1.0 / i; } for (i = 2; i < 101; i += 2){ sum2 = sum2 - 1.0 / i; } sum = sum1 + sum2; printf("%f\n", sum); return 0; }
-
按其顺序写个循环一个一个算,数字是从一到一百,那如何解决符号问题呢?可以设一个标签flag,令其值为1,在循环体里让flag乘-1,每次循环时就会加减交替,符合题目,也就是说这个题目可以换成一个公式去表达:flag*1.0/i(写1.0不写1是因为这里的计算都是分数,就会牵扯float型或double型,所以写成浮点数;i是在代码中写一个数字遍历,从1到100)。整个题目的计算按照这个公式写出来相加即可,代码如下:
int main() { int i, flag = 1; double tmp = 1, sum = 0; for (i = 1; i <= 100; i++) { tmp = flag * 1.0 / i; sum += tmp; flag *= -1; } printf("%lf\n", sum); return 0; }
编写程序数一下1到 100 的所有整数中出现多少个数字9。
主要思想就是 查询十位和查询各位,并将他们与9作比较,相同则计数加一。那如何查询呢?将这个数除以10,若商为9则代表该数十位为9;将这个数模10,若余数为9则代表个位是9。代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i;
int count = 0;
for (i = 1; i < 100; i++)
{
if (i % 10 == 9)
{
count++;
}
if (i / 10 == 9)
{
count++;
}
}
printf("%d\n", count);
return 0;
}