如何用C语言编写一个计算正整数位数的程序?
更新日期:2024.05.17
此程序可通过以下步骤实现:
1、输入一个正整数
2、将整数转换为字符串(使用sprintf函数)
3、求字符串的长度(strlen函数),即正整数的位数
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
long num;
char str[20];
scanf("%ld", &num);
sprintf(str, "%ld", num);
printf("%d", strlen(str));
return 0;
}
这样写主要是考虑到整数的前面可能有0,比如:00090,是两位数。如果确认没有前置0的话,可以简化过程,省去转换为字符串的过程,直接用gets得到字符串。
卞炭郊909 :答:输入至多100行的文本,每行是一个至多100位的十进制无符号大整数,最后的输入行为零。要求计算出这些大整数的和,并以十进制方式显示。示例输入:123456789012345678901234567890 123456789012345678901234567890 123456789012345678901234567890 0 示例输出:370370367037037036703703703670 include <cstdio> include <cstring> ...
卞炭郊909 :答:求一个正整数n的位数可以先定义一个变量num,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量num的个数就自加1,最后num的值就是该整数n的位数。include <stdio.h> int main(){ int n,num=0;scanf("%d",&n);while(n){ num++;n/=10;} printf("%d\n",num)...
卞炭郊909 :答:以下是一份C语言程序,能够计算并显示一个正整数的各位数字之和:```c include <stdio.h> int main() { int num, sum = 0;printf("Please input a positive integer:");scanf("%d", &num);// 循环提取num的个位数字并求和 while (num > 0) { sum += num % 10;num /= 10;} //...
卞炭郊909 :答:include "stdio.h"include "math.h"int jiecheng(int i){ int k = 1;while(i>=1){ k*=i;i--;} return k;} void main(){ printf("请输入一个x和n\n");double x,sum=0,elem=0;int sign = 1;scanf("%lf,%d",&x,&n);int i = 1;for (i=0;i<2*n;i++){ int k ...
卞炭郊909 :答:代码:include <stdio.h>int sum(int n){int s = 0;while(n>0){s += n%10;n/=10;}return s;}int main(){int n;printf("请输入一个正整数:");scanf("%d", &n);printf("输入的数为: %d , 其各位之和为: %d\n", n, sum(n));return 0;} 输出:请输入一个正整数...
卞炭郊909 :答:include <stdio.h> int main(void){ long int x;int y,i=1;printf("请输入一个不超过100000的整数:"); // <---请把,x去掉 scanf("%ld",&x);if (x>99999||x<1) printf("你所输入的数据超出计算范围\n");else { while (x!=0) // <---请把 do 去掉 { y=x%10;printf("...
卞炭郊909 :答:include <stdio.h> int main(){ int num = 0;int s = 0;int i = 0;scanf("%d", &num);while(num){ s += num%10;num = num/10;i++;} printf("数字个数为%d,各个数相加为%d\n",i, s );return 0;}
卞炭郊909 :答:include<iostream> using namespace std;int main(){ int n;cout<<"请输入一个正整数:";cin>>n;while(n<=0){ cout<<"输入无效,请重新输入:";cin>>n;} int result=1;for(int i=1;i<=n;i++)result *= i;cout<<"n!="<<result<<endl;return 0;} ...
卞炭郊909 :答:void main(){ int i,j,num=0,n,flg;printf("输入任意小于20的正整数:\n >>");scanf("%d",&i);while(i>=20||i<=0){ printf("Error!\n请重新输入:\n >>");scanf("%d",&i);} n=i*100;printf("\n%d至%d之间的素数有:\n",i,n);for(;i<n;i++){ if(i==1)cont...
卞炭郊909 :答:include <stdio.h> int main(){ int a, b, i, t;int k = 0, sum = 0;scanf("%d", &a); //输入整数a t = a;if(a / 10 == 0){ k = 1;sum = a;printf("%d\n", k);printf("%d\n", sum);} else { while(a / 10 != 0){ a = a / 10; //每除10,就有...