问题描述
- 求大牛指教一个题!!!谢谢!
-
题目是这样的:输入一个正整数a和n,输出a+aa+aaa++++aaaaa(n个a)的和,以及输出a+aa+aaa++++++aaaaaa
可能描述的不够清楚,举一个例如:输入a=2,n=3;输出246(2+22+222)这种格式
其中246=2+22+222
然后,这是我写的代码(C语言的)
#include
#include
int main()
{
int a,n,i,l;
double sum1=0;
char fact(int a,int n);
printf("enter a,n");
scanf("%d%d",&a,&n);
l=0;
for(i=1;i<=n;i++){
l=10*l+a;
sum1=sum1+l;
}printf("%.0lf(%.0lf)",sum1,fact(a,n));
return 0;
}
char fact(int a,int n)
{
int i;
char l=a;
char sum2;
for(i=1;i<=n;i++){
sum2=sum2+l;
a=10*a+a;
l=a;
}
return sum2;
}
结果不对,请大牛们帮忙看看,哪里错了?谢谢!!!!
解决方案
#include <iostream>
using namespace std;
int main()
{
int n = 3, a = 2, result = 0;
for (int i = 1; i < n; i++)
{
result += a;
a += a * 10;
}
cout << a << endl;
return 0;
}
解决方案二:
输出
242
解决方案三:
主要是fact函数有问题,搞错了char数组和char的区别,另外int和char的区别,类似int=2,不是说char也是'2'
int main()
{
int a,n,i,l;
double sum1=0;
char* fact(int a,int n);
printf("enter a,nn");
scanf("%d%d",&a,&n);
l=0;
for(i=1;i<=n;i++){
l=10*l+a;
sum1=sum1+l;
}
printf("%.0lf(%s)",sum1,fact(a,n));
return 0;
}
char* fact(int a,int n)
{
int i,j;
int cnt = 0;
char l=a+'0';//int转换成char,比如2转换成'2'
int ar = (n+1)*n/2+(n-1)+1;//数字个数+加号个数+结束符个数
char* sum2 = (char*)malloc(sizeof(char)*ar);//分配内存
for(i=0;i<n;i++){
for(j=0;j<=i;j++){
sum2[cnt++]=l;
}
if(i!=n-1){//中间+号
sum2[cnt++]='+';
}
}
sum2[cnt++]='';//结束
return sum2;
}
解决方案四:
什么不是这个?代码是我写的,这个网站只是一个在线编译的网站。
时间: 2024-09-17 04:54:16