版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习目标了解C语言的基本语句和三种基本结构。理解顺序结构的程序设计方法。掌握格式化输入/输出函数。掌握字符输入/输出函数。了解规矩是人们一切事情的基础、人类文化体系的基石。案例导入【问题描述】在日常生活中,人们经常用到计算器。Windows操作系统提供了一个图形界面的计算器供用户使用。本案例将用C语言开发一个简单的字符界面的算术计算器,当用户输入两个数以后,可以计算这两个数的和、差、积、商。程序,运行效果如图3-1所示。图3-1算术计算器
案例3算术计算器知识学习【知识准备】
本案例是一种最简单的顺序结构程序。按照解决问题的顺序写出相应的语句(人机交互提示、输入、计算和输出)。要完成上面的任务,必须了解C语言的基本语句,理解顺序结构的程序设计方法,掌握格式化输入/输出函数等知识点。本章学习内容如下:3.1结构化程序设计的基本概念3.2顺序结构的基本语句3.3综合应用第二知识空间:编程方法和排错原则*3.1结构化程序设计的基本概念3.1.1三种基本结构C语言是结构化程序设计语言,结构化程序设计的思想是,用顺序结构、选择结构和循环结构等三种基本结构来构造程序。结构化程序设计可采用结构化流程图。图3-2三种基本结构3.1.2C语句的基本语句1.函数调用语句由一个函数调用加一个分号“;”构成的语句,其一般形式为:函数名([实际参数表]);例如:printf("thisisabook");//调用库函数输出字符串“thisisabook”2.表达式语句由表达式加一个分号“;”就构成了一个表达式语句。例如:sum=a+b; //赋值语句i++; //自加运算表达式语句x=1,y=2; //逗号表达式语句3.1.2C语句的基本语句3.控制语句九种控制语句,用于控制程序流程,即if语句(条件语句)switch语句(多分支选择语句)while语句(循环语句)do-while语句(循环语句)for语句(循环语句)break语句(终止执行循环语句或switch语句)continue语句(结束本次循环语句)goto语句(转向语句)return语句(从函数返回语句)3.1.2C语句的基本语句4.复合语句由“{”和“}”把一些变量说明和语句组合在一起,称之为复合语句,又称语句块(Block)。例如:{inta=0,b=1,sum;
sum=a+b;
printf("%d",sum);}5.空语句只有一个分号“;”组成的语句。空语句表示什么也不做,必要时再补充完善。3.2顺序结构的基本语句3.2.1赋值语句赋值语句是由赋值表达式再加上一个分号“;”构成,一般形式为:变量=表达式;例如:y=4; //将整数4赋给变量yx=y*5+2; //将表达式y*5+2的值赋给变量x3.2顺序结构的基本语句3.2.2格式输出函数printf()C语言没有输入/输出语句,数据的输入/输出是通过函数调用实现。如printf()函数和scanf()函数等。1.printf()函数的一般形式格式:printf(格式控制,[输出列表]);功能:按指定的格式,把指定的任意类型的数据显示在屏幕上。
说明(1)“格式控制”是用双引号括起来的字符串,也称为转换控制字符串。它由字符“%”、格式字符(如d、f、c等)、普通字符(原样输出的)和转义字符(如换行\n等)组成。(2)“输出列表”是一些与“格式控制”中的格式字符一一对应的需要输出的数据,是以逗号相隔的常量、变量或表达式,也可以缺省。3.2.2格式输出函数printf()#include<stdio.h>intmain(){inta=2;charch='e';floatb=2.4F;printf("%d\n",a); //按照%d格式,输出整型变量a,然后换行
printf("%c\n",ch); //按照%c格式,输出字符变量ch,然后换行printf("%f\n",b); //按照%f格式,输出字单精度浮点型变量b,换行//在格式%d,%f中,输出a,b,其它原样输出,然后换行printf("a=%d,b=%f\n",a,b);printf("helloworld\n");//输出字符串"helloword",然后换行return0;}3.2.2格式输出函数printf()2.格式说明符格式说明符,用%开头后跟有一个字母,它规定了输出形式。如上面的%d,它规定了输出项a以整数形式输出,而%c,规定了输出项ch以字符形式输出。(1)输出整型、长整型、无符号整型数据格式控制符%md中的m是一正整数,为指定的输出字段的宽度,负号表示左对齐,缺省为右对齐;%ld中的l表示输出数据为长整型数据。(2)输出字符和字符串格式控制符%m.ns中的m、n是正整数,m为指定的输出字段的宽度,n是从字符串中截取字符的个数,负号表示左对齐,缺省为右对齐。3.2顺序结构的基本语句3.2.2格式输出函数printf()2.格式说明符(3)输出实型数据格式控制符%m.nf中的m、n是正整数,m为指定的输出字段的宽度,n是小数的位数,负号表示左对齐,缺省为右对齐。(4)转义字符的输出转义字符就是以“\”开头的字符序列。例如,语句printf("\nhelloworld");中的‘\n’就是转义字符,其作用是在输出时产生一个“换行”操作。“\n”换行符还可以插入到所需要的地方,来控制屏幕输出格式。2.格式说明符2.格式说明符【例3.2】输出整型、长整型、无符号整型数据。#include<stdio.h>intmain(){inty=20;longa=1024L;unsignedb=54321;printf("%d,%ld,%u\n",y,a,b);//以十进制形式按数据实际长度输出y,a,b值printf("%8d,%8ld,%8u\n",y,a,b);//以十进制形式按8列宽输出y,a,b值,右对齐printf("%-8d,%-8ld,%-8u\n",y,a,b);//以十进制形式按8列宽输出y,a,b值,左对齐return0;}运行结果如下:
20,1024,54321┖┚┖┚┖┚┖┚┖┚┖┚20,┖┚┖┚┖┚┖┚1024,┖┚┖┚┖┚54321(其中“┖┚”表示空格,下同)20┖┚┖┚┖┚┖┚┖┚┖┚,1024┖┚┖┚┖┚┖┚,54321┖┚┖┚┖┚(1)输出整型、长整型、无符号整型数据格式控制符%md(或%-md)中的m是一正整数,m为指定的输出字段的宽度,补空右(左)对齐;%ld(或%-ld)中的l表示输出数据为长整型数据,补空右(左)对齐。2.格式说明符【例3.4】输出实型数据。#include<stdio.h>intmain(){doublex;x=1234.56789;printf("x=%f\n",x);//以小数形式输出实数,小数位数为6printf("x=%10.2f\n",x);//数据共占10列,其中小数占2列,右对齐printf("x=%-10.2f\n",x);//数据共占10列,其中小数占2列,左对齐printf("x=%e\n",x); //以指数形式输出实数printf("x=%10.2e\n",x);//占10列,数值部分2位小数,右对齐,位数不够左补空格printf("x=%-10.2e\n",x);//占10列,数值部分2位小数,左对齐,位数不够右补空格return0;}(3)输出实型数据格式控制符%m.nf(或%-m.nf)中的m、n是正整数,m为指定的输出字段的宽度,n是小数的位数,且右(或左)对齐。运行结果如下:
x=1234.567890x=┖┚┖┚┖┚1234.57x=1234.57┖┚┖┚┖┚x=1.234568e+003x=┖┚1.23e+003x=1.23e+003┖┚2.格式说明符【例3.5】转义字符输出。#include<stdio.h>intmain(){ chara,b,c;a='n’;b='e’;c='\167';//八进制数167代表的字符wprintf("%c%c%c\n",a,b,c);//以字符格式输出printf("%c\t%c\t%c\n",a,b,c);//每输出一个字符跳到下一输出区printf("%c\n%c\n%c\n",a,b,c);//每输出一个字符后换行return0;}(4)转义字符的输出转义字符就是以“\”开头的字符序列。例如,语句printf("\nhelloworld");中的‘\n’就是转义字符,其作用是在输出时产生一个“换行”操作。“\n”换行符还可以插入到所需要的地方,来控制屏幕输出格式。运行结果如下:
newn┖┚┖┚┖┚┖┚┖┚┖┚┖┚e┖┚┖┚┖┚┖┚┖┚┖┚┖┚wnew3.2顺序结构的基本语句3.2.3格式输入函数scanf()1.scanf()函数的一般形式格式:scanf(格式控制,变量地址列表);功能:从指定的输入设备(默认为键盘),按指定的格式读入数据,并将读入的数据赋给变量地址列表中的相应变量。说明(1)“格式控制”的含义同printf()函数;(2)“变量地址列表”是以逗号相隔的变量,且必须带地址符&,不能是常量,也不能是表达式。3.2.3格式输入函数scanf()1.scanf()函数的一般形式格式:scanf(格式控制,变量地址列表);功能:从指定的输入设备(默认为键盘),按指定的格式读入数据,并将读入的数据赋给变量地址列表中的相应变量。2.格式说明符scanf()函数中的格式说明符的使用与printf()函数类似,必须用%开头后面跟一个字母(也可以在其中间增加附加字符),它规定了输入项对应的输入数据格式。同样格式说明符要在个数和类型上与输入项相匹配。3.2.3格式输入函数scanf()3.2.3格式输入函数scanf()(1)用scanf()函数输入多个数值或多个字符串时,在两个数据之间可以用一个(或多个)空格、换行符(按Enter键产生换行符)或Tab符(按Tab键产生Tab符)作分隔。【例3.6】用scanf()函数输入多个数值数据。#include<stdio.h>intmain(){inta,b;printf("请输入2个整数:");scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);return0;}运行结果如下:请输入2个整数:3┖┚4↙(回车)a=3,b=43.2顺序结构的基本语句3.2.4字符输出函数putchar()格式:putchar(ch);功能:通过标准输出设备(显示器)输出一个字符。说明(1)ch可以是字符常量、字符变量或整型变量,当ch是字符型数据时,输出的是字符本身;当ch是整型数据时,输出的是整型数据的ASCII码对应的字符。(2)ch也可以是转义字符,以控制一个动作。例如:putchar('B'); //输出字符Bputchar(65); //输出ASCII码值65对应的字符,即字符Aputchar('\n'); //换行3.2顺序结构的基本语句3.2.5字符输入函数getchar()格式:getchar();功能:从键盘上接收输入的一个字符。返回一个整数,即输入字符的ASCII码值。3.3综合应用案例3-1字符的魔法变幻
【问题描述】
小写字符刹间变成大写字符,你信吗?在C语言中是区分大小写的,利用ASCII码中大写字符和小写字符之间的差值是32的特性,可实现大小写字符间的互相转换。【算法设计】从ASCII码表中得知,大写字母的ASCII码和小写字母的ASCII码值相差32,而C语言允许字符型数据和整型数据混合运算,因此,一个小写字母减去32,即得到相应的大写字母。案例3-1字符的魔法变幻参考代码如下:#include<stdio.h>intmain(){charch1,ch2;ch1=getchar();ch2=ch1-32;
printf("\nletter:%c,ASCII=%d",ch1,ch1);printf("\nletter:%c,ASCII=%d",ch2,ch2);
return0;}运行结果如下:a↙(回车)letter:a,ASCII=97letter:A,ASCII=65案例3-2求各位数字【问题描述】任意输入一个3位整数,求它的个位、十位和百位数字,并反向输出这个3位数。【算法设计】利用整数除法“/”和取模“%”两种算术运算的特性,两整数相除商为整数,小数部分舍去;整数x对10取模运算(x%10),其值为个位数字。假设xyz是一个3位整数,要求分别求出x、y、z,然后重构一个新的三位数zyx。(1)两个整数进行除运算时,运算结果为整数(舍去小数部分),于是有:xyz/100=x;//百位上的数字x(2)先提取后两位数yz,再提取十位上的数字y,即:xyz%100=yz;yz/10=y;//十位上的数字y(3)利用取余运算符“%”,提取个位上数字z,即:xyz%10=z //个位上数(4)由提取的各位数字x、y、z,重构一个三位数zyx,即:
z*100+y*10+x案例3-2求各位数字参考代码如下:#include<stdio.h>intmain(){ intn,x,y,z; printf("请输入一个三位正整数:"); scanf("%d",&n); x=n/100;//①提取百位数字
y=(n%100)/10; //②提取十位数字
z=n%10; //③提取个位数字
printf("%d,%d,%d\n",x,y,z);//输出各位数字
intk;k=z*100+y*10+x; //④重构一个新数
printf("%d\n",k);//输出这个重构的3位数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蛋糕店裱花师告知书
- 2026年消防队安全训练方案及流程
- 苏教版六年级美术上册教案
- 2026年中介公司设计案例分析
- 2026岗位任职面试题及答案大全
- 私人住房出租合同合集7篇
- 2026公关运营面试题及答案
- 中考生物复习生物的多样性专项细菌的基本形态和结构特点题选汇编含答案
- 2026桂平志愿者面试题及答案
- 苏教版科学六年级上册《生物的变异》教学设计1
- 2026年高铁广告媒体创新实践与市场洞察报告
- 2026年新版甘肃辅警考试题库必考题(含答案解析)
- 2026年小学语文教师高频面试题包含详细解答
- SYT 6649-2025《油气管道管体缺陷修复技术规范》
- 2025-2026学年浙江省嘉兴市七年级(下)期末数学试卷(含答案)
- 气瓶委托管理合同
- 2026年秋季新教材统编版九年级上册道德与法治全册知识点背诵提纲精简版
- 2026年中式烹调师高级理论知识试题库及答案
- 2026-2030中国溴化钠市场运行状况与未来供需格局分析研究报告
- 中国经皮气管切开术操作指南2025版
- 《全国病媒生物监测技术指南(2025年)》
评论
0/150
提交评论