求助:两个关于C语言的问题

1.switch(oc) /*根据用户输入选择需要进行的操作*/
{
case '1':
introduce(); /*使用说明*/
break;
case '2':
textbgcolor();/*设置背景和文字颜色*/
break;
case '3':
memory();/*返回未使用内存的大小*/
break;
case '4':
return 0;/*返回知识库界面*/
default:
clrscr(); /* 清除文本窗口 */

这个怎么才能:若输入非数字,程序不会自动无限循环下去?

2.2. if((sc== 'Y')||(sc == 'y'))return 1;
if((sc == 'N')||(sc == 'n'))exit(0);
这个怎么才能:若输入数字,程序不会自动无限循环下去?

第1个回答  2010-02-24
我不是很明白楼主意思,不过一般输入判断都是用一个while,如果输入符合规则就执行,不符合规格就从新输入
int oc;
cout<<"请输入选择:";
while(true){
cin>>oc;
switch(oc){
case 1:
//do sth.
break;
case 2:
//do sth.
break;
...
default:
cout<<"输入错误请从新输入:";
}
}

第二个也一样用while
char sc;
cout<<"yes/no?";
while(true){
cin>>sc;
if((sc== 'Y')||(sc == 'y'))return 1;
if((sc == 'N')||(sc == 'n'))exit(0);
}
第2个回答  2010-02-24
加个while(oc<'0'&&oc>'4')

加个while(sc!='Y'&&sc!='y'&&sc!='N'&&sc!='n')本回答被提问者采纳
第3个回答  2010-02-24
第一题

把 default那段改成下面这段,这样输入非数字字符,就返回知识库界面。
default:
if (oc < '0' || oc > '9')
return 0;
else
clrscr();

第二题
同样的思路,加入以下语句则输入数字时,直接退出

if ((sc >= '0') && (sc <= '9')) exit(0)
第4个回答  2010-03-04
输入格式换为字符型试试

两个C语言的小问题(预处理命令)
c = 10*abc(a,b)= 10 * (x)<(y)?(x):(y)= 10 * 10 < 15 ? 10 : 15 = 100 < 15 ? 10 : 15 = 15 2.B(a+b) = A * a+b * a+b = 5.5 * 1 + 2 * 1 + 2 = 5.5 + 2 + 2 = 9.5

两个关于C语言的问题。
1、在x=3的状态下进入do循环,第一次运行printf语句,首先使 x -= 2 ,x的内容减掉2,输出x的当前值,所以输出了1。接着进行循环条件判断,先进行 --运算,使x的内容变为0,!0的计算结果为真,循环继续进行。第二次运行printf首先 x-=2 即 x = 0-2,使x的内容变为-2,并被输出。当x...

两个关于C语言的问题
第一题:应该这样看 if(a>c) b=a;a=c;c=b;如果你明白可追问 第二题:首先,在 switch(x) {} 中,case 0与case 1之间没有break;所以执行完case 0后面的内容后还会执行case 1后面的内容,这就是为什么会输出 #,因为执行了default : printf ("#");其次,* 这个是得不到的,除...

求解C语言两个问题
a=(x=x+1)丨丨(y=y+1),括号优先级最高,先计算第一个括号里面的x = x + 1,x = 3,3非0,为逻辑真 ||逻辑或运算符,一边为真,那结果一定为真,所以||右边就不计算了,整个结果为逻辑真赋值给a 最终就是a=1,x=3,y=2(y=y+1被优化掉不计算了)2、int x=2,y;x=(y=3,...

求解两道C语言问题(英文)
第一题 (a) 关键字:double, return (b) 标准的标识符:time, G, xyz123, this_is_a_long_one (c) 通常用于宏名称:MAX_ENTRIES (d) 其它有效的标识符:Void, MAX_ENTRIES, printf (e) 无效的标识符:Sue's, part#2, "char", #insert 第二题 这题题目肯定有问题,卫星又不是贴着...

C语言两道小题
第一题:func((x--,y++,x+y),z--)语句里(x--,y++,x+y)是个逗号表达示,每一条都会运算,但结果只取最后一条:X先-1得5,Y再+1得8,最后 x+y=((x-1)+(y-1))=((6-1)+(7+1))=13 所以括号内的最终值是13,就有func(13,8)给传递过去得结果 13+8=21(被输出)第二题就...

两个个关于C语言循环跳出的问题?
通常在C语言里面使用的跳转语句主要有四种:goto continue break return 先将四种都为你做一个简单的介绍:goto :用于模块之间的跳转,次跳转功能强大,可实现在程序内部任意位置跳转,调用形式为:A: 模块一;\/\/在这里A是一个标示符,常用大写字母表示,表示跳转后程序执行的起始位子 模块二 { goto A...

两道C语言题目,求答案和解析,谢谢~
第9题:【C】核心知识点:1、逗号表达式,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。2、++a与a++的区别,前者为先自加1而后引用当前值参与计算,后者为先引用当前值参与计算而后自加1。x=(a=3,b=++a);1)执行a=3,此时a值为3;2)执行++a,此时a值为4;3)执行b=++a...

有关c语言的两道问题
第6题 以下关于数组的描述正确的是 本题2分 C、数组大小固定,所有元素的类型必须相同 第7题 设有变量int x=0,y=1,z=1,则运行表达式:x=y++>z--后,x,y,z的值分别是 本题2分 D、0,2,0

求c语言一些常见问题,
但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“...

相似回答
大家正在搜