学习不易,不要坚持
- 将数组A中的内容和数组B中的内容进行交换。(数组一样大)
- 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
- 编写程序数一下 1到 100 的所有整数中出现多少次数字9。
1.
//交换两个数组的值
//解题思路:定义一个新的临时变量temp,将两个数组的每个值借助临时变量来交换。打印时可以写个打印函数,这样会使主函数的条理更清晰。
#include <stdio.h>
void Exchange_arr(int arr1[], int arr2[], int sz1, int sz2)
{
int i = 0 ;
int j = 0 ;
while((i < sz1) &&(j < sz2))
{
int temp = arr1[i] ;
arr1[i] = arr2[j] ;
arr2[j] = temp ;
i++ ;
j++ ;
}
}
void Print(int arr1[], int arr2[], int sz1, int sz2)
{
int i = 0 ;
int j = 0 ;
for(i=0; i<sz1; i++)
{
printf("%3d ", arr1[i]) ;
}
printf("\n") ;
for(j=0; j<sz2; j++)
{
printf("%3d ", arr2[j]) ;
}
printf("\n") ;
}
int main()
{
int arr1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} ;
int arr2[] = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20} ;
int size1 = sizeof(arr1) / sizeof(arr1[0]) ;
int size2 = sizeof(arr2) / sizeof(arr2[0]) ;
printf("转换之前两个数组分别为:\n") ;
Print(arr1, arr2, size1, size2) ;
Exchange_arr(arr1, arr2, size1, size2) ;
printf("转换之后两个数组分别为:\n") ;
Print(arr1, arr2, size1, size2) ;
return 0 ;
}
运行结果:
2.
//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
//解题思路:在Count()函数里使用while循环对其累加,设个标志为flag,每次循环时都会取其相反数。具体实现见代码
#include <stdio.h>
double Count()
{
double flag = 1 ;
double i = 1 ;
double sum = 0 ;
while(i <=100)
{
sum += flag *(1 / i) ;
flag = - flag ;
i++ ;
}
return sum ;
}
int main()
{
double ret = 0 ; //用来存放计算好的值
Count() ;
ret = Count() ;
printf("1 - 1/2 + 1/3 - 1/4 +...+ 1/99 - 1/100 = %lf\n", ret) ;
return 0 ;
}
运行结果:
3.
//编写程序数一下 1到 100 的所有整数中出现多少次数字9。
#include <stdio.h>
int Count()
{
int i = 1 ;
int count = 0 ;
for(i=1; i<=100; i++)
{
if(9 == i % 10)
{
count++;
}
if(9 == i / 10)
{
count++;
}
}
return count ;
}
int main()
{
int count = 0 ; //用来计数
Count() ;
count = Count() ;
printf("1~100之间一共有 %d 个'9'\n", count) ;
return 0 ;
}
运行结果: