将数组A中的内容和数组B中的内容进行交换。(数组一样大)
由于数组自身的特点,无法被赋值,之前做过的交换两个变量的值的手段就没有办法直接使用了。虽然是不能够直接使用,但是由于数组内部的元素具有可更改的特点,我们一样可以通过这个方法让它们两个的内容进行交换。
具体步骤就是引入第三个数组c,让c数组中的元素等于a数组中的元素,再让a数组中的元素等于b数组中的,最后让b数组中的元素等于c数组中的。
由于数组中不仅仅只有一个元素,所以这里使用for语句进行循环,让数组中每一个元素都能够进行赋值变更,而i的大小取决于数组中元素的多少
int main()
{
int arr1[] = { 1,2,3,4,5,6,7 };
int arr2[] = { 7,6,5,4,3,2,1 };
int arr3[7] = { 0 };
for (int i = 0; i < 7; i++)
{
arr3[i] = arr1[i];
arr1[i] = arr2[i];
arr2[i] = arr3[i];
printf("%d %d\n", arr1[i],arr2[i]);
}
return 0;
}
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
由于是需要计算分式,首先第一点也是最重要的,结果类型必须为浮点型,否则无法输出正确的值,然后我们分析这个题目,可以看到在题目中每逢偶数,前面的运算符为负号,每逢奇数前面的运算符就变为正号,基于这个特点我们也可以考虑用一个for循环语句
int main()
{
double result = 0;
for (int i = 1; i <= 100; i++)
{
if (i%2 == 0)
{
result = result - (1.0)/i ;
}
else
{
result = result + (1.0)/i ;
}
}
printf("%f\n", result);
return 0;
}
在和小伙伴交流过后,发现这个循环有点啰嗦,在小伙伴的建议下进行了优化,省略了if中的判断,改为直接使用for语句进行循环
int main()
{
double result = 0;
int flag = 1;
for (int i = 1; i <= 100; i++)
{
result += flag * (1.0) / i;
flag = -flag;
}
printf("%f\n", result);
return 0;
}
这样更改之后明显的计算要少了很多,把原来的计算转化为执行代码速度上应该是要快一些的
编写程序数一下 1到 100 的所有整数中出现多少个数字9
从数学层面上看,1-100中有数字9的数字都有2个特点:9在十位或者9在个位。那么通过逻辑或的概念就可以执行,在for循环语句中增加一个if判断语句,对于9在十位或者9在个位的数字进行统计。
int main()
{
int a = 0;
for (int i = 1; i <= 100; i++)
{
if (i/10 == 9 || i%10 == 9)
{
a ++;
printf("%d\n", i);
}
}
printf("一共有%d个数字出现了数字9\n", a);
return 0;
}
最终得到的结果是有19个数字出现了数字9