大神看过来,求解一个实际问题——输入错误!请重新输入:
c4droid吧
全部回复
仅看楼主
level 7
hhdugghug5575 楼主
/*有没有爱好C或C++的大神?!哪位大神能指教一下,帮小弟改写一下下面的程序,此程序包含了一个非常实际和常见的问题,那就是——输入的数不符合程序要求,程序就会给出提示信息,每输错一次都会提示一次,直到输入正确才能得到想要的结果!
如下面这个非常简单的C++程序:输入一个数,如果这个数小于或等于1,输出提示语句,否则输出此数。*/
#include<iostream>
using namespace std;
main()
{
int k;
cout<<"请输入一个大于1的数:";
cin>>k;
while(k<=1)
{
cout<<"输入错误!请重新输入:";
cin>>k;
}
cout<<k;
}
/*
改用C语言写,结果也类似。输入错误!请重新入输入: 这句话无限循环。类似下面这样:
输入错误!请重新输入:输入错误!请重新输入:输入错误!请重新输入:输入错误!请重新输入:输入错误!请重新输入:输入错误!请重新输入:输入错误!请重新输入:......
这并非我的本意,我的意思是,每输错一次才会显示一次,具体到代码就是让下面这两条语句:cout<<"输入错误!请重新输入:"; cin>>k; 在每次输入的数不符合设定条件的情况下都会被执行一次,直到输入正确为止:类似下面这样的:
请输入一个大于1的数:0
输入错误!请重新输入:0.1
输入错误!请重新输入:-2
输入错误!请重新输入:0.99
输入错误!请重新输入:abc
输入错误!请重新输入:Xy4j
.
.
.
输入错误!请重新输入:3
3
当然“输入错误!请重新输入:”这句话永远只出现在输出框的第二行会更好,不知用C或C++代码写出的程序能否实现类似以上提及的功能?应该是我学的太浅薄吧?网页中哪些关于“验证码错误!”或“名字不能为空!”之类的代码是用什么语言写的?具体如何实现?请大神指教。呵呵,话有点多,莫见怪。
*/
2016年05月26日 13点05分 1
level 7
hhdugghug5575 楼主
/*以下是本人在手机端写的一段代码,不知能否实现上文提及的功能,我在手机端用的是c4droid,输出一次就不能再运行了,哪位有点电脑的帮我测试一下,谢谢
求2+4+6+...+n */
#include<stdio.h>
main()
{int i,n,sum;
printf("请输入一个大于等于2的偶数n:");
scanf("%d",&n);
if(n<2){
printf("输入错误!请重新输入:");
scanf("%d",&n);
}
else if(n%2==0){
{
for(i=0;i<=n;i+=2)
sum+=i;
}
printf("sum=%d",sum);
}
else
printf("输入错误!请重新输入:");
}
2016年05月26日 13点05分 2
判断之后没有循环,所以不能再输入
2016年06月14日 00点06分
level 13
用cin什么的我不熟,但用scanf的话,应该是两次“输入错误”然后等你输入东西[滑稽][滑稽]
   ——茫烟暗岭数回眸,柳絮杨花几度愁。
