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. 421. Maximum XOR of Two Numbers in an Array——本质:利用trie数据结构查找

    Given a non-empty array of numbers, a0, a1, a2, - , an-1, where 0 ≤ ai < 231. Find the maximum re ...

  2. 15个让人惊讶的 CSS3 动画效果演示

    CSS 是网页设计非常重要的一部分,随着越来越多的浏览器对 CSS3 支持的不断完善,设计师和开发者们有了更多的选择.如今,用纯 CSS 就可以实现各种各样很酷的效果,甚至是动画. 本文收集了15个惊 ...

  3. sql2008 附加数据库出错解决方法

    当遇到 无法为此请求检索数据,(Microsoft.SqlServer.SmoEnum)其他信息执行Transact-Sql语句或批处理时发生了异常, Microsoft.SqlServer.Conn ...

  4. X61的intel wireless 3945abg 不再掉线了

    X61本的3945ABG无线网卡总是用一段时间就掉一次线(大约一个小时不到),换过两个路由器都这毛病. 今天有空,查了下,把网卡的“节约电源”去掉了,照样掉. 升级了驱动,掉的更勤了. 调整无线通道, ...

  5. --投资情况统计详情sql

    --投资情况统计详情sqlselect BidRecord.*, RegInfo.UserName,UserInfo.phone,BorrowInfo.Title,BorrowInfo.BorrowC ...

  6. jquery插件理解看这

    zepto 插件写法 一个更换背景颜色的小插件 html 1 <div id="box">content</div> javascript 12345678 ...

  7. 根据窗体自动调整控件及文本框记住上次填写内容Demo

    第一次写文章,组词难免没有不通之处... 最近常用到Winform根据窗体大小自动调整空间大小及字体.文本框记住上次填写内容待下次输入某一段时候自动跳出上次输入内容.于是就随便把两个问题放到同一个de ...

  8. python多线程与多进程

    由于python的内存回收机制不是线程安全的,所以就有了GIL保证每个进程内,同一时刻最多只有一个线程在运行. 于是,对于python的多线程来讲,其实同一时刻依然只有一个线程在运行.而且由于线程切换 ...

  9. Windows平台下的读写锁

    Windows平台下的读写锁简单介绍Windows平台下的读写锁以及实现.背景介绍Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initialize ...

  10. Autolayout-VFL语言添加约束

    一.VFL语言简洁 VFL(Visual format language)语言是苹果为了简化手写Autolayout代码所创建的专门负责编写约束的代码.为我们简化了许多代码量. 二.使用步骤 使用步骤 ...