1 年龄判断程序

1.1 问题

本案例需要使用交互的方式判断年龄的范围:用户从控制台输入一个年龄,由程序判断该年龄是否在18~50岁之间。程序交互过程如图-1所示:

图-1

1.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:定义变量

变量age,用于保存用户从控制台输入的年龄。

代码如下:

 
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int age;
  5. return 0;
  6. }

步骤二:从控制台输入年龄

首先,使用printf函数输出一行提示,提示输入一个年龄。

然后,使用scanf函数输入一个整数到变量age。

代码如下:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int age;
  5. printf("请输入一个年龄:");
  6. scanf("%d", &age);
  7. return 0;
  8. }

步骤三:判断年龄所在的范围

接收到年龄后,判断年龄是否在18~50岁之间。

代码如下:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int age;
  5. printf("请输入一个年龄:");
  6. scanf("%d", &age);
  7. if (age >= 18 && age <= 50)
  8. printf("该年龄在18~50岁之间\n");
  9. else
  10. printf("该年龄不在指定的范围之间\n");
  11. return 0;
  12. }

在上述代码中,使用了“&&”逻辑运算符来连接两个条件。年龄在18~50岁之间,应该使用age >= 18 && age <= 50的表达式来判断,而不能用18 <= age <= 50表达式判断。对于后一个表达式,它将永远为真,因为对于表达式18 <= age如果为真,其值为1,1 <= 50为真;如果为假,其值为0,0 <= 50也为真,所以表达式18 <= age <= 50的值始终为真。

1.3 完整代码

本案例的完整代码如下所示:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int age;
  5. printf("请输入一个年龄:");
  6. scanf("%d", &age);
  7. if (age >= 18 && age <= 50)
  8. printf("该年龄在18~50岁之间\n");
  9. else
  10. printf("该年龄不在指定的范围之间\n");
  11. return 0;
  12. }

2 将输入字母以大写形式输出

2.1 问题

本案例需要使用交互的方式将从键盘上输入的字母统一转换成大写输出:用户从控制台输入一个字母,由程序判断其大小写,如果是小写字母,则将其转换成大写,然后输出该字母。程序交互过程如图-2所示:

图-2

2.2 方案

在计算机中,所有的数据在存储和运算时都要使用二进制数表示,同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的美国信息交换标准码,统一规定了上述常用符号用哪个二进制数来表示,称为ASCII码字符集。

在ASCII码字符集中,大写字母A的ASCII码为65,小写字母a的ASCII码为97,其差是32;大写字母B的ASCII码为66,小写字母b的ASCII码为98,其差也是32;依此类推,会发现大写字母与小写字母的ASCII码都差32。所以由小写字母转换成大写字母只需要将小写字母的ASCII码减去32,即变成大写字母的ASCII码。

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:定义变量

定义变量ch,用于存储从控制台输入的字母,代码如下:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. char ch;
  5. return 0;
  6. }

步骤二:从控制台输入一个字母

首先,使用printf函数输出一行提示,提示输入一个字母。

然后,使用scanf函数输入这个字母到变量ch。

代码如下:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. char ch;
  5. printf("请输入一个字母:");
  6. scanf("%c", &ch);
  7. return 0;
  8. }

步骤三:判断并输出

首先,判断输入的字符是否为字母。

判断的方法为:比较输入的字符的ASCII码是否在大写字母A的ASCII码到Z的ASCII码之间或者是否在小写字母a的ASCII码到z的ASCII码之间,如果是则说明输入的字符是字母,否则不是。

然后,如果是字母,则将其转换成大写后输出;不是字母,则属出错误提示。

代码如下:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. char ch;
  5. printf("请输入一个字母:");
  6. scanf("%c", &ch);
  7. if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'B'))
  8. {
  9. if(ch >= 'a' && ch <= 'z')
  10. ch = ch - ('a' - 'A');
  11. printf("输出结果为:%c\n", ch);
  12. }
  13. else
  14. printf("输入的字符不是字母。\n");
  15. return 0;
  16. }

2.4 完整代码

本案例的完整代码如下所示:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. char ch;
  5. printf("请输入一个字母:");
  6. scanf("%c", &ch);
  7. if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'B'))
  8. {
  9. if(ch >= 'a' && ch <= 'z')
  10. ch = ch - ('a' - 'A');
  11. printf("输出结果为:%c\n", ch);
  12. }
  13. else
  14. printf("输入的字符不是字母。\n");
  15. return 0;
  16. }

3 将输入的百分制成绩转换成等级成绩

3.1 问题

