c语言用循环语句实现重复循环
用循环语句实现用户的重复输入,直到输入选择为“0”时结束循环若选择1,则显示pleaseinput;若选择2,则显示pleaseinputnumber若选择0,则显示th...
用循环语句实现用户的重复输入,直到输入选择为“0”时结束循环
若选择1,则显示please input;
若选择2,则显示please input number
若选择0,则显示thank you
若选择其他,则显示error
程序
#include<stdio.h>
#include<stdlib.h>
int main(){
int c;
do{
scanf("%d",&c);
switch(c)
{
case 0:
printf("thank you\n");
break;
case 1:
printf("please input\n");
break;
case 2:
printf("please input number\n");
break;
default:
printf("error\n");
break;
}
}while(c);
getch();
}
我每次输入一个值出现一个对应的结果后,再输入其它值的时候程序就自动关闭了。如何才能做到,我输入一个值出现一个对应的结果后,可以再输入其它的值出现其它的结果? 展开
若选择1,则显示please input;
若选择2,则显示please input number
若选择0,则显示thank you
若选择其他,则显示error
程序
#include<stdio.h>
#include<stdlib.h>
int main(){
int c;
do{
scanf("%d",&c);
switch(c)
{
case 0:
printf("thank you\n");
break;
case 1:
printf("please input\n");
break;
case 2:
printf("please input number\n");
break;
default:
printf("error\n");
break;
}
}while(c);
getch();
}
我每次输入一个值出现一个对应的结果后,再输入其它值的时候程序就自动关闭了。如何才能做到,我输入一个值出现一个对应的结果后,可以再输入其它的值出现其它的结果? 展开
5个回答
2013-01-21
展开全部
你的思路没问题,有问题的可能是这一句while(c);,假如你输入的是非零的c,那么存在隐式转换就可能变成while(1);了,所以就退出了。
另外我想说一句的是,我很长时间没接触c语言,现在全都是asp.net和c#,说的对不对的你多试试。再就是编程序不要为了简化而简化,更不要为了显示“水平”而简化,程序写的越详细,注释越多越好(有点极端),就像你刚才写的while(c);规范的格式应该是while(c==0);我说这些你不要觉得不屑,随着你写程序越来越多,时间越来越长,你就会感觉这样做的必要性。有问题在留言吧
另外我想说一句的是,我很长时间没接触c语言,现在全都是asp.net和c#,说的对不对的你多试试。再就是编程序不要为了简化而简化,更不要为了显示“水平”而简化,程序写的越详细,注释越多越好(有点极端),就像你刚才写的while(c);规范的格式应该是while(c==0);我说这些你不要觉得不屑,随着你写程序越来越多,时间越来越长,你就会感觉这样做的必要性。有问题在留言吧
2015-10-15 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
不能单纯地使用if,可以配合函数或者goto跳转来实现。比如
int start = 1;
int end = 100;
int s = 0;
//以上是通用定义,我就不写多次了
//第一种方法,用goto
begin:
if(start<=end)
{
s += start;
start++;
goto begin;
}
//第一种方法结束
//第二种方法,函数递归
int function(int start,int end)
{
if(start <= end)
return start + function(start+1,end);
else
return 0;
}
以上两种方法可以在不使用for和while的前提下实现累加,但是单纯用if是无法实现的。
int start = 1;
int end = 100;
int s = 0;
//以上是通用定义,我就不写多次了
//第一种方法,用goto
begin:
if(start<=end)
{
s += start;
start++;
goto begin;
}
//第一种方法结束
//第二种方法,函数递归
int function(int start,int end)
{
if(start <= end)
return start + function(start+1,end);
else
return 0;
}
以上两种方法可以在不使用for和while的前提下实现累加,但是单纯用if是无法实现的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int main(){
int c=0;//防止输入出错,c没有赋值!
do{
scanf("%d",&c);
switch(c)
{
case 0://c==0,函数返回,也可以用 goto 跳出循环,或者加标志进入下一轮前先判断!
printf("thank you\n");
while('q'!=getch());
return 0;//函数在这里返回
case 1:
printf("please input\n");
break;
case 2:
printf("please input number\n");
break;
default:
printf("error\n");
break;
}
}while(1);//不管c是否为零!
return 0;//函数返回,这个是无用代码,不写会有警告,或出错!
}
int c=0;//防止输入出错,c没有赋值!
do{
scanf("%d",&c);
switch(c)
{
case 0://c==0,函数返回,也可以用 goto 跳出循环,或者加标志进入下一轮前先判断!
printf("thank you\n");
while('q'!=getch());
return 0;//函数在这里返回
case 1:
printf("please input\n");
break;
case 2:
printf("please input number\n");
break;
default:
printf("error\n");
break;
}
}while(1);//不管c是否为零!
return 0;//函数返回,这个是无用代码,不写会有警告,或出错!
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<stdlib.h>
int main(){
int c;
int flag=0;
do{
if(flag==1)
break;
else{
scanf("%d",&c);
switch(c)
{
case 0:
printf("thank you\n");
flag=1;
break;
case 1:
printf("please input\n");
break;
case 2:
printf("please input number\n");
break;
default:
printf("error\n");
break;
}
}
}while(c);
getchar();
return 0;
}
这样添加一个判断标志可以实现,但是我觉得最好先判断每次的输入是否满足要求,不满足直接输出error,满足的话分情况输出thans you 什么的
#include<stdlib.h>
int main(){
int c;
int flag=0;
do{
if(flag==1)
break;
else{
scanf("%d",&c);
switch(c)
{
case 0:
printf("thank you\n");
flag=1;
break;
case 1:
printf("please input\n");
break;
case 2:
printf("please input number\n");
break;
default:
printf("error\n");
break;
}
}
}while(c);
getchar();
return 0;
}
这样添加一个判断标志可以实现,但是我觉得最好先判断每次的输入是否满足要求,不满足直接输出error,满足的话分情况输出thans you 什么的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |