编写C++程序。从键盘输入10个数保存在数组中,将其逆序存放。要求使用指针完成数组操作

#include<stdio.h>
#include<string.h>
void main(void)
{
char a[10],*p;
int i,len,t,j;
p=a;
len=strlen(a);
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
for(i=0,j<len-1;i<j;i++,j--)
{
t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;
}
p=a;
for(i=0;i<10;i++,p++)
printf("%d\t",*p);
}
哪错了?求高手指点,跪求了。

第1个回答  2013-03-20
char a[10]换成int a[10]
p=strlen();这句放在这不对,strlen是求字符串的长度的,以'\0'为结束标志。
#include<string.h>
void main(void)
{ char a[10],*p;
int i,len,t,j; p=a;
len=strlen(a);
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
for(i=0,j=9;i<j;i++,j--) //这也改了
{ t=*(p+i);*(p+i)=*(p+j);*(p+j)=t; }
p=a;
for(i=0;i<10;i++,p++)
printf("%d\t",*p);}本回答被提问者采纳
第2个回答  2013-03-20
1 首先len的值不确定。
char a[10] ;
int strlen(const char* str)
{
assert(str==NULL) ;
int len=0;
while(*(str++)!='\0'))//注意这里。
{
len ++;
}
return 0;
}
strlen(a) 不确定。建议初始化char a[10]={0};
2. len=strlen(a);应该放到
for(i=0;i<10;i++)
scanf("%d",p++);
后面才对。

3.for(i=0,j<len-1;i<j;i++,j--) 应该是 for(i=0,j=len-1;i<j;i++,j--)

4 scanf("%d",p++);输入到a,
printf("%d\t",*p); 输出肯定是奇怪的符号。
查看ASCII表

5 for(i=0;i<10;i++)
scanf("%d",p++);
修改为

for(i=0;i<10;i++)
{
scanf("%c",p++);
fflsuh(stdin);//要更新缓冲区。
}

6 printf("%d\t",*p);
改为 printf("%c\t",*p);

7 最后一点把数组多长度多设一位。 char a[11]={0}

目前发现这么些错误。希望多楼主有帮助
第3个回答  2013-03-20
#include<stdio.h>
#include<string.h>
void main(void)
{
char a[10],*p; //这里声明的是字符数组
int i,len,t,j;
p=a;
len=strlen(a);
for(i=0;i<10;i++)
scanf("%c",p++); //这里输入格式就需要是 %c
p=a;
for(i=0,j<len-1;i<j;i++,j--)
{
t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;
}
p=a;
for(i=0;i<10;i++,p++)
printf("%c\t",*p); //这里也要是 %c
}本回答被网友采纳
第4个回答  2013-03-22
“for(i=0,j<len-1;i<j;i++,j--)”有这么写的吗?你的j都没有赋值
相似回答