注册 登录
编程论坛 C++教室

一段有点神奇的代码 同学没看出来问题

narutosusdo 发布于 2011-11-09 22:04, 935 次点击
#include "stdafx.h"
#include
using namespace std;
int main(){
  int b;
  cout<<"请输入一断字符串,由数字和字母字符组成(不包括空格)"<<ENDL;
  char *a = new char;
  cin>>*a;
  for(b=0;*(a+b)!=0;b++){
     if(48<=*(a+b)&&*(a+b)<=57)
     cout<<*(a+b);
     else cout<<" ";
  }
  int c;
  cin>>c;
}

目的是输出字符串中的数字字符,但是一运行对话框就没了。怎么回事?
7 回复
#2
yuccn2011-11-10 09:33
在函数最后价格getchar();就能停下来了。
#3
narutosusdo2011-11-10 11:05
回复 2楼 yuccn
我的int a;cin>>a;就是起到getchar()的作用啊。而且我用了你的方法也不行,还是一输入就没了,你再仔细看一下吧
#4
sfwyx2011-11-10 16:20
整形主函数没有返回值
#5
narutosusdo2011-11-10 22:43
回复 4楼 sfwyx
试了  改成了void main(){}
可是结果还是一样
#6
尐城2011-11-11 00:41
不如你先#inculde<stdio.h>,然后最后加上system("pause");
我不会C++,不知道是不是这个原因。。。
#7
lwei2011-11-12 14:58
int main(){
  int b;
  cout<<"请输入一断字符串,由数字和字母字符组成(不包括空格)"<<endl;
  char *a = new char[100];  //这里,new char 是定义一个字符而不是字符串
  cin >>a;                  //cin>>*a 输入一个字符,而不是输入一串
  
  for(b=0;*(a+b)!=0;b++){
     if('0'<=*(a+b)&&*(a+b)<='9')
     cout<<*(a+b);
     else cout<<" ";
  }
  delete[] a;                //动态分配记得delete掉,
  int c;
  cin>>c;
}
#8
lonely_212011-11-13 11:44
程序首先都有错误,其中两句改成这样
  char *a = new char[];
  cin>>a;
1