一个3位数的数字转换小程序

作者&投稿:湛孙 (若有异议请与网页底部的电邮联系)
一个三位数的个位数是4,如果把这个4换到最左边,所得的数比原数的3倍还多98,试求原数。~

设这个三位数前面两位是 x ,则
400 + x = 3(10x + 4) + 98
400 + x = 30x + 110
30x - x = 400 - 110
29x = 290
x = 290 ÷ 29
x = 10

所以原来的三位数是 104

mov b,#100
div ab
mov 40h,a ;存放百位数.
mov a, #10
xch ab
div ab ;分离出十位个位
swap a ;十位数放在高四位
add a, b ;加上个位数
mov 41h,b ;存放

END

合并版本的代码:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

static char cha = 'o';
static char chb = 'x';
static char chc = 'U';
static char chd = 'D';

static char chx = 'o';
static char chy = 'x';

int isSSZ(int x, int y) // y在x的顺时针方向,距离限制1到4
{
switch(x)
{
case '0': case '1': case '2':
case '3': case '4': case '5': return (y>=x&&y<=x+4)?1:0;
case '6': return (y=='7'||y=='8'||y=='9'||y=='0')?1:0;
case '7': return (y=='8'||y=='9'||y=='0'||y=='1')?1:0;
case '8': return (y=='9'||y=='0'||y=='1'||y=='2')?1:0;
case '9': return (y=='0'||y=='1'||y=='2'||y=='3')?1:0;
default : return 0;
}
}

void main(int argc, char* argv[])
{
if(argc<3)
{
printf("Error.\nno input file or output file.\n");
system("pause");
exit(-2);
}

FILE *fpi,*fpo;
char num[50];
char bin[][5] = { "000", "000", "000", "000", "000" };
char loop[][5] = { "000", "000", "000", "000", "000" };
char tmp[4] = { '\0', '\0', '\0', '\0' };
fpi=fopen(argv[1],"rt");
fpo=fopen(argv[2],"wt");
int count = 0, ixx = 0;
if(!fpi||!fpo)
{
printf("Error open input file or output file.");
system("pause");
exit(-1);
}
while(!feof(fpi))
{
if( fgets( num, 50, fpi ) != NULL)
{
count++;
if(count%30==1) fprintf(fpo,"num,bin01,bin02,bin03,bin04,bin05,loop1,loop2,loop3,loop4,loop5\n");
num[3]=loop[0][3]=loop[1][3]=loop[2][3]=loop[3][3]=loop[4][3]='\0';
num[3]=bin[0][3]=bin[1][3]=bin[2][3]=bin[3][3]=bin[4][3]='\0';

bin[0][0]=(num[0]=='0')?chx:((num[0]=='7')?chy:((num[0]=='1'||num[0]=='3'||num[0]=='5'||num[0]=='9')?'1':'2'));
bin[0][1]=(num[1]=='0')?chx:((num[1]=='7')?chy:((num[1]=='1'||num[1]=='3'||num[1]=='5'||num[1]=='9')?'1':'2'));
bin[0][2]=(num[2]=='0')?chx:((num[2]=='7')?chy:((num[2]=='1'||num[2]=='3'||num[2]=='5'||num[2]=='9')?'1':'2'));
bin[1][0]=(num[0]=='1')?chx:((num[0]=='8')?chy:((num[0]=='0'||num[0]=='3'||num[0]=='5'||num[0]=='9')?'1':'2'));
bin[1][1]=(num[1]=='1')?chx:((num[1]=='8')?chy:((num[1]=='0'||num[1]=='3'||num[1]=='5'||num[1]=='9')?'1':'2'));
bin[1][2]=(num[2]=='1')?chx:((num[2]=='8')?chy:((num[2]=='0'||num[2]=='3'||num[2]=='5'||num[2]=='9')?'1':'2'));
bin[2][0]=(num[0]=='2')?chx:((num[0]=='9')?chy:((num[0]=='0'||num[0]=='3'||num[0]=='5'||num[0]=='8')?'1':'2'));
bin[2][1]=(num[1]=='2')?chx:((num[1]=='9')?chy:((num[1]=='0'||num[1]=='3'||num[1]=='5'||num[1]=='8')?'1':'2'));
bin[2][2]=(num[2]=='2')?chx:((num[2]=='9')?chy:((num[2]=='0'||num[2]=='3'||num[2]=='5'||num[2]=='8')?'1':'2'));
bin[3][0]=(num[0]=='3')?chx:((num[0]=='4')?chy:((num[0]=='1'||num[0]=='2'||num[0]=='5'||num[0]=='8')?'1':'2'));
bin[3][1]=(num[1]=='3')?chx:((num[1]=='4')?chy:((num[1]=='1'||num[1]=='2'||num[1]=='5'||num[1]=='8')?'1':'2'));
bin[3][2]=(num[2]=='3')?chx:((num[2]=='4')?chy:((num[2]=='1'||num[2]=='2'||num[2]=='5'||num[2]=='8')?'1':'2'));
bin[4][0]=(num[0]=='5')?chx:((num[0]=='6')?chy:((num[0]=='1'||num[0]=='2'||num[0]=='3'||num[0]=='8')?'1':'2'));
bin[4][1]=(num[1]=='5')?chx:((num[1]=='6')?chy:((num[1]=='1'||num[1]=='2'||num[1]=='3'||num[1]=='8')?'1':'2'));
bin[4][2]=(num[2]=='5')?chx:((num[2]=='6')?chy:((num[2]=='1'||num[2]=='2'||num[2]=='3'||num[2]=='8')?'1':'2'));

fprintf( fpo, "%s", num );
fprintf( fpo, "," );
fprintf( fpo, "%s,%s,%s,%s,%s", bin[0], bin[1], bin[2], bin[3], bin[4] );
if(count==1)
{
fprintf( fpo, "\n" );
tmp[0]=num[0];tmp[1]=num[1];tmp[2]=num[2];
continue;
}

ixx=(num[0]-tmp[0])%10; ixx=(ixx>=0)?ixx:(10+ixx);
loop[0][0]=(ixx==0)?cha:((ixx==5)?chb:(isSSZ(num[0],tmp[0])?chc:chd));
loop[1][0]=(ixx==1)?cha:((ixx==6)?chb:(isSSZ(num[0],tmp[0])?chc:chd));
loop[2][0]=(ixx==2)?cha:((ixx==7)?chb:(isSSZ(num[0],tmp[0])?chc:chd));
loop[3][0]=(ixx==3)?cha:((ixx==8)?chb:(isSSZ(num[0],tmp[0])?chc:chd));
loop[4][0]=(ixx==4)?cha:((ixx==9)?chb:(isSSZ(num[0],tmp[0])?chc:chd));
ixx=(num[1]-tmp[1])%10; ixx=(ixx>=0)?ixx:(10+ixx);
loop[0][1]=(ixx==0)?cha:((ixx==5)?chb:(isSSZ(num[1],tmp[1])?chc:chd));
loop[1][1]=(ixx==1)?cha:((ixx==6)?chb:(isSSZ(num[1],tmp[1])?chc:chd));
loop[2][1]=(ixx==2)?cha:((ixx==7)?chb:(isSSZ(num[1],tmp[1])?chc:chd));
loop[3][1]=(ixx==3)?cha:((ixx==8)?chb:(isSSZ(num[1],tmp[1])?chc:chd));
loop[4][1]=(ixx==4)?cha:((ixx==9)?chb:(isSSZ(num[1],tmp[1])?chc:chd));
ixx=(num[2]-tmp[2])%10; ixx=(ixx>=0)?ixx:(10+ixx);
loop[0][2]=(ixx==0)?cha:((ixx==5)?chb:(isSSZ(num[2],tmp[2])?chc:chd));
loop[1][2]=(ixx==1)?cha:((ixx==6)?chb:(isSSZ(num[2],tmp[2])?chc:chd));
loop[2][2]=(ixx==2)?cha:((ixx==7)?chb:(isSSZ(num[2],tmp[2])?chc:chd));
loop[3][2]=(ixx==3)?cha:((ixx==8)?chb:(isSSZ(num[2],tmp[2])?chc:chd));
loop[4][2]=(ixx==4)?cha:((ixx==9)?chb:(isSSZ(num[2],tmp[2])?chc:chd));
fprintf( fpo, "," );
fprintf( fpo, "%s,%s,%s,%s,%s", loop[0], loop[1], loop[2], loop[3], loop[4] );
fprintf( fpo, "\n" );
tmp[0]=num[0];tmp[1]=num[1];tmp[2]=num[2];
} else
printf( "done. %d line(s) processed.\n", count);
}
fclose(fpi);
fclose(fpo);
system("pause");
}

