c语言中如何将偶数位整数等分截断为两个新的整数

例如34228751等分截断为3422和8751

思路:要想将偶数位整数等分截断为两个新的整数,首先需要求出该数的总长度,假设长度为2n。则前n为第一个整数,可以把原整数除以10的n次方求商得到;后n位为第二个整数,可以把原整数除以10的n次方求余得到。

参考代码:

#include<string.h>
#include<stdio.h>
#include<math.h>
int fun(int a){
int n=0;
while(a){
n++;
a/=10;
}
return n/2;
}
int main()
{
int a,n,t;
scanf("%d",&a);
n=fun(a);
t=(int)pow(10,n);
printf("%d %d",a/t,a%t);
return 0;
}
/*
输出: 
12345678
1234 5678
*/
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-11
#include <stdio.h>
void main()
{
int i=0,x,n,m;
int a,b;
printf("input n: ");
scanf("%d", &n );
x=n;
do{
i++ ;
x/=10;
} while( x );

i/=2;
for( m=1;i>0;m*=10,i--);
a=n/m;
b=n%m;
printf( "%d %d\n", a,b );
}

第2个回答  2015-05-11
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int main(void){
    int n,m,i;
    while(1){
        printf("Input n(n>0,length is the even number)...\nn=");
        scanf("%d",&n);
        for(i=0,m=n;m;m/=10,i++);
        if(n>0 && (i&1)==0) break;
        printf("Error, redo: ");
    }
    for(m=1,i>>=1;i>0;i--,m*=10);
    printf("\n%d is divided into 2 number is %d and %d\n",n,n/m,n%m);
    return 0;
}

本回答被提问者和网友采纳
第3个回答  2015-05-11
int main(void){
int a, bits;

scanf("%d", &a);//得到要拆分的数
if((a >= 10) && (a <100))//数位2位

bits = 2;

else

if((a >= 1000) && (a < 10000))//数位4位
bits = 4;

else

if((a > = 100000) && (a < 1000000))//数位6位
bits = 6;

else

;//自己可以根据再加

stitch(bits){

case 2: printf("%d--%d", a / 10, a % 10);break;//处理2位数
case 4: printf("%d--%d", a / 100, a % 100);break;//处理4位数
case 6: printf("%d--%d", a / 1000, a % 1000);break;//处理6位数
default: break;

}
return 0;

}

c语言中如何将偶数位整数等分截断为两个新的整数
思路:要想将偶数位整数等分截断为两个新的整数,首先需要求出该数的总长度,假设长度为2n。则前n为第一个整数,可以把原整数除以10的n次方求商得到;后n位为第二个整数,可以把原整数除以10的n次方求余得到。参考代码:include<string.h> include<stdio.h> include<math.h> int fun(int a){ ...

C语言输入若干个大于2的正整数,如果是偶数,则将其分解为两个素数并...
define N 100 void dev(int a){ int f1=0,f2=0,j=0,n,m=a,i;for(n=2;m>(a\/2);n++){ j=0;m=a-n;for(i=2;i<=n\/2;i++) if(n%i==0) f1++;for(i=2;i<=m\/2;i++) if(m%i==0) f2++;if(f1+f2==0) {j=1;} if(j==1) printf("%d=%d+%d\\n",a,n,...

C语言输入若干个大于2的正整数,如果是偶数,则将其分解为两个素数并...
int a1,a2,b1,b2,s1=0,s2=0,i,j,n,A=1,B=1;printf("输入个数字");scanf("%d",&n);if(n%2!=0||n<=2){ printf("错误");} for(i=3;i<n-3;i++){ for(A;A<=i;A++){ b1=i%A;if(!b1) s1++;} if (s1==2)\/\/\/s1==2说明只能被1和本身除尽 { for(j=n-i...

C语言:任意输入一个偶数,请装它分解为两个素数之和
可以参考下面的代码:include<stdio.h> int isprime(int n){ int i;for(i=2;i<=n\/2;i++)if(n%i==0)return 0;return 1;} void main(){ int n,i;scanf("%d",&n);for(i=2;i<n\/2;i++)if(isprime(i) && isprime(n-i))printf("%d %d\\n",i,n-i);} ...

c语言 对任意偶数n(n<=10000),编程,验证其可以分解为两个素数之和,并...
include<stdio.h>#include<math.h>int main(void){ int x,i,j,f; do { printf("请输入偶数:"); scanf("%d",&x); } while(x%2||x<3); \/\/这两个条件是或者的关系,你改成&&肯定有问题的,这个条件限制输入数据是偶数并且要大于3才可以 \/\/当x为技术时满足条...

C语言:任意输入一个偶数,请装它分解为两个素数之和。
把这个问题分为两步,首先得到<=该偶数的所有素数,然后产生两个素数,判断其和是否满足=偶数。程序如下:#include<stdio.h> #include<math.h> \/\/用到开方函数 int prime(int m)\/\/该函数判断m是否为素数,取一标志位,如果是则返回0,{ int i,flag=1; for(i=2;i<=sqrt(m)&&flag==1;i++) if(m...

C语言 下面程序的功能是将从键盘输入的偶数写成两个素数之和
如16=2*8=4*4 也就是说如果16不是一个素数,它就可以分为2个数相乘,而这两个数相乘又等于16,所以判断16是否是素数,只需要用2-16的开方(也就是4)来除以16,如果都不能整除,则16就是素数。include<stdio.h> include<stdio.h> main(){ int a,b,c,d;scanf("%d",&a); \/...

...偶数的数去掉,剩余的数按原来的顺序组成一个新数 C语言
用除以10取余(保存商以备下次继续用)的方法,从低到高依次得到每一位数字,用除以2取余的方法判断奇偶,若是偶数则丢弃,若是奇数则从低到高暂存到一数组。最后将暂存数组中的所有数字按倒序输出。

C语言编程验证任何一个大于2的偶数可以写成两个素数的和(用函数做)急...
int IsInvaildNumber(int n)\/\/输入的偶数判断 { if((n<=2)||(n%2!=0))return 1;return 0;} void main(){ int f,i,resault = 0;printf("input Number:\\n");scanf("%d",&f);if(IsInvaildNumber(f)){ printf("InvaildNumber\\n");return;} for(i=0;i<f\/2;i++){ if(...

C语言 从键盘上输入10个数到数组a中,若当2偶数相邻时,将后者除2。输出...
include <stdio.h>#include <conio.h>#include #define ARR_LEN 255 \/*数组长度上限*\/#define elemType int \/*元素类型*\/\/* 输入数组 *\/\/* elemType arr[]: 输入目标数组; int len: 元素个数 *\/void inputArray (elemType arr[], int len) {int i;for (i=0; i<len; i++)scanf (...

相似回答