C++入门练习 76题(1)
来源:互联网 发布:影院数据 阿里云 编辑:程序博客网 时间:2024/05/21 03:17
混csdn快两个月了, 感觉自己水平还是很饼, 刚好从网上看到一篇帖子, "C++入门练习", 共76题, 抓耳挠腮半天, 发现自己对编程真的没有入门啊 :) 于是就想把这些题做做, 算是练练手吧, 省的天天灌水浪费时间 :)
呵呵, 下面是第一题的程序. 自己大老粗一个, 写程序很少去想什么优化算法, 完全按程序意思来...
1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。
───────
X Y Z D E
我的代码 : dev c++ 编译通过
#include <cstdlib>
#include <iostream>
using namespace std;
#define A num[0]
#define B num[1]
#define C num[2]
#define D num[3]
#define E num[4]
#define F num[5]
#define G num[6]
#define X num[7]
#define Y num[8]
#define Z num[9]
int num[10];
//A:num[0] B:num[1] C:num[2] D:num[3] E: F: G: H:
void display(int count);
bool split_and_validate(int adder_long, int adder_short, int result);
bool validate_last();
int main(int argc, char *argv[])
...{
// a variable to hold the add-operate result
int result;
int count = 0; // how much?
for(int i=1234; i<98765; i++) // why i and j should be this? hehe :) because.....
for(int j=12; j<987; j++)
...{
result = i+j+j;
if(split_and_validate(i,j,result) == false)
continue;
else
...{
if(validate_last() == true)
...{
count++;
display(count);
}
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
void display(int count)
...{
//char k = '0';
cout<<"found result, num:"<<count<<endl;
cout<<A<<B<<C<<D<<E<<endl;
cout<<" "<<D<<F<<G<<endl;
cout<<"+ "<<D<<F<<G<<endl;
cout<<"--------"<<endl;
cout<<X<<Y<<Z<<D<<E<<endl;
}
bool split_and_validate(int adder_long, int adder_short, int result)
...{
char e1, d1, d2;
// split the longer adder
E = adder_long%10;
D = adder_long/10 %10;
C = adder_long/100 % 10;
B = adder_long/1000 % 10;
A = adder_long/10000 % 10;
// split the shorter adder
G = adder_short%10;
F = adder_short/10 %10;
d1 = adder_short/100 %10 ;
if(D != d1)
return false;
// split the result
e1 = result % 10;
d2 = result/10 % 10;
// if the two Es are not equal, scan the next case
if ((E == e1) && (D == d2))
...{
Z = result/100 % 10;
Y = result/1000 % 10;
X = result/10000 % 10;
return true;
}
else
return false;
}
bool validate_last()
...{
for(int i=0; i<10; i++)
for(int j=i+1; j<10; j++)
if(num[i] == num[j]) return false;
return true;
}
#include <iostream>
using namespace std;
#define A num[0]
#define B num[1]
#define C num[2]
#define D num[3]
#define E num[4]
#define F num[5]
#define G num[6]
#define X num[7]
#define Y num[8]
#define Z num[9]
int num[10];
//A:num[0] B:num[1] C:num[2] D:num[3] E: F: G: H:
void display(int count);
bool split_and_validate(int adder_long, int adder_short, int result);
bool validate_last();
int main(int argc, char *argv[])
...{
// a variable to hold the add-operate result
int result;
int count = 0; // how much?
for(int i=1234; i<98765; i++) // why i and j should be this? hehe :) because.....
for(int j=12; j<987; j++)
...{
result = i+j+j;
if(split_and_validate(i,j,result) == false)
continue;
else
...{
if(validate_last() == true)
...{
count++;
display(count);
}
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
void display(int count)
...{
//char k = '0';
cout<<"found result, num:"<<count<<endl;
cout<<A<<B<<C<<D<<E<<endl;
cout<<" "<<D<<F<<G<<endl;
cout<<"+ "<<D<<F<<G<<endl;
cout<<"--------"<<endl;
cout<<X<<Y<<Z<<D<<E<<endl;
}
bool split_and_validate(int adder_long, int adder_short, int result)
...{
char e1, d1, d2;
// split the longer adder
E = adder_long%10;
D = adder_long/10 %10;
C = adder_long/100 % 10;
B = adder_long/1000 % 10;
A = adder_long/10000 % 10;
// split the shorter adder
G = adder_short%10;
F = adder_short/10 %10;
d1 = adder_short/100 %10 ;
if(D != d1)
return false;
// split the result
e1 = result % 10;
d2 = result/10 % 10;
// if the two Es are not equal, scan the next case
if ((E == e1) && (D == d2))
...{
Z = result/100 % 10;
Y = result/1000 % 10;
X = result/10000 % 10;
return true;
}
else
return false;
}
bool validate_last()
...{
for(int i=0; i<10; i++)
for(int j=i+1; j<10; j++)
if(num[i] == num[j]) return false;
return true;
}
结果:
found result, num:1
29786
850
+ 850
--------
31486
- C语言入门练习1
- c语言入门练习1
- C++入门练习 76题(1)
- objective c基础入门练习
- 【精华篇】C语言入门级练习20题(一):
- 【搜索入门专题练习1】hdu1241+hdu1312 C+D【DFS】
- c程序设计入门课程练习代码合集1
- C++入门练习 76题(2)
- C++入门练习 76题(3)
- C++入门练习 76题(4)
- C++入门练习 76题(5)
- C++入门练习 76题(6)
- C++入门练习 76题(7)
- C++入门练习 76题(8)
- C++入门练习 76题(10)
- C++入门练习 76题(9)
- C++入门练习 76题(13)
- C笔试题练习
- 如何调试和使用ActiveX控件
- Posix线程编程指南
- 链表倒转等操作完整程序
- cppsocket库基本用法
- WEB2.0
- C++入门练习 76题(1)
- 备份与还原数据库
- 几个不错的PHP学习网站推荐
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
- scratchbox foreign toolchain 制作
- 写得蛮好的linux学习笔记[转]
- 给狂爱程序设计的朋友们的一封信
- 暑假什么时候真正到来呢?
- Parser Error Message: The file '/MasterPage.master' does not exist.