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. ODBC错误处理

    ODBC 中的错误处理 ODBC 中的错误是使用来自每个 ODBC 函数调用的返回值和 SQLError 函数或 SQLGetDiagRec 函数的返回值进行报告的.SQLError 函数用于 ODB ...

  2. ROS语音识别

    一.语音识别包 1.安装         安装很简单,直接使用ubuntu命令即可,首先安装依赖库: $ sudo apt-get install gstreamer0.10-pocketsphinx ...

  3. C- struct的使用

    数组是二等公民,不能进行整体赋值,或者参数传递,或者作为返回值. But!如果封装在struct内部,就完全不一样了 #include <iostream> using namespace ...

  4. Quartz 2D 图形上下文栈 矩阵 裁剪

    Quartz 2D 图形上下文栈  矩阵 // // DJVIew.m // 图形上下文栈 // // Created by zjj on 15/6/30. // Copyright (c) 2015 ...

  5. 读者写者问题(有bug 后续更改)

    与上一篇<秒杀多线程第十篇 生产者消费者问题>的生产者消费者问题一样,读者写者也是一个非常著名的同步问题.读者写者问题描述非常简单,有一个写者很多读者,多个读者可以同时读文件,但写者在写文 ...

  6. JAVA小记

    关于重写equals()方法和重写toString()方法,一般来说,Objects的默认子类都重写了这两个方法,直接利用就行了: 对于用户自定义的类,如果要用到这两方法,就必须在程序中重写.

  7. 面试题之spring

    一.Spring的理解 Spring是一个轻量级的容器,非侵入性的框架.最重要的核心概念是IOC,并提供AOP概念的实现方式,提供对持久层,事务的支持,对当前流行的一些框架(Struts,Hibern ...

  8. ios上传应用后,审核流程完成前(reveiw)修改了程序内容,如何上传替换

    其实挺简单,只需要更改下version和build版本 看图说话就可以.我的程序之前版的版本设置 修改bug之后的设置: 然后重新打包就好了,提示打包成功后,在itunesconnect查看发现 选中 ...

  9. python解无忧公主的数学时间编程题001.py

    python解无忧公主的数学时间编程题001.py """ python解无忧公主的数学时间编程题001.py http://mp.weixin.qq.com/s?__b ...

  10. JavaScript基础--超级玛丽(七)(上下左右控制)

    相信大家都玩过超级玛丽,下面实现控制玛丽的上.下.左.右等基本功能,本篇只是在练习JavaScript的用法 1.创建一个HTML页面 <!doctype html> <html l ...