⑴ c语言题 整数拆分
程序的逻辑没有发现问题,只是最后
一条输出语句可能有问题,
因为s是long long类型,所以应该把
%d改为%lld再试试。
⑵ 如何用C语言拆分整数
将一个整数的各个位分离出来的最简单方法就是模10,取个位数,直到该变为0。
参考代码:
#include <stdio.h>
void main()
{
int n=0;
scanf("%d", &n );
do {
printf("%d\n", n%10 ); //每次输出个位
n/=10 ; //缩小10倍,去除原来的个位。
}while(n);
}
但这整拆分的特点是从后向前输出每一位数。
如果仅是为了输出,还想正向输出每一位数,则可用递归函数来解决。(也可以实现逆向输出)
参考代码:
#include <stdio.h>
void split_int( int n )
{
if ( n>0 )
{
//printf("%d\n", n%10 );//逆向输出,放开这里,关闭下面的printf().即:先输出当前个位,再去高位的数
split_int( n/10 );//先去输出高位的数
printf("%d\n", n%10 ); //再输出当前的个位数
}
}
void main()
{
int n;
scanf("%d", &n);
split_int(n);
}
如果想把分离开的数据存储到数组中,则最简单的方法是将整数用sprintf()存储到字符数组中,然后,遍历数组,逐位取出。
参考代码:
#include <stdio.h>
void main()
{
int n,i;
char str[20];
scanf("%d", &n);
sprintf(str,"%d", n);
for( i=0;str[i];i++ ) //正向输出
printf("%c\n", str[i] );
for( i--;i>=0;i-- ) //逆向输出
printf("%c\n", str[i] );
}
⑶ C语言编程,用递归法将一个正整数n的每个数字都拆分出来,数字前后都标记“*”。
给你个代码:
#include<stdio.h>
voidf(intn)
{
if(n)
{
if(n<10)
{
printf("*%d*",n);
return;
}
f(n/10);
printf("%d*",n%10);
}
}
intmain()
{
intn;
printf("输入一个正整数:");
scanf("%d",&n);
f(n);
return0;
}
⑷ 在C语言中,怎么分离正整数的各位数字
自己主要要明白怎样将小学的数学知识转换为计算机的知识。
除10求余,就是个位数,求商就是没有个位数的数,然后重复进行不就行了。所以程序段为:
a是输入的数
do
printf("%d\n",a%10); //输出余数
a=a/10; //求商
while(a!=0); //a不等于0表示还没有输出完。
⑸ c语言 将一小于100正整数分成若干正整数之和 使乘积最大
n拆成最多几个3的总和可以组成,其余无法用3组成的除以2
也就是看n可以由多少个3和2组成
而先找出3的量再找出2的量
其想法是5可以拆成2和3且其成积比5还要大
6 3和3且其成绩比6要还大
以此类推...
但如果有数不能被3整除,又余数只剩1
则必须将其拆解为2个2和n个3
譬如25为7个3和2个2(不为8个3和1个1)
31为9个3和2个2(不为10个3和1个1)
程式码
------------------------------------
#include <stdio.h>
#include <math.h>
void main()
{
int number=0,q,r,n3=0,n2=0;
double sum;
do
{
printf("请输入一整数N(3<N<100): ");
scanf("%d",&number);
}while(number>=100||number<4);
q=number/3;
n3=q;
r=number%3;
if(r==1)
{
n3=q-1;
n2=2;
}
else if(r==2)
n2=1;
sum=pow(2.0,n2)*pow(3.0,n3);
printf("\n最大乘积%d\n",(long)sum);
}
⑹ c语言,输入一个正整数,将这个正整数分解质因数
具体如下:
#include<stdio.h>
void main()
{int i,n;
printf("input the n:");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<n;)
{if(n%i==0)
{printf("%d*",i);
n=n/i;}
else i++;
}printf("%d",n);
}
⑺ c语言 输入一个正整数n,把它分解成质因子相乘的形式
#include<stdio.h>/*求比n小且和n互质的数的个数*/
void break_up(long *p,long n)
{
long m=n;
int i=2;
while(m!=1)
{
if(m%i==0)
{
if(*p!=i&&*p)
*(++p)=i;
else
*p=i;
m/=i;
printf("%ld*",i);
}
else
{
i++;
}
}
}
void main()
{
long n,a[100];
int i=0;
while(scanf("%ld",&n)!=EOF&&n!=0)
{
for(i=0;i<100;i++)
a[i]=0;
printf("%d=1*",n);
break_up(a,n);
i=0;
printf("\b \n");
}
}
⑻ 怎么用C语言将一个正整数分解质因数.例如,输入90,输出90=2*3*3*5
#include "stdio.h"
void main()
{int m,i,j=0;
printf("please input the number:\n");
scanf("%d",&m);
for(i=2;i<=m;i++)
{while(m%i==0)
{j++;
if(j==1) printf("%d=%d",m,i);
else printf("*%d",i);
m=m/i;
}
}
}
没有用中文,怕你用的是TC,那就会出现乱码,这程序关键在于寻找质因数和输出格式的控制。