迟到的博客

迟到的博客

今天是周一,上周由于要准备月考,没有来得及写博客(虽然根本没什么人看),但习惯还是要保持的,万一哪天遇到伯乐呢。

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;

在这里插入图片描述

感谢我亲爱的薛老师帮我解决问题在这里插入图片描述

此次博客到此结束。

猜你喜欢

转载自blog.csdn.net/weixin_50835854/article/details/110824985
今日推荐