C语言编程数位的调换#include<stdio.h>int main(void){\x05int n,m,
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/01 12:46:37
C语言编程数位的调换
#include<stdio.h>
int main(void)
{
\x05int n,m,i,count=0,a,s=0;
\x05scanf("%d",&n);
\x05m=n;
\x05while(n!=0)
\x05{n=n/10;count++;} /*计算位数*/
\x05
\x05for(i=0;i<count;i++)
\x05{
\x05\x05a=m%10;
\x05\x05s=s+a*pow(10,(count-i)); /*首尾调换*/
\x05\x05m=m/10;
\x05}
\x05printf("%d",s);
\x05return 0;
}
为什么会多出一位?
#include<stdio.h>
int main(void)
{
\x05int n,m,i,count=0,a,s=0;
\x05scanf("%d",&n);
\x05m=n;
\x05while(n!=0)
\x05{n=n/10;count++;} /*计算位数*/
\x05
\x05for(i=0;i<count;i++)
\x05{
\x05\x05a=m%10;
\x05\x05s=s+a*pow(10,(count-i)); /*首尾调换*/
\x05\x05m=m/10;
\x05}
\x05printf("%d",s);
\x05return 0;
}
为什么会多出一位?
s = s + a * pow(10, count - i - 1);
// ^^^ 要再减去1才对
再问: 减一的话最后结果就变成54320了
12345五位数,第一次取余为5,5*10000=50000经调试后却等于500000,多了个零(不减一)49999(减一)
再答: 这个减1是10的指数减1啊,不是s减1啊
因为count最后求的多少位数,所以第一位数其实是乘以10^(count-1)
所以5乘以的是10^4 就是10000
再问: 对啊,你看
再答: 等于49999是因为精度问题啦
试一下s = s + a * (int)(pow(10, count - i - 1)+1e-4);
再问: 这个1e-4是什么意思啊
再答: 就是0.0001 这个是为了修正pow(10, 5)会等于49999.99999996之类的错误
加上这个0.0001以后就会比50000大,取int的时候就不会变成49999,而是变成50000
// ^^^ 要再减去1才对
再问: 减一的话最后结果就变成54320了
12345五位数,第一次取余为5,5*10000=50000经调试后却等于500000,多了个零(不减一)49999(减一)
再答: 这个减1是10的指数减1啊,不是s减1啊
因为count最后求的多少位数,所以第一位数其实是乘以10^(count-1)
所以5乘以的是10^4 就是10000
再问: 对啊,你看
再答: 等于49999是因为精度问题啦
试一下s = s + a * (int)(pow(10, count - i - 1)+1e-4);
再问: 这个1e-4是什么意思啊
再答: 就是0.0001 这个是为了修正pow(10, 5)会等于49999.99999996之类的错误
加上这个0.0001以后就会比50000大,取int的时候就不会变成49999,而是变成50000
C语言编程数位的调换#include<stdio.h>int main(void){\x05int n,m,
求M和N最大公约数?#include<stdio.h>void main(){ &nbs
比较a与b的大小#include<stdio.h>int main(){\x05int a,b,max;\x
C语言求余数问题#include<stdio.h>main(){ int x,y,a,b,c;&n
C语言判断数位数问题#include"stdio.h"int main(){long n,j,m=1,result;sc
c语言编程#include "stdio.h"void main(){ int x,y,h,f;printf("输入h和
#include <stdio.h> #include <iostream> int main(
c语言编程计算数列合#include <stdio.h> #include &
运行后的图是:#include <stdio.h>#include <stdlib.h>void
c 语言改错#include "stdio.h"void main(){int a,b,year,day,month;s
c语言ab比较大小#include "stdio.h"void main(){int a,b;scanf("%d",&a
c语言求教#include "stdio.h"void main(){int num;do{printf("猜对有奖(如