2016年05月28日 01点05分 5
level 7
我记得有个代码可以用来清屏,你每次循环都清屏一次应该可以做到使那句话出现在同一位置。
2016年06月21日 02点06分 10
level 5
不应该用int k;用float k;因为0.1不是整数的了
2016年06月21日 04点06分 11
level 7
1.输入int不能带任何除数字以外的符号,否则会死循环,原因是cin状态出了问题
2.换行的话在每句话后面加\n或者直接cout<<endl
3.实现这个的话,可以接收一个字符串(比如string类)再用stringstream的方法转化为int,这样会安全一些
2016年06月21日 16点06分 12
嗯,谢谢,一看就是高手,原来问题出在cin
2016年06月21日 16点06分
不知道为什么,这个方法在输入一次字符后就一直提示输入错误
2016年06月21日 16点06分
是。。。死循环的问题出在cin
2016年06月21日 16点06分
如果你加个断点的话就知道为什么cin会死循环了
2016年06月21日 16点06分
level 7
while 条件循环语句,达到要求跳出循环。。。
2016年06月21日 17点06分 13
也可以理解成,和for是互补的语句。条件和if条件相反。本人也是小白一个,不知道对不对。。
2016年06月21日 17点06分
现在我发现设计也不合理, 输入的数小于1,条件将永为真,死循环
2016年06月21日 17点06分
@hhdugghug5575 while (k>1)
2016年06月21日 18点06分
@zxc1895389 哪有这么简单,那输入一个大于1的数呢,还不是死循环
2016年06月21日 20点06分
level 7
hhdugghug5575 楼主
#include<stdio.h>
main()
{
int k;
printf("请输入一个小于等于1的数:");
scanf("%d",&k);
while(k>1)
{
printf("输入错误!请重新输入:");
scanf("%d",&k);
}
printf("k=%d",k);
}
2016年06月21日 21点06分 14
level 7
#include <stdio.h>
#include <stdlib.h>
main()
{
int i,j;
printf ("输入不小于1的数");
scanf("%d",&i);
while (i<=1)
{
printf ("输入错误,");
scanf("%d",&i);
}
printf ("输入真确!");
2016年06月21日 21点06分 15
怎么觉得这是个陷阱!楼主??
2016年06月21日 21点06分
level 7
//这个给你们玩玩
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
main ()
{
int a[3]={a[0],a[1],a[2]};
char hmh='Y';
do
{
printf (" 猜骰子大小游戏\n 初始金额1000$");
int h=1000;
for (;h>20;)
{
int n=0,z=0,i=0;
char mm;
srand(time(0));//声明伪随机数
for (;;){
printf ("\n 大小一倍,豹子三十倍\n 大(d),小(x),豹子(b)\n 请选择: ");
scanf("%s",&mm);
if (mm=='d'||mm=='x'||mm=='b')
break ;}
for (;;){
printf (" 押注:");
scanf("%d",&z);
if (z<=h&&z>20)
break ;}
printf (" 点数:");
for (i=0;i<3;i++)
{
a[i]=rand()%6+1;//产生随机数1~6
printf ("%d,",a[i]);
n+=a[i];
}
if (n>10&&mm=='d')
{z=z*0.95;
printf ("合计%d点大,+%d$\n",n,z);
h+=z;
}
if (n<11&&mm=='d')
{
printf ("合计%d点小,-%d$\n",n,z);
h-=z;
}
if (n>10&&mm=='x')
{
printf ("合计%d点大,-%d$\n",n,z);
h-=z;
}
if (n<11&&mm=='x')
{z=z*0.95;
printf ("合计%d点小,+%d$\n",n,z);
h+=z;
}
if (mm=='b')
{
if (a[0]==a[1]==a[2])
{z=z*0.95;
printf (" 中豹子,+%d",z*30);
h+=(z*30);
}
else
{
printf (" 无豹子,-%d",z);
h-=z;
}}
printf (" 总金额%d$\n\n\n",h);
}
printf ("游戏结束!!!\n\n 继续吗(Y/N)?");
scanf("%s",&hmh);
}
while (hmh=='Y');
}
2016年06月21日 22点06分 16
这个是十几天前的。
2016年06月21日 22点06分
@zxc1895389 嗯嗯,互相学习吧,我水平其实也不是很差,过二级了,只是好多库函数不懂,后来,在大神的指导下做了出来了,用个清屏函数,强制类型转化一下就比不多了,楼主发两个代码,你鉴赏一下
2016年06月22日 07点06分
@hhdugghug5575 我自学的,买书到现在一个多月,有十多天没学了,主要没有短期目标,没有学习动力,还有好多基本的都不会。现在我就想做个管理系统什么的。。。。
2016年06月22日 17点06分
回复 hhdugghug5575 :知道我的水平了吧,还没有你好[哈哈][哈哈]
2016年06月22日 17点06分
level 5
LZ那个程序是因为k没初始化吧?
2016年06月21日 23点06分 17
k是要输入的值啊,给个初值合适吗?
2016年06月22日 07点06分
level 7
hhdugghug5575 楼主
#include<iostream>
#include<cstdlib>
using namespace std;
main()
{
int k,char str[256];
cout<<"请输入一个大于1的数:";
cin>>str;
k=atoi(str);
while(k<=1)
{
cout<<"输入错误!请重新输入:";
cin>>str;
k=atoi(str);
}
cout<<"k="<<k<<endl;
cout<<"\n\n";
system("pause");
}
2016年06月22日 07点06分 18
level 7
hhdugghug5575 楼主
#include<stdio.h>
#include<conio.h>
main() {
int i, n, sum;
printf("请输入一个大于等于2的偶数n:");
scanf("%d", &n);
while (n < 2 || n % 2 != 0) {
clrscr();
printf("输入错误!请重新输入:");
scanf("%d", &n);
}
for (i = 0, sum = 0; i <= n; i += 2)
sum += i;
printf("sum=%d", sum);
}
2016年06月22日 07点06分 19
vc6.0不支持函数clrscr(),conio.h也不是标准库函数,这代码可移植性不好
2016年06月22日 07点06分
这个代码干什么的?
2016年06月22日 18点06分
@zxc1895389 2+4+6+…+n,n是最后一个偶数,比如说输入10
2016年06月23日 04点06分
@hhdugghug5575 n范围内,偶数相加吗!
2016年06月23日 06点06分
level 7
#include <stdio.h>
#include<ctype.h>
main()
{
int i=0,j=0,m=0,n=0,x=0,p=0,k=0;
char haha;
do
{
for( ;;)
{
printf(" 请输入最小值:");
scanf("%d",&i);
if (i>0)
break;
}
for(;;)
{
printf(" 请输入递增值:");
scanf("%d",&n);
if (n>0)
break;
}
for (;;)
{
printf(" 请输入结束值");
scanf("%d",&j);
if (j>=i+n)
break;
}
p=(j-i)%n;
j=j-p;
m=(j-i)/n+1;
x=(j+i)*m/2;
printf(" (%d+%d+%d至%d)\n 总共相加%d次\n 递增值为%d\n 总和为:%d\n",i,i+n,i+n*2,j,m-1,n,x);
printf(" 还要继续吗(Y/N)?");
scanf("%s",&haha);
}
while (haha=='y');
return 0;
}
2016年06月22日 18点06分 20
这个应该有二十天了,其实还可以改下。
2016年06月22日 18点06分
1 2 尾页