x,x+5 x-1,x-2,x-3,x-4 x+1,x+2,x+3,x+4 loop1

(注意loop1第一行没有,loop1中第二行生成的数据是通过080与596进行比较而形成的
方法为:X,X+5 因为080百位数0与596中百位数5比较刚好从|0-5|=5就用●表示
(如果两个位相等那就用○表示),在看十位,他们分别为8和9 是从9变到8也就等于x-1所以用↑表示,其他就这样的方法推出来。)

注意:百位和百位比较,个位与各位比较
不过他的方法是通过下一行与上一行进行比较来实现数字的转换的

),在看十位,他们分别为8和9 是从9变到8也就等于x-1所以用↑表示,其他就这样的方法推出来。)

注意:百位和百位比较,个位与各位比较
不过他的方法是通过下一行与上一行进行比较来实现数字的转换的


一个三位数,百位上的数字是十位和个位上数字之和,十位上的数字比个位...
这样的数有4个:330,541,752,963

很多三位数的数字都要去除个位数
简单吧 如果你只想去掉三位数数字的个位数,也一样,多用到一个函数IIF(条件,正确时是什么值,错误时是什么值)那就把公式套进去:=IIF(LEN(列标)=3,LEFT(列标,LEN(列标)-1),列标)意思是,如果选的这列数据里长度是3,就显示转换成取长度-1位从左边数过来的数字,如果不是3那就取原来的数字 ...

写出一个三位数,它的各个数位上的数字都不相等,用这个三位数各个数上...
最后的结果始终是495——495——495——……(循环下去)【解析】假设开始时三个数字为a、b、c (9≥a>b>c≥1)则最大的数为 100a+10b+c ,最小的数为 100c+10b+a ,新数为 (100a+10b+c)-(100c+10b+a)=99(a-c)新数是99的倍数 由于 2≤a-c≤8 所以新数 可能是 198...

如何把数字转换成万位显示?
5. 在“类型”框中输入格式代码`0.0000万`,这将会把数字四舍五入到小数点后四位,并以“万”为单位显示。6. 点击“确定”按钮应用格式。方法二:使用选择性粘贴 1. 在一个空白单元格中输入数字10000,这个数字将作为分母使用。2. 选中刚刚输入的10000,然后复制。3. 选中你想要转换成万位的单元...

写出3个个位数数字比十位数字大于3的数
15 16 17 18 19 26 27 28 29 37 38 39 48 49 59

有一个三位数,个位数字是百位数字的3倍,十位数字比百位数字大5,若将...
设百位数字为X 十位数字是Y 个位数字是Z Y=5+X Z=3X 2〔100X+10(Y)+Z〕+35=300X+10(Y)+X 解得X=1,Y=1+5=6,Z=1×3=3 原数为163

一个3位数,百位上的数字是a,10位上的数字是6,个位上的数字是b,求这个...
百位数是a,则有a个一百即:a*100;十位数是6,则有a个十即:6*10;个位数是b,则有b个一即:b*1;所以该数等于:a*100+60+b

用1到9组成3个三位数(每个数字只能用一次),使其中两个数的和等于第三...
124 + 659 = 783 125 + 739 = 864 127 + 359 = 486 127 + 368 = 495 128 + 367 = 495 128 + 439 = 567 129 + 357 = 486 129 + 438 = 567 129 + 654 = 783 129 + 735 = 864 134 + 658 = 792 135 + 729 = 864 138 + 429 = 567 138 + 654 = 792 139 + 428 ...

从最大的三位数到最大的五位数由相同数字组成的数有多少个?
999到99999如果包括这两个数,有 19 个。3位数:999 4位数:1111、2222、3333等等9个。5位数:11111、22222、9999等等9个

