#include "stdafx.h"#include<iostream>
using namespace std;int main()
{
cout<<"输入你要的服务:1.存款;2,取款;3转帐;4修改密码"<<endl;
cout<<"友情提示:输入对应的数字即可 "<<endl;
int n;
cin>>n;
switch(n)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
int p=4;
int m=4;
do
{
if(p!=m){
cout<<"你两次输入的密码不一致,请重新输入:"<<endl;
}
cout<<"输入你的新密码"<<endl;
cin>>m;
cout<<"再输入一次你的新密码"<<endl;
cin>>p;
}while(p!=m);
cout<<"恭喜修改密码成功"<<endl;
break;
default:
cout<<"输入有误"<<endl;
}
return 0;
}编译通不过,说是default skip p and m,如果在case 4中,p,m不赋值,可以运行,怎么回事,我在vc++6.0下编译的
主要是default那一块,去掉default那一段,可以运行。
  
 

解决方案 »

  1.   

    #include <iostream.h> ??????????
      

  2.   

    http://skyheart.yculblog.com/
    看看
      

  3.   

    default: 
    cout < < "输入有误 " < <endl; 
    -----------下面加一个RETURN OR BREAK
      

  4.   

    不能在case语句里面定义变量,你应该将变量放在swich之外定义,然后在case里面赋值
      

  5.   

    作用域的问题
    你在case   4: 中定义了变量p,m并初始化,在default中也是可见的,但是就没有初始化。
    如果你改为
    case   4:{
    int p=4;
    int m=4;
    ...
    break;
    }
    应该就可以了。
      

  6.   

    #include <iostream> 
    using   namespace   std; int   main() 

    cout<< "输入你要的服务:1.存款;2,取款;3转帐;4修改密码" << endl; 
    cout<< "友情提示:输入对应的数字即可" << endl; 
    int   n; 
    cin >> n; 
    switch(n) 

    case   1: 
    break; 
    case   2: 
    break; 
    case   3: 
    break; 
    case   4: 
    {
                    int   p=4; 
    int   m=4; 
    do 

    if(p!=m){ 
    cout << "你两次输入的密码不一致,请重新输入:" <<endl; 

    cout << "输入你的新密码 " <<endl; 
    cin >> m; 
    cout << "再输入一次你的新密码 " <<endl; 
    cin >> p; 
    }while(p!=m); 
    cout << "恭喜修改密码成功 " <<endl; 
    break; 
    }
    default: 
    cout << "输入有误 " <<endl; 
    break;

    return   0; 由于你变量m,p定义在case块了,vc编译器无法确定m,p的作用域所以会抱错,你只要用括号指定它们的作用域就可以了