求解char*赋值有关问题~
求解char*赋值问题~!!
#include <iostream>
using namespace std;
char* add(char* a,char* b)
{
unsigned long maxlen = max(strlen(a),strlen(b));
char* p = new char[maxlen+2];
*(p+maxlen+1)='\n';
char* pA=a+strlen(a)-1;
char* pB=b+strlen(b)-1;
int m=0;
int n=0;
int c=0;
for (unsigned long i=maxlen;i>0;i--)
{
m = n = 0;
if ((pA-1) != a)
{
m = *pA - 48;
pA--;
}
if ((pB-1) != b)
{
n = *pB - 48;
pB--;
}
*(p+i) = (m+n+c) % 10 + 48;
c = (m+n+c) / 10;
}
*p = 48+c;
return p;
}
char* sum(int n)
{
if (n==0) {
return nullptr;
}
if (n==1) {
cout<<1;
return nullptr;
}
if (n==2) {
cout<<2;
return nullptr;
}
char **array = new char* [n+1];
// char a='1';
// char b='2';
array[1]="1";
array[2]="2";
cout<<array[1]<<endl;
cout<<array[2]<<endl;
array[3]=add(array[2], array[1]);
cout<<array[3];
for(int i=3;i<=n;++i){
array[i] = add(array[i-1], array[i-2]);
// cout<<array[i]<<endl;
}
return array[n];
}
int main(int argc, const char * argv[]) {
cout << sum(10) << endl;
return 0;
}
------解决思路----------------------
模拟加法? 字符串需要0结尾
------解决思路----------------------
仅供参考:
#include <iostream>
using namespace std;
char* add(char* a,char* b)
{
unsigned long maxlen = max(strlen(a),strlen(b));
char* p = new char[maxlen+2];
*(p+maxlen+1)='\n';
char* pA=a+strlen(a)-1;
char* pB=b+strlen(b)-1;
int m=0;
int n=0;
int c=0;
for (unsigned long i=maxlen;i>0;i--)
{
m = n = 0;
if ((pA-1) != a)
{
m = *pA - 48;
pA--;
}
if ((pB-1) != b)
{
n = *pB - 48;
pB--;
}
*(p+i) = (m+n+c) % 10 + 48;
c = (m+n+c) / 10;
}
*p = 48+c;
return p;
}
char* sum(int n)
{
if (n==0) {
return nullptr;
}
if (n==1) {
cout<<1;
return nullptr;
}
if (n==2) {
cout<<2;
return nullptr;
}
char **array = new char* [n+1];
// char a='1';
// char b='2';
array[1]="1";
array[2]="2";
cout<<array[1]<<endl;
cout<<array[2]<<endl;
array[3]=add(array[2], array[1]);
cout<<array[3];
for(int i=3;i<=n;++i){
array[i] = add(array[i-1], array[i-2]);
// cout<<array[i]<<endl;
}
return array[n];
}
int main(int argc, const char * argv[]) {
cout << sum(10) << endl;
return 0;
}
------解决思路----------------------
模拟加法? 字符串需要0结尾
------解决思路----------------------
仅供参考:
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char a1[MAXLEN];
char a2[MAXLEN];
static int v1[MAXLEN];
static int v2[MAXLEN];
static int v3[MAXLEN];
int i,j,n,L,z;
void main(void) {
scanf("%d",&n);
for (j=0;j<n;j++) {
scanf("%s%s",a1,a2);
L=strlen(a1);
for (i=0;i<L;i++) v1[i]=a1[L-1-i]-'0';
L=strlen(a2);
for (i=0;i<L;i++) v2[i]=a2[L-1-i]-'0';
for (i=0;i<MAXLEN;i++) v3[i]=v1[i]+v2[i];
for (i=0;i<MAXLEN;i++) {
if (v3[i]>=10) {
v3[i+1]+=v3[i]/10;
v3[i]=v3[i]%10;
}
}
printf("Case %d:\n", j+1);
printf("%s + %s = ", a1, a2);
z=0;
for (i=MAXLEN-1;i>=0;i--) {
if (z==0) {
if (v3[i]!=0) {
printf("%d",v3[i]);
z=1;
}
} else {
printf("%d",v3[i]);
}
}
if (z==0) printf("0");
printf("\n");
}
}
//Sample Input
//3
//0 0
//1 2
//112233445566778899 998877665544332211
//
//Sample Output
//Case 1:
//0 + 0 = 0
//Case 2:
//1 + 2 = 3
//Case 3:
//112233445566778899 + 998877665544332211 = 1111111111111111110