scanf控制用户输入数据的合法范围_算法_c语言

如题:

要求用a,b,c三个整型变量来存储用户户输入3个值。

看程序实现:

#include <stdio.h>
int main()
{
    int a = 0, b = 0, c = 0;
    while( (a * b *c < 1 && (a<1 || b<1 || c<1)) &&( scanf("%d%d%d", &a, &b, &c ) <= 3))
    {
        fflush(stdin);
    };
    printf("%d %d %d\n", a, b, c);
    return 0;
}

scanf函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;

如果只有a被成功读入,返回值为1;

如果a和b都未被成功读入,返回值为0;

如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d

灵活运用scanf的返回值可以使用用户输入的数据更有效,不会因为输入时出现错误而导致整个程序不能运行。

使用while循环获取用户输入,当不符合条件时,再次获取数据。直到用户输入的数据有效再停止,

在循环读取中,使用 fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃

注:一个好的算法设计要保证程序的鲁棒性强,有时能在数据有瑕疵的情况下仍能给出正确结果。

时间: 2024-07-30 03:24:11

scanf控制用户输入数据的合法范围_算法_c语言的相关文章

白书_倒三角形_C语言描述

#include<stdio.h> int main() { int n,t,i,j; scanf("%d",&n); for(i=0; i<=n-1; i++) { t = 2*n - 1- 2*i; for(j=0; j<i; j++) { printf(" "); } while(t) { printf("#"); t--; } printf("\n"); } return 0; }

SQL Server 2005 控制用户权限访问表

转自:http://www.cnblogs.com/gaizai/archive/2011/07/14/2106617.html 一.需求 在管理数据库过程中,我们经常需要控制某个用户访问数据库的权限,比如只需要给这个用户访问某个表的权限,甚至是CRUD的权限,更小粒度的还可以去到某几个字段的访问权限.写这篇文章就是说明下这个操作过程. 其实这只是SQL Server权限管理很简单的一小块,有些地方并没有深入理解和讲述,只是希望对一些刚入门的童鞋有帮助,其它大侠就当是:我当堂吓一跳,然后得啖笑.

Flex控制用户可输入到文本字段中的字符集

指示用户可以输入到控件的字符集.如果 restrict 属性的值为 null,则可以输入任何字符.如果 restrict 属性的值为空字符串,则不能输入任何字符.此属性只限制用户交互:脚本可以将任何文本放入文本字段中.如果 restrict 属性的值为字符串,则只能在文本字段中输入该字符串中的字符. Flex 按从左到右的顺序浏览字符串.可以使用连字符 (-) 指定一个范围.如果字符串以尖号 (^) 开头,则先接受所有字符,然后从接受字符集中排除字符串中 ^ 之后的字符.如果字符串不以尖号 (^

Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程

原创整理不易,转载请注明出处:Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程 代码下载地址:http://www.zuidaima.com/share/1778685765291008.htm 在<Struts2教程4:使用validate方法验证数据>中曾讲到使用validate方法来验证客户端提交的数据,但如果使用validate方法就会将验证代码和正常的逻辑代码混在一起,但这样做并不利于代码维护,而且也很难将过些代码用于其他程序的验证.在St

用户输入数据的验证

1 1.手工编程验证,针对该动作类中的所有的动作方法 2 步骤: 3 a.动作类继承ActionSupport 4 b.覆盖调用public void validate()方法 5 c.在validate方法中,编写不符合要求的代码判断,并调用父类的addFieldError(String fieldName,String errorMessage) 6 如果fieldError(存放错误信息的Map)有任何的元素,就是验证不通过,动作方法不会执行. 7 Struts2框架会返回到name=in

phpmyadmin登录后显示“使用配置文件中定义的控制用户连接失败。”错误提示

在安装完XAMPP后,设置mysql中root账户密码为123456,并修改phpmyadmin配置中root的密码为123456之后,但是phpmyadmin登录后显示"使用配置文件中定义的控制用户连接失败."错误提示. 这是因为还有一些配置信息没有更改导致的,具体设置步骤如下: 1.找到phpmyadmin文件夹下面的config.inc.php文件并打开,找到这两行代码: $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Serv

第 6 章 控制用户信息

转载:http://www.mossle.com/docs/auth/html/ch006-user-info.html 第 6 章 控制用户信息 让我们来研究一些与用户信息相关的功能,包括为用户密码加密,缓存用户信息,获得系统当前登陆的用户,获得登陆用户的所有权限. 6.1. MD5加密 任何一个正式的企业应用中,都不会在数据库中使用明文来保存密码的,我们在之前的章节中都是为了方便起见没有对数据库中的用户密码进行加密,这在实际应用中是极为幼稚的做法.可以想象一下,只要有人进入数据库就可以看到所

Linux 控制用户口令安全策略

一.控制用户口令长度.有效期 /etc/login.defs 文件主要是控制密码有效期的文件,密码的复杂度的判断是通过pam模块控制来实现的,具体的模块是pam_cracklib # vi /etc/login.defs PASS_MAX_DAYS   99999    #密码最大有效期时间,99999基本上是永久有效,一般可以设置为100天有效,到了100天就不能登录了. PASS_MIN_DAYS   0            #至少多少天后必须修改口令,一般设置0天,而到了最大有效期后就必

Openssh服务配置:控制用户登录 构建密钥对验证ssh

一.项目简介:OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现.OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务.二.版本介绍:OpenSSH 支持 SSH 协议的版本 1.3.1.5.和 2.自从 OpenSSH 的版本2.9以来,默认的协议是版本2,该协议默认使用 RSA 钥匙.de:OpenSSH en:OpenSSHes:OpenSSH fr:OpenSSHit:OpenSSH ja:OpenS