我与C语言第三战之num1:将数组A中的内容和数组B中的内容进行交换。(数组一样大)
首先定义两个数组用以存放元素,为了更直观的看到数组内容进行了交换,先将之前定义的两个数组内容分别打印出来,然后利用for循环和中间变量,进行两个数组间元素的交换,最后进行打印即可。具体程序代码和运行结果如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[5] = {1,2,3,4,5};
int b[5] = {6,7,8,9,10};
int i, t;
printf("数组a的元素为:\n");
for (i = 0; i < 5; i++)
{
printf("%d ",a[i]);
}
printf("\n");
printf("数组b的元素为:\n");
for (i = 0; i < 5; i++)
{
printf("%d ",b[i]);
}
printf("\n");
printf("交换后数组a和b的元素分别为:\n");
for (i = 0; i < 5; i++)
{
t = a[i];
a[i] = b[i];
b[i] = t;
}
printf("数组a的元素为:\n");
for (i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
printf("\n");
printf("数组b的元素为:\n");
for (i = 0; i < 5; i++)
{
printf("%d ", b[i]);
}
printf("\n");
system("pause");
return 0;
}
我与C语言第三战之num2:计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
首先会想到用循环来完成,但并不是每个运算符都是“+”号,观察表达式,能得知它的正负顺序是一正一负一正一负……,将循环变量当作分母,再定义一个常量n,令n=-n,并将表达式放在循环中,就能保证值的正负。要注意的是:计算结果肯定是小数,所以定义变量sum时,不能用int,要用double。具体程序代码及运行结果如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m = 0;
int n = 1;
double sum = 0.0;
for (m = 1; m < 101; m++)
{
sum += n*(1.0 / m);
n = -n;
}
printf("sum is %f\n", sum);
system("pause");
return 0;
}
我与C语言第三战之num3:编写程序数一下 1到 100 的所有整数中出现多少次数字9。
首先考虑个位为9,怎么计算?取余即可,其次考虑十位为9,利用计算机除法运算的取整特性,即可求出十位有9的数字,值得注意的是,此题中99只计算了一次,所以对最后计算出来的9的个数要加1。具体程序代码及运行结果如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m = 0;
int n = 0;
printf("1到100中有9的数字分别为:\n");
for (m = 1; m < 101; m++)
{
if (m % 10 == 9)
{
printf("%d ", m);
n++;
}
else if (m/10==9)
{
printf("%d ", m);
n++;
}
}
n += 1;
printf("\n1到100中9的个数为:%d\n", n);
system("pause");
return 0;
}
个人感悟:拿到题目,对题目的理解不够深入,经过查看监视窗口,发现了代码的漏洞及不足,再接再厉!