学员成绩等级计算程序要求根据学员的分数计算该分数的所属等级并输出。首先,用户输入学员的分数,该分数要求在0~100之间,如果录入错误,则提示错误信息,交互过程如图-3:

图-3

如果用户输入的分数正确(在0到100之间),则根据表-1中的规则计算该分数所对应的级别,并输出计算结果,交互过程如图-4所示:

图-4

3.2 方案

本案例要求使用if-else结构来实现。

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:定义变量

定义变量score,用于存储从控制台输入的成绩,代码如下:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int score;
  5. return 0;
  6. }

步骤二:从控制台输入一个成绩

首先,使用printf函数输出一行提示,提示输入一个成绩。

然后,使用scanf函数输入成绩到变量score。

代码如下:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int score;
  5. printf("请输入该学员的分数(0~100):");
  6. scanf("%d", &score);
  7. return 0;
  8. }

步骤三:使用if-else结构进行判断

先使用if语句判断所录入的分数是否在0到100之间;如果不在正确的范围,则先输出提示信息,再使用return终止方法的运行。代码如下所示:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int score;
  5. printf("请输入该学员的分数(0~100):");
  6. scanf("%d", &score);
  7. if (score < 0 || score > 100)
  8. {
  9. printf("请输入0到100以内的分数\n");
  10. return 1;
  11. }
  12. return 0;
  13. }

如果录入的分数确实在0~100之间,则使用if-else结构判断不同的分数输出不同的级别。代码如下所示:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int score;
  5. printf("请输入该学员的分数(0~100):");
  6. scanf("%d", &score);
  7. if (score < 0 || score > 100)
  8. {
  9. printf("请输入0到100以内的分数\n");
  10. return 1;
  11. }
  12. if (score >= 90)
  13. printf("优\n");
  14. else if (score < 60)
  15. printf("不及格\n");
  16. else
  17. printf("一般\n");
  18. return 0;
  19. }

3.4 完整代码

本案例的完整代码如下所示:

  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. int score;
  5. printf("请输入该学员的分数(0~100):");
  6. scanf("%d", &score);
  7. if (score < 0 || score > 100)
  8. {
  9. printf("请输入0到100以内的分数\n");
  10. return 1;
  11. }
  12. if (score >= 90)
  13. printf("优\n");
  14. else if (score < 60)
  15. printf("不及格\n");
  16. else
  17. printf("一般\n");
  18. return 0;
  19. }

4 实现闰年判断程序

4.1 问题

闰年(leap year)是为了弥补因人为立法规定造成的年度天数与地球实际公转周期的时间差而设立的。

地球绕太阳运转周期为365天5小时48分46秒(折合365.24219天),即1回归年。公立的平年(非闰年)只有365日,比一回归年短约0.2422日,所余下的时间约为4年累计一天,故每4年则于2月加一天,使当年的历年长度为366日,这一年就是闰年。但是,如果按照每4年一个闰年计算,平均每年就要多算出0.0078天,这样经过400年就会多算出3天来,因此,每400年中要减少3个闰年。所以规定,公立年份是100的倍数的,必须同时也是400的倍数才是闰年,不是400的倍数的,虽然是100的倍数,也是平年。这就是通常所说的:4年一闰,百年不闰,400年再闰。例如,2000年是闰年,1900年则是平年。

本案例需要使用交互的方式判断某年是否为闰年:用户从控制台输入需要判断的年份值,由程序判断该年是否为闰年,并将判断结果输出到控制台。程序交互过程如图-5所示:

图-5

4.2 方案

首先,此案例需要从控制台接收用户录入的年份值。然后,根据闰年的规则可以总结出,如果年份可以被400整除,则必然是闰年;另外,如果年份可以被4整除,但不能被100整除,则也是闰年;其他年份则是平年(非闰年)。因此,需要使用取余运算符(%)判断整除,并需要使用逻辑运算符来构建判断表达式,以进行判断。

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:定义变量

变量year,用于保存用户输入的年份。

代码如下:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int year;
  5. return 0;
  6. }

步骤二:输入年分值

首先,使用printf函数输出一行提示,提示输入一个年份。

然后,使用scanf函数输入成绩到变量year。

代码如下:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int year;
  5. printf("请输入一个年份:");
  6. scanf("%d", &year);
  7. return 0;
  8. }

步骤三:闰年判断

某年份只需要满足下列两个条件之一,即可认定是闰年:

1) 年份可以被4整除且不能被100整除;

2) 年份可以被400整除。

