迟到的博客
今天是周一,上周由于要准备月考,没有来得及写博客(虽然根本没什么人看),但习惯还是要保持的,万一哪天遇到伯乐呢。
C++中的头图小问题
这篇博客的主要记录还是有关C++的各种编码,主要因为博主在复习时遇到了很多问题,趁着自己还有一些记忆,赶紧记录下来。警告前方水文预警,各路大神请避让,各路大神请避让,废话不多说,直接开整。
- 原码、补码、反码反码的的转换。正数字符开头为0,负数开头字符为1。原码-反码:首位不变,其余各位取反。反码-补码:反码+1
n!=a;
(“!=” 不等于),普通话翻译:n不等于a时为真(1),等于a时为假(0)- 完数的判断,附上题目。
这道题分为两个步骤。首先判断是否为完数。
{int i,n,sum=0;
scanf("%d",&n);
for(i=1;i<n;i++)
{if(n%i==0)
sum=sum+i;
}
if(n==sum)
printf("%d\n",n);
这里要注意,因为代码中用到了sum=sum+i;所以一定要设置一个初始值为0,如果不设置,则默认为1,因为是加法,所以会影响结果。
接下来在外边再套一个循环语句即可。
int i,n,sum=0,a;
scanf("%d",&a);
while(n!=a)
{n++,sum=0;
for(i=1;i<n;i++)
{if(n%i==0)
sum=sum+i;
}
if(n==sum)
printf("%d\n",n);
}
奉上效果图
- 下一题
int a,b,n,sum;
scanf("%d%d",&a,&b);
for(n=a;n<=b;n++)
{if(n%2==0)
{sum=sum*n;
}
}
printf("%d",sum);
这里我遇到的问题是,第一次没有没有判断它是否为偶数,也就是没有写其中的if语句,并且这里的sum默认为1,对乘法结果没有影响,不必专门进行赋值。
- 下一题 求一个范围内所有的水仙花数。定义:如歌一个数字,他的个位,十位,百位,数字的立方和,等于这=这个数本身,则称这个数是水仙花数。例子:153=13+53+33
int hun,ten,ind,n,num;
scanf("%d",&num);
for(n=100;n<=num;n++)
{hun=n/100;
ten=(n-hun*100)/10;
ind=n%10;
if(n==hun*hun*hun+ten*ten*ten+ind*ind*ind)
printf("%d",n);
}
-下一题 1/2-1/3+1/4+…+1/n(-1/n)
int n;
double deno=2,sign=1,sum=1,term;
scanf("%d",&n);
while(deno<=n)
{sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;}
printf("%lf",sum);
要注意的是,因为有分数计算,所以要采用double 浮点型来定义,输出时也要使用%lf。
-下一题,这里建议使用f ;else if;else if;else if…;else的结构,代码实在太长,就不给大家临时手打了。奉上截图。
代码
-下一题。
错误示范
int x;
float y;
char z;
scanf("%d%f%c",&x,&y,&z);
printf("%d\n%f\n%c\n",x,y,z);
return 0;
这是原因,博主也不知道,后来请求老师,经过多次讨论,认为 z拿到的是2.5和a之间的空格,解决办法就是,在定义一个字符,把空格给这个字符。
int x;
float y;
char space,z;
scanf("%d%f%c%c",&x,&y,&space,&z);
printf("%d\n%f\n%c\n",x,y,z);
return 0;
感谢我亲爱的薛老师帮我解决问题![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/effbd684af472ed166f3bdaf04960ee3.jpeg)
此次博客到此结束。