输入:
1 2
结果:
3
说明:只能输入数字,两数间只有一个空格
代码如下:(vc6编译)
#include <stdio.h> #include <conio.h> void main(){ int fir[16]={0}; //保存输入的第一个数 int sec[16]={0}; //保存输入的第二个数 char input; int firIndex=0,secIndex=0; int flag = 0; //判断空格数,只允许出现一个空格 int sum = 0; int maxFirIndex = 0; //第一个数最大下标 int maxSecIndex = 0; //第二个数最大下标 int some = 1; //用于从数的倒数第二位往前求和时每次自乘10 //printf("%d ",fir[1]); //printf("%d ",sec[1]); printf("请输入: "); while((input=getch()) != ' '){ printf("%c",input); if(input == ' '){ flag++; }else if(input < 48 || input > 57){ //只允许输入数字 printf(" 输入格式不对,只允许输入数字! "); return; }else{ if(flag == 0){ fir[firIndex] = (int)input - 48; //字符转数字 firIndex++; }else if(flag == 1){ sec[secIndex] = (int)input - 48; secIndex++; }else{ printf(" 空格输入过多,只允许一个空格出现! ");
return; } } } maxFirIndex = --firIndex; maxSecIndex = --secIndex; firIndex--; secIndex--; //printf(" firIndex:%d,maxFirIndex:%d ",firIndex,maxFirIndex); //printf("secIndex:%d,maxSecIndex:%d ",secIndex,maxSecIndex); /* 计算第一个数的和,略过个位,从十位开始 */ for(;firIndex >= 0;firIndex--){ some *= 10; sum += fir[firIndex] * some; } some = 1; //重置 /* 计算第二个数的和,略过个位,从十位开始 */ for(;secIndex >= 0;secIndex--){ some *= 10; sum += sec[secIndex] * some; } /* 加上第一个数的个位 */ if(maxFirIndex > -1) sum += fir[maxFirIndex]; /* 加上第二个数的个位 */ if(maxSecIndex > -1) sum += sec[maxSecIndex]; printf(" 和: "); printf("%d ",sum); }
运行如下: