帮忙看看这个C++程序错在哪了?

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:05:46
我是想先输入一个5位数,再显示它的前2位和3位数
#include<iostream.h>
void main()
{
char a,b;
char *p1=new char[12];*p1=a;
char *p2=new char[12];
cout<<"输入一个5位数:";
cin>>a;
b=*p1++;*p2=b;
*p2++=*p1++;
*p2++='/0';
cout<<"显示它的前2位和3位数:"b;
}
搞错了 是输入5个字符 显示第2个和第3个字符

char a,b;
char *p1=new char[12];*p1=a; a还没有初始化
于是
cin>>a;
b=*p1++;*p2=b;
*p2++=*p1++;
*p2++='/0';
cout<<"显示它的前2位和3位数:"b;
}这些没有任何意义

char *p1=new char[12];*p1=a;

你把p1指向了一个新申请的内存,然后又把这块空间的第一个元素填了一个没有初始化的a这个值,
然后你往a这个char型的空间里面输入东西
b给了p1数组的第二个元素,这个元素没有初始化的,很可能是空的0或者乱码。继而你又把这个不知道是什么值放到了p2第一个位置;
很显然,你不太会用指针。
你想的cin输入的是一个字符串,事实上,它输入的只是一个字符。
也许可以这么改 :/* 强烈建议不要用new了,new了不要忘记delete,这么小的数组。。 */
#include<iostream.h>
void main()
{

char p1[12]="";
char p2[12]="";

cout<<"输入一个5位数:";
cin>>p1;

p2[0]=p1[1];
p2[1]=p1[2];

cout<<"显示它的前2位和3位数:"b;
}