一个三位数,它的各位数字之和是4,这样的三位数中,最大的是多少,最小...
三个数相加是4,还必须是三位数。那么最大就是400。最小就是103。最小这个其实很好理解,就是尽量人往百位和十位,上面的数字剂量小,但是由于它是三位数,所以百位不能为零,那就最小是一。然后食最小这个其实很好理解,就是尽量人往百位和十位,上面的数字剂量小,但是由于它是三位数,所以百位...

宁远县19850217949: 编写程序,输入一个三位数,把它的个位、百位、十位逆转后输出.例如,输入123,转换为321输出 -
弋颜塞诺: 如果是用C语言写,如果楼主懂数组的话 那个叫“3/4”的答案就可以 如果不用数组的话再给你个 简单的 #include<stdio.h> void main() { int a,b,c,n; scanf("%d",&n); a=n/100; b=n%100/10; c=n%10; printf("%d%d%d\n",c,b,a); }

宁远县19850217949: 编写程序,输入一个三位数,把它的个位,百位,十位,逆转后输出,例如,输入123,转换为321后输出. -
弋颜塞诺: 如果可以用字符串的话,可以先把这个整数放在字符串里面,然后再根据字符串输出即可

宁远县19850217949: 编写程序:输入3个数字字符,将它们转换为一个整数后输出.如输入数 -
弋颜塞诺: int main(){ char a,b,c; int n; scanf"%c %c %c", &a, &b, &c); n=(a-'0')*100+(b-'0')*10+(c-'0'); printf("result=%d\r\n", n);}

宁远县19850217949: 接收一个三位数,将此数的百与个位数互换,写一个C语言程序. -
弋颜塞诺: #include void main() { int n,a,b; printf("intput a num:\n"); scanf("%d",&n); a=n/100; b=n%10;printf("res:%d",n-a*100-b+b*100+a); }

宁远县19850217949: 求编一个VB程序?输入一个三位整数,然后将它反向输出? -
弋颜塞诺: 可以参考下面的代码: private sub command1_click() x=inputbox("输入一个三位数") X1=X\100 'x1=三位数 的百位 X2=(X-X1*100)\10 '十位 X3=X-X1*100-X2*10 '个位 msgbox X3&X2&X1 end sub 扩展资料:VB基本函数 CBool 函数: ...

宁远县19850217949: 用汇编语言编写程序,分离某一个三位数,并将各数字转换成为数字字符 -
弋颜塞诺: dseg segmenta dw 123b db 10 dup(0) dseg endsassume cs:cseg, ds:dseg cseg segment start:mov ax, dsegmov ds, ax mov ax, alea si, bmov bx, 10 ;base 10mov cx, 0 q0:xor dx, dxdiv bxxor dx, 30hpush dxinc cxcmp ax, 0jnz q0...

宁远县19850217949: 如何编写一个程序,把一个三位整数反转 -
弋颜塞诺: pascal写的 program exe2_6; var a,b,c,d,e:integer; begin readln(d); a:=d div 100; c:=d mod 10; b:=d div 10-10*a; e:=c*100+b*10+a; writeln(e); end.

宁远县19850217949: 编写一个程序,其功能是输入一个三位数,计算并输出各位数字之和 -
弋颜塞诺: #include "stdio.h" void main() {int n,sum=0;printf("请输入一个三位数:");scanf("%d",&n);sum=n/100+n%100/10+n%10;//百位数+十位数+个位数printf("这个三位数各位数字之和是%d\n",sum);}

宁远县19850217949: 编写程序,要求输入一个三位整数,正确分离出它的个位、十位和百位数字,并在屏幕上显示出来. -
弋颜塞诺: 我来个C语言的吧 void main(void) {unsigned int a;printf("输入一个三位数:");scanf("%d",&a); printf("百位 %d; 十位 %d; 个位 %d",a/100%10,a/10%10,a%10); } 纯手打 望采纳~

宁远县19850217949: 编写一个程序,能随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示,如产生541,输出145 -
弋颜塞诺: 给一个取巧的方法:先生成三个数字,用于个位、十位、百位,然后就可以组成转换前/后的三位数了.楼主没说明用那种语言,我给出个C++版本的具体代码:#include<iostream>;#include<ctime>;#include<cstdlib>; using namespace std; void ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网