一道C++改错题,自己是个小渣渣改了半天不知道怎么还是运行不出来。。。

一道C++改错题,自己是个小渣渣改了半天不知道怎么还是运行不出来。。。

问题描述:

【程序功能】输出一个数的5进制表示方式,方法,采用除5求余法,将余数放入数组中,最低位存放于数组的最右边。例如,数175,存放在有20个整形元素组成的数组的形式是,0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0,输出时忽略前面的0,输出1200.
【调试要求】在给定的程序中,可以修改或适当增加少数几个语句,但不允许删除语句。
【注意事项】 将源程序以“学号_1.cpp”为文件名存入Z盘自己的目录中。
【运行结果】 it is a reverse string!
评分依据:共6个错50分。其中2个是5分,其余为10分。

 #include <iostream.h>
void f(int p,int m)     
{
p=p+20;
    While(m)
{
*p++=m%5;
m/=5;
}
}

int main()
{
int d[20],x;
cout<<”请输入一个整型值”;
cin>>x;
f(d[20],x);
    int *p;
p=d;
int i=0;
while(*p==0)
p++;
while(i<20)
cout<<*p++;
}

 #include <stdlib.h>
#include <string.h>
#include <iostream.h>
void f(int * p,int m)     
{
p=p+19;
while (m)
{
*(p--)=m%5;
m/=5;
}
}

int main()
{
int d[20],x;
memset(d,0,20*sizeof(int));
cout<<"please input";
cin>>x;
f(d,x);
int *p;
p=d;
int i=0;
while(*p==0)
{p++;
i++;}
while(i<20)
{cout<<*p++;i++;}
}

/*指针不熟就不要乱用好吧,还有你这个语法就错这么多怎么通过的编译?*/

#include
using namespace std;
void f(int p[],int m) {
for(int i = 19; m > 0 && i >= 0;i--){
p[i] = m%5;
m/=5;
}
}

int main() {
int d[20],x;
for(int i = 0; i < 20; i++)
d[i] = 0;
cout<< "请输入一个整型值";
cin>>x;
f(d, x);
int i;
for(i = 0; i < 20 && d[i] == 0; i++)
;
for(; i < 20; i++)
cout << d[i];
}

图片说明

如果问题得到解决,麻烦点下我回答右边的采纳,谢谢。

*p++=m%5; 这里应该是--吧

 #include <stdlib.h>
#include <string.h>
#include <iostream.h>
void f(int * p,int m)     
{
p=p+19;
while (m)
{
*(p--)=m%5;
m/=5;
}
}

int main()
{
int d[20],x;
memset(d,0,20*sizeof(int));
cout<<"请输入一个整型值";
cin>>x;
f(d,x);
int *p;
p=d;
int i=0;
while(*p==0)
{p++;
i++;}
while(i<20)
{cout<<*p++;i++;}
}

主要是一些指针方面的错误。要仔细检查下。

还有什么不会的,可以追问啊

顺便说下我的代码,
cout<<”请输入一个整型值”;
这行不用改,换成cout<<"please input";是因为我的系统是英文版的,无法输入中文。

#include
#include
void f(int * p,int m)

{
p=p+19;
while (m)
{
*(p--)=m%5;
m/=5;
}
}

int main()
{
int d[20],x;
memset(d,0,20*sizeof(int));
cout<<"请输入一个整型值";
cin>>x;
f(d,x);
int *p;
p=d;
int i=0;
while(*p==0)
{p++;
i++;}
while(i<20)
{cout<<*p++;i++;}
}

#include
#include
void f(int * p,int m)

{
p=p+19;
while (m)
{
*(p--)=m%5;
m/=5;
}
}

int main()
{
int d[20],x;
memset(d,0,20*sizeof(int));
cout<<"请输入一个整型值";
cin>>x;
f(d,x);
int *p;
p=d;
int i=0;
while(*p==0)
{p++;
i++;}
while(i<20)
{cout<<*p++;i++;}
}

#include
void f(int *p, int m)

{
p = p + 19;
while(m)
{
*p-- = m % 5;
m /= 5;
}
}

int main()
{
int d[20] = {0}, x;
std::cout << "请输入一个整型值";
std::cin >> x;
f(/*d[20]*/d, x);
int *p = NULL;
p = d;
int i = 0;
while(*p == 0)
{
p++;
i++;
}
while(i < 20)
{
std::cout << *p++;
i++;
}
std::cout << std::endl;
}图片说明

*p++=m%5; 这里应该是--吧

#include
#include
#include
void f(int * p,int m)

{
p=p+19;
while (m)
{
*(p--)=m%5;
m/=5;
}
}

int main()
{
int d[20],x;
memset(d,0,20*sizeof(int));
cout<<"please input";
cin>>x;
f(d,x);
int *p;
p=d;
int i=0;
while(*p==0)
{p++;
i++;}
while(i<20)
{cout<<*p++;i++;}
}

这样就ok了。