求教两道C++题目1、求两个大数相乘 void(const char* x,const char* y, char* z)x 1234567890123456789
求教两道C++题目
1、求两个大数相乘 void(const char* x,const char* y, char* z);
x = "12345678901234567890",y = "12345678901234567890",z为x*y的输出
2、用C语言实现C++的类函数。
[解决办法]
下面是大整数相乘:
- C/C++ code
#include <iostream>using std::cout;using std::endl;int main(){char a[] = "123456789"; char b[] = "12345678"; int La = 0, Lb = 0, i = 0; while(a[i++] != '\0') ++La; i = 0; while(b[i++] != '\0') ++Lb; char *c = (char *)malloc(La + Lb + 1); int v1 = 123456, v2 = 12345; for( i = 0; i < La + Lb; ++i) c[i] = '0'; c[La + Lb] = '\0'; for( i = Lb - 1; i >= 0; --i) { int k = 0, p = 0, t = i + La; if(b[i] != '0') { for(int j = La - 1; j >= 0; --j) { int v = (b[i] - '0') * (a[j] - '0') + k; k = v/10; int v1 = c[t] - '0' + v%10 + p; p = v1/10; c[t--] = v1%10 + '0'; } } } printf("a * b =%d\n",v1 * v2); //for(int i = 0; i < sizea + sizeb -1; ++i) // printf("%c",c[i]); printf("%s",c); printf("\n");return 0;}
[解决办法]
- C/C++ code
#include <string>#include <iostream>using std::cout;using std::endl;using std::string;struct student{ student(); student(string name,int age,char sex); ~student(); void setname(string name); void setage(int age); void setsex(char ch); int getID(); string getname(); int getage(); char getsex(); int ID; string name; int age; char sex; static int number;};int student::number = 1;student::student():ID(0),name(""),age(0),sex(' '){}student::student(string name,int age,char sex):ID(number++),name(name),age(age),sex(sex){}student::~student(){}void student::setname(string name){this->name = name; }void student::setage(int age){this->age = age;}void student::setsex(char sex){this->sex = sex;}int student::getID(){return ID;}string student::getname(){return name;}int student::getage(){return age;}char student::getsex(){return sex;}int main(){student s;s.setname("dujuan");return 0;}
[解决办法]
第二个问题不知道是不是用函数指针实现:
- C/C++ code
struct A;typedef void (* FUNC)(A&);struct A{ int x; FUNC func;};void testFunc(A& a){ a.x++;}int main(){ A a; a.x = 1; printf("%d\n",a.x); a.func = testFunc; (*a.func)(a); printf("%d\n",a.x); getchar(); return 0;}
[解决办法]
用struct,定义函数指针,绑定this 即可。- C/C++ code
struct aa{ typedef void (*ptr)(struct aa *); ptr func; int a;};void dosomething(struct aa* dd){ printf("%d", dd->a);}int main(){ struct aa p; p.a = 4; p.func = &dosomething; p.func(&p); return 0;}
[解决办法]
[解决办法]
struct在c++中是类的同义词谢谢
有本事你在纯c里面包含函数给我看看?
[解决办法]
第一题:
大数的四则运算及求模