因此,需要使用%运算符、==运算符、!=运算符、&&和||运算符,来综合判断某年份是否为闰年。代码如下所示:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int year;
  5. printf("请输入一个年份:");
  6. scanf("%d", &year);
  7. if ((year%4==0/*能被4整除*/
  8. && year%100!=0)/*不能被100整除*/
  9. || year%400==0/*能被400整除*/) {
  10. printf("%d是闰年\n", year);
  11. }else{
  12. printf("%d不是闰年\n", year);
  13. }
  14. return 0;
  15. }

4.4 完整代码

本案例的完整代码如下所示:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int year;
  5. printf("请输入一个年份:");
  6. scanf("%d", &year);
  7. if ((year%4==0/*能被4整除*/
  8. && year%100!=0)/*不能被100整除*/
  9. || year%400==0/*能被400整除*/) {
  10. printf("%d是闰年\n", year);
  11. }else{
  12. printf("%d不是闰年\n", year);
  13. }
  14. return 0;
  15. }

iOS开发环境C语言基础 运算符和表达式的更多相关文章

  1. iOS开发环境C语言基础

    1 在“桌面”上创建一个文件夹Test 1.1 问题 在桌面上创建一个文件夹,我们需要了解Max OS X操作系统的操作方法.对于Max OS X操作系统,有两种方法可以在桌面上创建文件夹,一种方法是 ...

  2. iOS开发环境C语言基础 变量 、 数据类型和变量赋值 、 其他 、 运算符

    1 变量使用常用错误汇总 1.1 问题 在我们使用变量的过程中,会遇到一些问题,在此将这些问题进行汇总,在今后使用的过程中,不出错.即使出现错误也可以很快地找到问题所在. 1.2 方案 变量在使用的过 ...

  3. iOS开发环境C语言基础 数组 函数

    1 求数组元素的最大值 1.1 问题 创建程序,实现查询数组中最大值的功能,需求为:创建一个长度为10的数组,数组内放置10个0~99之间(包含0,包含99)的随机数作为数组内容,要求查询出数组中的最 ...

  4. 实验1 C语言开发环境和数据类型、运算符、表达式

    #include <stdio.h> int main () { int x; printf("输入一个整数:\n"); scanf("%d",&a ...

  5. iOS开发系列--C语言之基础知识

    概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...

  6. Windows下搭建IOS开发环境(一)

    原文:http://blog.csdn.net/shangyuan21/article/details/18153605 我们都知道开发iPhone等ios平台的移动应用时需要使用Mac本,但是Mac ...

  7. iOS开发UI篇—Button基础

    iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...

  8. ios开发环境配置及cordova安装与常用命令

    一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...

  9. ES6开发环境准备及基础语法

    ES6开发环境准备及基础语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 三.

随机推荐

  1. 500 TypeError: Cannot read property 'connect.sid' of undefined

    1:在写passport验证测试用例时,发现有几个引用中间件顺序的错误,检查发现,passport验证写的是session,在传错误信息的时候req.flash调用也需要用到session中间件,否则 ...

  2. K2工作流的使用

    K2的工作流作为工作流中的战斗机,被各大企业争相抢购着,当然我们公司也买了,用起来确实方便也的确很强大. 主要分两的模块: 一.K2.net 2003 Service Manager 以上是对配置用户 ...

  3. 管理工具MongoVUE使用

    连接数据库 管理数据库 查询 1,查询所有 2,查询命令窗口

  4. linux 安装软件,卸载软件 等的几种方式

    安装软件的步骤和基本原则: 1. rpm安装: 定义: rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装.查询.卸载.升级等工作.但是rpm软件包之间的依赖性问题往往会很 ...

  5. discuz判断用户登录

        在include/common.inc.php 文件.程序开始先判断是否有cookie存到了sid值,然后解密cookie['auth']这个用户登录状态加密字符串,如果解密出来有uid值表示 ...

  6. asp.net后台编写 loading效果

    From :http://www.cnblogs.com/ganmk/articles/1207832.html 使用方法: protected void Page_Load(object sende ...

  7. DB2事务日志已满的解决方法

    DB2命令终端输入: db2 update db cfg for <dbname> using LOGPRIMARY 50 db2 update db cfg for <dbname ...

  8. fragment 添加menu

    http://bbs.51cto.com/thread-1091458-1-1.html 有详解 @Override public void onCreate(Bundle savedInstance ...

  9. RPI学习--环境搭建_默认启动桌面/终端修改

    参见:http://elinux.org/RPi_raspi-config 首次运行Raspbian会自动进入设置,往后也可以重新进入设置: $ sudo raspi-config 选项3 Enabl ...

  10. .net 小问题集结

    1 .net中新建的项目,调试时,提示"由于未在web.config文件中启用调试,因此无法在调试模式下运行该页.您希望做什么?" 解决办法: 在web.config文件中,将&l ...