今天在用到数组的时候忽略的一个小点,其实在之前的博客就已经写过了。
char a[]={20,61};
printf("%d\n",a[0+1]+1);
printf("%d\n",a[1]);
scanf("%d",&a[3]);//在对某个数组元素写入值时也需要用到取址符!!!
printf("a[3]=%d\n",a[3]);
而在今天的scanf和printf中的编译中
scanf("%d",a[]);
printf("a[]=%d\n",a[]);
printf("a[]=%d\n",a);//如果没有中括号,那么默认的就是首地址
有了中括号就一定要标明下标否则 会出现error,希望在中括号中有一个描述
今天我的一个题目出现了逻辑错误
题目如下求1-1/2!+1/3!-1/4! + ……- 1/10!的值
#include<stdio.h>
int main(void)
{
double sum=0;
double countsum=1;
for(int n=1;n<=10;n++)
{
if(n%2==1)
{
for(int a=n;a!=0;a--)
{
countsum=countsum*(1.0/a);
}
sum=sum+countsum;
countsum=1;//后来加上的,没有之前countsum就会累计为上一次的值
}
else
{
for(int b=n;b!=0;b--)
{
countsum=countsum*(1.0/b);
}
sum=sum-countsum;
countsum=1;//
}
}
printf("%lf\n",sum);
return 0;
}
根据之前出现的逻辑问题,发现了更为简便的阶乘算法,最后写出了优化版
#include<stdio.h>
int main(void)
{
double sum=0;
double countsum=1;
for(int n=1;n<=10;n++)
{
if(n%2==1)
{
countsum=countsum*(1.0/n);
sum=sum+countsum;
}
else
{
countsum=countsum*(1.0/n);
sum=sum-countsum;
}
}
printf("%lf\n",sum);
return 0;
}
求倒数的方法 1.0/a 而不能是1/a
还有一个错误了很久的地方 一个double变量在scanf的时候用的是%lf
float在scanf中用的是%f
但在printf中 却没啥区别,可能是在精度上面出问题吧
double e=0.0;
float r=0.0;
scanf("%lf",&e);
scanf("%f",&r);
printf("%f\n",e);
printf("%lf\n",r);