![C语言程序设计(第三版)课件:学生成绩输入输出界面设计-顺序结构程序设计_第1页](http://file4.renrendoc.com/view7/M00/34/2A/wKhkGWcA6aGAO_QRAAMugoe7Q-k607.jpg)
![C语言程序设计(第三版)课件:学生成绩输入输出界面设计-顺序结构程序设计_第2页](http://file4.renrendoc.com/view7/M00/34/2A/wKhkGWcA6aGAO_QRAAMugoe7Q-k6072.jpg)
![C语言程序设计(第三版)课件:学生成绩输入输出界面设计-顺序结构程序设计_第3页](http://file4.renrendoc.com/view7/M00/34/2A/wKhkGWcA6aGAO_QRAAMugoe7Q-k6073.jpg)
![C语言程序设计(第三版)课件:学生成绩输入输出界面设计-顺序结构程序设计_第4页](http://file4.renrendoc.com/view7/M00/34/2A/wKhkGWcA6aGAO_QRAAMugoe7Q-k6074.jpg)
![C语言程序设计(第三版)课件:学生成绩输入输出界面设计-顺序结构程序设计_第5页](http://file4.renrendoc.com/view7/M00/34/2A/wKhkGWcA6aGAO_QRAAMugoe7Q-k6075.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生成绩输入输出界面设计—顺序结构程序设计
知识目标:理解C语句的概念与定义方法。理解输入输出库函数的使用方法。理解顺序程序结构流程控制。能力目标:能用库函数对数据进行正确的输入输出。能完成顺序程序结构的设计。设计“班级学生成绩管理系统”封面和主、子菜单。能完成顺序执行封面和主、子菜单程序设计。工作任务3.1任务1用输入输出函数初步设计项目封面与菜单3.2任务2项目封面及菜单的顺序执行设计3.1任务1用输入输出函数初步设计
项目封面与菜单
任务目标:能设计“班级学生成绩管理系统”封面和主、子菜单。3.1.1任务情境菜单是一种特殊的用户界面。用户通过使用菜单可以很方便地选择应用系统的各种功能,控制各种功能模块的运行。“班级学生成绩管理系统”封面和主、子菜单的设计,采用了C语言的标准输出/输入函数(printf()/scanf()函数)分别来实现的。项目封面效果图3.1任务1用输入输出函数初步设计项目封面与菜单
项目主菜单效果图
项目编辑子菜单效果图项目显示子菜单效果图
项目计算子菜单效果图
3.1任务1用输入输出函数初步设计项目封面与菜单。项目排序子菜单效果图
3.1任务1用输入输出函数初步设计项目封面与菜单3.1.2知识必备C语句概述1.从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支结构、循环结构。这三种基本结构可以组成所有的各种复杂程序。C语言提供了多种语句来实现这些程序结构。本章介绍这些基本语句及其在顺序结构中的应用,使读者对C程序有一个初步的认识,为后面各章的学习打下基础。C语句可分为以下五类:表达式语句:表达式语句由表达式加上分号“;”组成。其一般形式为:表达式;执行表达式语句就是计算表达式的值例如:
x=y+z;赋值语句;
y+z;加法运算语句,但计算结果不能保留,无实际意义;
i++;自增1语句,i值增1。3.1任务1用输入输出函数初步设计项目封面与菜单2.函数调用语句:由函数名、实际参数加上分号“;”组成。其一般形式为:函数名(实际参数表);执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值(在后面函数中再详细介绍)。例如:printf(“CProgram”);调用库函数,输出字符串3.控制语句:控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。可分成以下三类:①条件判断语句:if语句、switch语句;②循环执行语句:dowhile语句、while语句、for语句;③转向语句:break语句、goto语句、continue语句、return语句。复合语句:把多个语句用括号{}括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句3.1任务1用输入输出函数初步设计项目封面与菜单4.复合语句:把多个语句用括号{}括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。例如:
{x=y+z;a=b+c;printf(“%d%d”,x,a);
}是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。3.1任务1用输入输出函数初步设计项目封面与菜单5.空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如
while(getchar()!='\n');本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。赋值语句赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:变量=表达式;赋值语句的功能和特点都与赋值表达式相同。它是程序中使用最多的语句之一在赋值语句的使用中需要注意以下几点:3.1任务1用输入输出函数初步设计项目封面与菜单2.由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式变量=(变量=表达式);是成立的,从而形成嵌套的情形。其展开之后的一般形式为:变量=变量=…=表达式;例如:
a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于:
e=5;d=e;c=d;b=c;a=b;3.1任务1用输入输出函数初步设计项目封面与菜单2.注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。例如:
inta=5,b,c;例如:
inta=5,b,c;在变量说明中,不允许连续给多个变量赋初值。如下述说明是错误的:
inta=b=c=5必须写为
inta=5,b=5,c=5;而赋值语句允许连续赋值。注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。。3.1任务1用输入输出函数初步设计项目封面与菜单下述语句是合法的:
if((x=y+5)>0)z=x;语句的功能是,若表达式x=y+5大于0则z=x。下述语句是非法的:
if((x=y+5;)>0)z=x;因为x=y+5;是语句,不能出现在表达式中。3.printf函数(格式输出函数)【例3.1】引例:用printf()函数输出由“*”组成的如下图形。
****************#include<stdio.h>main(){printf(〝*\n〝);printf(〝***\n〝);printf(〝*****\n〝);printf(〝*******\n〝);3.1任务1用输入输出函数初步设计项目封面与菜单代码贴士在程序中,printf()函数是完成输出功能的,printf()函数中双引号内的字符串按原样输出,“\n”是换行符。程序的第04行~07行,分别用printf()函数输出4行不同个数的“*”。由输出的4行“*”组成一个三角形图形。printf函数的作用是向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。(1)printf函数格式格式:printf(“格式字符串”[,输出项表])3.1任务1用输入输出函数初步设计项目封面与菜单如:printf(“%d\n”,t);①格式字符串。“格式字符串”也称“转换控制字符串”,是用双引号括起来的字符串,可以包含三种字符串:·格式说明符。由“%”和格式字符组成,如%d,%f等,它的作用是将输出的数据转换成为指定的格式输出。格式说明总是由“%”字符开始。·转义字符。例如:例3.1中printf()函数中的‘\n’就是转义字符,输出时产生一个“回车换行”操作。·普通字符。除格式说明符和转义字符之外的其他字符。格式字符串中的普通字符,输出时按原样输出。如例题3.1printf(〝*\n〝)函数中双引号内的空格和“*”就是普通字符。3.1任务1用输入输出函数初步设计项目封面与菜单②输出项表输出项表是可选的。如果要输出的数据不止1个,相邻2个之间用逗号分开。输出表项可以是常量、变量和表达式。下面程序中的printf()函数都是合法的:【例3.2】程序如下#include<stdio.h>main(){inta;a=2;printf("Iamastudent.\n"); printf("%d\n",3+2); printf("a=%db=%d\n",a,a+3);3.1任务1用输入输出函数初步设计项目封面与菜单代码贴士在程序中,第5行"Iamastudent."字符串是普通字符原样输出;第6行先计算表达式“3+2”的值,然后再输出表达式的值;第7行中的“a=”和“b=”是普通字符原样输出,“%d”是控制输出项格式的,“\n”是转义字符,表示换行。程序运行结果如下:3.1任务1用输入输出函数初步设计项目封面与菜单
必须强调:“格式字符串”中的格式说明符,必须与“输出项表”中输出项的数据类型一致,个数相同,否则会引起输出错误。(2)格式说明符输出不同类型的数据,要使用不同的类型转换字符。类型转换字符d。按十进制整型数据的实际长度输出。如【例3.2】:printf("%d\n",3+2); ②类型转换字符c。用来输出一个字符。3.1任务1用输入输出函数初步设计项目封面与菜单【例3.3】类型转换字符c的使用。程序代码:#include<stdio.h>main(){charc='A';inti=65;printf("c=%c,%d\n",c,c);printf("i=%d,%c",i,i);}3.1任务1用输入输出函数初步设计项目封面与菜单
代码贴士在05行中,字符型变量c可以按整型输出;在06行中,整型变量i可以按字符型输出。程序运行结果
在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。将整数用字
3.1任务1用输入输出函数初步设计项目封面与菜单符形式输出时,系统首先求该数与256的余数,然后将余数作为ASCII码,转换成相应的字符输出。)
③类型转换字符s。用来输出一个字符串。如:printf("%s","CHINA");输出字符串“CHINA”(不包括双引号)。④类型转换字符f。以小数形式输出单精度和双精度实数3.1任务1用输入输出函数初步设计项目封面与菜单例3.4】类型转换字符f的使用。程序代码:#include<stdio.h>voidmain(){floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf("%f\n",f);printf("d1+d2=%f\n",d1+d2);3.1任务1用输入输出函数初步设计项目封面与菜单程序运行结果:123.456001d1+d2=3333333333333.333010f格式符的用法:%f,不指定字符宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数,但不要认为全部数字都是有效数字。本例程序的输出结果中,数据123.456001和3333333333333.333010中的001和010都是无意义的,因为它们超出了有效数字的范围(单精度的有效范围为7位数字,双精度的有效数字一般为16位)。)3.1任务1用输入输出函数初步设计项目封面与菜单⑤类型转换字符e。以指数形式输出单精度和双精度实数。对于实数,也可使用格式符%e,以规范化地指数形式输出:整数部分占一位,小数点占一位,尾数中的小数部分占5位;指数部分占4位(如e-03),其中e占一位,指数符号占一位,指数占2位,共计11位。例如:doublex=123.456;printf(“%e”,x);TC2.0的输出结果为:1.23456e+02(不同系统输出结果略有差异,如VC输出结果为1.234560e+002)。3.1任务1用输入输出函数初步设计项目封面与菜单4.scanf函数(格式输入函数)scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数的一般形式scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为:scanf(“格式控制字符串”,地址表列);其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。3.1任务1用输入输出函数初步设计项目封面与菜单例如:&a,&b分别表示变量a和变量b的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。变量的地址和变量值的关系如下:在赋值表达式中给变量赋值,如:
a=567
则,a为变量名,567是变量的值,&a是变量a的地址。但在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。3.1任务1用输入输出函数初步设计项目封面与菜单【例3.5】#include<stdio.h>main(){inta,b,c;printf("inputa,b,c\n");scanf("%d%d%d",&a,&b,&c);printf(“a=%d,b=%d,c=%d”,a,b,c);。
在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入789后按下回车键,此时,系统又将返回C屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔,因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。如:
3.1任务1用输入输出函数初步设计项目封面与菜单
789↙或7↙
8↙
9↙注意:本章为了让读者理解上不发生错误,凡是输入的数据一律加下划线与输出数据区别开,其中符号↙代表回车换行的意思。格式说明①如果相邻两个格式指示符之间,不指定分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分开,或者用Tab键分开,或者输入一个数据后,按回车,然后再输入下一个数据。3.1任务1用输入输出函数初步设计项目封面与菜单例如,scanf("%d%d",&num1,&num2);假设将12输入给num1,36输入给num2,则正确的输入操作为:1236↙或者:12↙
36↙②“格式字符串”中出现的普通字符(包括转义字符),务必原样输入。例如,scanf("%d,%d",&num1,&num2);在两个%d之间有一个逗号,是普通字符,正确的输入操作为:12,36↙为改善人机交互,同时简化输入操作,在设计输入操作时,一般先用printf函数输出一个提示信息,再用scanf函数进行数据输入。例如:将scanf("num1=%d,num2=%d\n",&num1,&num2);改为:printf("num1=");scanf("%d",&num1);printf("num2=");scanf("%d",&num2);可以改善用户界面,做到界面友好,提高程序的可操作性3.1任务1用输入输出函数初步设计项目封面与菜单③输入数据时,遇到以下情况,系统认为该数据结束:遇到空格,或者回车键,或者Tab键。遇到输入域宽度结束。例如“%3d”,只取3列。遇到非法输入。例如,在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0-9、小数点和正负号构成)。④使用格式说明符“%c”输入单个字符时,空格和转义字符均作为有效字符被接受。例如,scanf("%c%c%c",&ch1,&ch2,&ch3);printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);假设输入:A□B□C↙,则系统将字母‘A’赋值给ch1,空格‘□’赋值给ch2,字母‘B’赋值给ch3。正确的输入方法应当是ABC↙
。3.1任务1用输入输出函数初步设计项目封面与菜单3.1.3任务实施项目封面源程序#include<stdio.h>#include<stdlib.h>voidmain()//项目封面{system("cls");//执行DOS清屏命令函数
printf("\n\n\n");printf("\t\t班级学生成绩管理系统\n\n");printf("\t\t版本号:1.0\n\n");printf("\n\n\n");printf("\t\t2010年3月\n\n");printf("\t\tTim软件工作室\n");3.1任务1用输入输出函数初步设计项目封面与菜单2.项目主菜单源程序#include<stdio.h>#include<stdlib.h>voidmain()//项目主菜单{intn;system("cls");printf("\n\n\n");printf("|*****学生成绩管理系统*****|\n");printf("|....................................|\n");printf("|请选择菜单序号(0~6)|\n");printf("|....................................|\n");printf("|1----打开文件|\n");printf("|2----保存文件|\n");printf("|3----编辑数据|\n");printf("|4----显示数据|\n");printf("|5----数据计算|\n");printf("|6----程序说明|\n");printf("|0----退出系统|\n");printf("|....................................|\n");printf("\t\t请选择序号:");scanf("%d",&n);printf("您选择了第%d项!\n",n);}3.1任务1用输入输出函数初步设计项目封面与菜单3.项目编辑子菜单源程序#include<stdio.h>#include<stdlib.h>voidmain()//项目编辑子菜单
intn;system("cls");printf("\n\n\n");printf("|*******编辑子菜单******|\n");printf("|....................................|\n");printf("|请选择菜单序号(0~3)|\n");printf("|....................................|\n");printf("|1----增加记录|\n");printf("|2----删除记录|\n");printf("|3----修改记录|\n");printf("|0----返回上级菜单|\n");printf("|....................................|\n");printf("\t\t请选择序号:"); scanf("%d",&n);printf("您选择了第%d项!\n",n);
3.1任务1用输入输出函数初步设计项目封面与菜单4.项目显示子菜单源程序#include<stdio.h>#include<stdlib.h>voidmain()//项目显示子菜单{intn;system("cls");printf("\n\n\n");printf("|*******显示子菜单******|\n");printf("|....................................|\n");printf("|请选择菜单序号(0~4)|\n");printf("|....................................|\n");printf("|1----查看选定记录|\n");printf("|2----显示全部记录|\n");printf("|3----显示排序记录|\n");printf("|4----显示不及格记录|\n");printf("|0----返回上级菜单|\n");printf("|....................................|\n");printf("\t\t请选择序号:");scanf("%d",&n);printf("您选择了第%d项!\n",n);}3.1任务1用输入输出函数初步设计项目封面与菜单5.项目计算子菜单源程序#include<stdio.h>#include<stdlib.h>voidmain()//项目计算子菜单{intn;system("cls");printf("\n\n\n");printf("|*******计算子菜单******|\n");printf("|....................................|\n");printf("|请选择菜单序号(0~3)|\n");printf("|....................................|\n");printf("|1----计算总成绩和平均成绩|\n");printf("|2----计算最高分|\n");printf("|3----计算最低分|\n");printf("|0----返回上级菜单|\n");printf("|....................................|\n");printf("\t\t请选择序号:");scanf("%d",&n);printf("您选择了第%d项!\n",n);3.1任务1用输入输出函数初步设计项目封面与菜单6.项目排序子菜单源程序#include<stdio.h>#include<stdlib.h>voidmain()//项目排序子菜单{intn;system("cls");printf("\n\n\n");printf("|*******排序子菜单******|\n");printf("|....................................|\n");printf("|请选择菜单序号(0~2)|\n");printf("|....................................|\n");printf("|1----按升序排序|\n");printf("|2----按降序排序|\n");printf("|0----返回上级菜单|\n");printf("|....................................|\n");printf("\t\t请选择序号:");scanf("%d",&n);printf("您选择了第%d项!\n",n)
3.1任务1用输入输出函数初步设计项目封面与菜单3.1.4知识扩展1.单个字符输入输出函数用scanf()函数和printf()函数输入输出数据时,在格式字符串中加上不同的格式说明符,可以输入输出各种类型的数据。但putchar函数和getchar函数只能输出输入一个字符型数据。(1)putchar函数(字符输出函数)putchar函数是字符输出函数,其功能是在显示器上输出单个字符。其一般形式为:putchar(字符变量)例如:
putchar('A');(输出大写字母A)
putchar(x);(输出字符变量x的值)putchar(‘\101’);(也是输出字符A)putchar('\n');(换行)对控制字符则执行控制功能,不在屏幕上显示。使用本函数前必须要用文件包含命令:#include<stdio.h>或#include“stdio.h”3.1任务1用输入输出函数初步设计项目封面与菜单【例3.6】输出单个字符。#include<stdio.h>main(){chara='B',b='o',c='k';putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');putchar(a);putchar(b);putchar('\n');putchar(b);putchar(c);}(2)getchar函数(键盘输入函数)getchar函数的功能是从键盘上输入一个字符。其一般形式为:
getchar();通常把输入的字符赋予一个字符变量,构成赋值语句,如:
charc;c=getchar();3.1任务1用输入输出函数初步设计项目封面与菜单【例3.7】输入单个字符。#include<stdio.h>voidmain(){charc;printf("inputacharacter\n");c=getchar();putchar(c);}使用getchar函数还应注意几个问题:①getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。②使用本函数前必须包含文件“stdio.h”。③程序最后两行可用下面两行的任意一行代替:putchar(getchar());printf(“%c”,getchar());3.1任务1用输入输出函数初步设计项目封面与菜单2.数据输入输出的概念及在C语言中的实现(1)所谓输入输出是以计算机为主体而言的。(2)本章介绍的是向标准输出设备显示器输出数据的语句。(3)在C语言中,所有的数据输入/输出都是由库函数完成的。因此都是函数语句。(4)在使用C语言库函数时,要用预编译命令#include将有关“头文件”包括到源文件中。使用标准输入输出库函数时要用到“stdio.h”文件,因此源文件开头应有以下预编译命令:#include<stdio.h>或#include”stdio.h”,stdio是standardinput&outupt的意思。3.1任务1用输入输出函数初步设计项目封面与菜单较复杂的输入输出格式控制在知识必备部分讨论了简单的格式输入输出,能满足最基本的要求,但是用户有时会对输出数据的格式有较高的要求,譬如指定输出数据的宽度、小数位数、上下行数据按小数点对齐、用八进制数或十六进制数输出等。这就需要用到较复杂的输入输出格式控制。本环节介绍的内容都是一些具体的规定,可以不在课堂上逐一讲授,而由学生自学,尤其是通过上机实践去掌握这些内容。读者不必死记,在用到时查一下,会用即可。输出数据格式控制除了必备知识里所介绍的基本的格式控制外,还可以用下面的一些格式符和附加字符。①%md。用来指定输出数据的宽度,m是指定的宽度,如果数据实际的位数小于m,则左端补以空格,若大于m,则按实际位数输出,例如:,printf(“%4d,%4d”,a,b);若a=123,b=12345,则输出结果为□123,123453.1任务1用输入输出函数初步设计项目封面与菜单输出a时占4列,数值本身3列,左侧补一空格。指定b也是4列,但b的值为5位,故按5列输出,这是为了保证数据的正确。
②%1d。对于int型数据占2字节的系统,在输出长整型数据时要在格式字符d前面加一个英文字母l,例如:longa=135790;/*定义a为长整型变量*/因为%d只适用于范围为-32768~32767的整型数据,超过此范围的整数,应该用%1d输出。一个int型数据可以用%d或%1d格式输出。对于长整型数据也可以指定字段宽度,如将上面printf函数中的“%1d”改为“%81d”,则输出为
□□l35790
如果用的是VisualC++6.0,由于int型和long型数据都分配4个字节,因此用%d可以输出int型和long型数据,不必要用%1d。③%o。以八进制整数形式输出。由于内存中八进制输出的数值是不带符号的,即将符号位也一起作为八进制数的一部分输出。请看下面的例子:3.1任务1用输入输出函数初步设计项目封面与菜单inta=-1;printf(“%d,%o”,a,a);输出结果:-1,37777777777因为-1在内存中的存储情况如下图所示:所以按十进制输出为-1,八进制输入37777777777。④%x。以十六进制形式输出整数。由于符号位也作为了十六进制数的一部分,同样不会出现负的十六进制数,例如:inta=-1;printf(“%d,%x”,a,a);输出结果为:-1,ffffffff因为,二进制转变成十六进制示意图3.1任务1用输入输出函数初步设计项目封面与菜单所以,按十进制输出为-1,十六进制输出为ffffffff。⑤%u。以无符号形式输出数据,以十进制形式输出unsigned型数据。例如:inta=-1;printf(“%u”,a);输出结果为:4294967295请读者自己分析。⑥%mc。用来指定输出字符数据的宽度m,如果有c='a';Printf("%3c",c);
则输出“□□a”,即c变量输出占3列,前2列补空格。3.1任务1用输入输出函数初步设计项目封面与菜单⑦%ms。指定输出的字符串占m列。如果字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左端补空格。
%-ms,如果串长小于m,则在m列范围内,字符串向左靠,右端补空格。
%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左端补空格。
%-m.ns,其中m,n含义同上,n个字符输出在m列范围的左侧,右端补空格。如果n>m,则m自动取n值,即保证n个字符正常输出。【例3.8】类型转换字符s的使用。程序代码:#include<stdio.h>voidmain(){printf("%s\n%5s\n%-10s\n","Internet","Internet","Internet");printf("%10.5s\n%-10.5s\n%3.5s\n","Internet","Internet","Internet");} 3.1任务1用输入输出函数初步设计项目封面与菜单程序运行结果:InternetInternetInternet□□□□□□□InterInter□□□□□Inter注意:系统输出字符和字符串时,不输出单引号或双引号。3.1任务1用输入输出函数初步设计项目封面与菜单⑧%m.nf。指定输出的实数共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。【例3.9】类型转换字符f的使用。程序代码:#include<stdio.h>voidmain(){floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf("%f\n%12f\n%12.2f\n%-12.2f\n%.2f\n",f,f,f,f,f);printf("d1+d2=%f\n",d1+d2);}3.1任务1用输入输出函数初步设计项目封面与菜单程序运行结果:123.456001□□123.456001□□□□□□123.46123.46□□□□□□123.46d1+d2=3333333333333.333010%f,不指定字符宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数,但不要认为全部数字都是有效数字。本例程序的输出结果中,数据123.456001和3333333333333.333010中的001和010都是无意义的,因为它们超出了有效数字的范围(单精度的有效范围为7位数字,双精度的有效数字一般为16位)。3.1任务1用输入输出函数初步设计项目封面与菜单⑨%m.ne和%-m.ne。m,n和“-”字符的含义与前相同。此处n指拟输出的数据的小数部分(又称尾数)的小数位数。若f=123.456,则:printf("%e□□%10e□□%10.2e□□%.2e□□%—10.2e",f,f,f,f,f);输出如下:1.234560e+002□□1.234560e+002□□□1.23e+002□□l.23e+002□□l.23e+002□第2个输出项按%10e输出,即只指定了m=10,未指定n。凡未指定n,自动使n=6,3.1任务1用输入输出函数初步设计项目封面与菜单因此整个数据长13列,超过给定的10列,乃突破10列的限制,按实际长度输出。第3个数据共占10列,小数部分占2列。第4个数据按“%.2e”格式输出,只指定n=2,未指定m,自动使m等于数据应占的长度,今为9列。第5个数据应占10列,数值只有9列,由于是“%-10.2e”,数值向左靠,右端补一个空格。
⑩%g。也可使用格式符%g,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。例如:floatf=123.456;printf(“%f\n%e\n%g\n”,f,f,f);输出结果为:123.4560011.23456e+002123.456以上介绍了各种格式符,归纳如表3-l所示。3.1任务1用输入输出函数初步设计项目封面与菜单
表3-1printf格式字符
格式字符说明d以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x,X以十六进制形式输出无符号整数(不输出前缀Ox)u以十进制形式输出无符号整数f以小数形式输出单、双精度实数e,E以指数形式输出单、双精度实数g,G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串在格式说明中,在%和上述格式字符间可以插入以下几种附加符号(又称修饰符),见表3-2。表3-2printf的附加格式说明字符字符说明1m(代表一个正整数)n(代表一个正整数)用于长整型整数,可加在格式符d,o,x,u前面数据最小宽度对实数,表示输出n位小数;对字符串,表示截取的字符个数输出的数字或字符在域内向左靠注意:如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,如:printf(”%f%%”,1.0/3);输出:0.333333%3.1任务1用输入输出函数初步设计项目封面与菜单2)输入数据格式控制与printf函数中的格式说明相似,以%开始,以一个格式字符结束,中间可以插入附加字符。表3-3列出scanf用到的格式字符。表3-4列出scanf可以用的附加说明字符(修饰符)。表3-3scanf格式字符
格式字符说明d,iuox,Xcsfe,E,g,G用来输入有符号的十进制整数用来输入无符号的十进制整数用来输入无符号的八进制整数用来输入无符号的十六进制整数(大小写作用相同)用来输入单个字符用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束.字符串以串结束标志'\0',作为其最后一个字符用来输入实数,可以用小数形式或指数形式输入与f作用相同,e与f,g可以互相替换(大小写的作用相同)3.1任务1用输入输出函数初步设计项目封面与菜单
表3-4scanf格式字符
字符说明lh域宽*用于输入长整型数据(可用%ld,%lo,%lx,%lu)以及double型数据(用%lf或%le)用于输入短整型数据(可用%hd,%ho,%hx)指定输入数据所占宽度(列数),域宽应为正整数表示本输入项在读人后不赋给相应的变量说明:①对unsigned型变量所需的数据,可以用%u,%d或%o,%x格式输入。②可以指定输入数据所占的列数,系统自动按它截取所需数据:例如:scanf("%3d%3d",&a,ab);输入:123456↙系统自动将123赋给变量a,456赋给变量b。此方法也可用于字符型:scanf("%3c",&ch);如果从键盘连续输入3个字符“abc”,由于ch只能容纳一个字符,系统就把第一个字符’a’赋给字符变量ch。3.1任务1用输入输出函数初步设计项目封面与菜单③如果在%后有一个“*”附加说明符,表示跳过它指定的列数。例如:scanf("%2d%*3d%2d",&a,&b);如果输入如下信息:1234567↙系统会将12赋给整型变量a,%*3d表示读入3位整数但不赋给任何变量。然后再读入
2位整数67赋给整型变量b。也就是说第2个数据"345”被跳过。在利用现成的一批数据时,有时不需要其中某些数据,可用此法“跳过”它们。④输人数据时不能规定精度,例如:scanf("%7.2f",&a);是不合法的,不能企图用这样的scanf函数输入以下数据而使a的值为12345.67。1234567↙3.1任务1用输入输出函数初步设计项目封面与菜单任务小结
学会书写C语言中C语句是学习编写C程序的基础,C语句有几种不同的类型,初学者难以掌握的是复合语句的书写方法。C语言中的输入输出数据方法,是借助于输入输出库函数来实现的,这也是初步学习C函数调用方法。因此,一定要注意输入输出函数的格式,参数类型与个数。要求能够理解格式化输入输出函数的格式控制符等相关概念与应用方法,特别要注意字符类型的数据与其它类型数据混合输入时的特点。3.2任务2项目封面及菜单的顺序执行设计任务目标:能完成顺序执行封面和主、子菜单程序的设计
任务情境该任务将封面和主、子菜单连接起来,实现封面、菜单的顺序执行。由于,一个程序只有一个主函数,因此,我们将封面、主菜单、编辑子菜单、查看子菜单、计算子菜单、排序子菜单程序中的主函数分别改名为StuCover、MainMenu、EditMenu、DispMenu、CompMenu、SortMenu,并将这些函数复制到一个C程序,另外,再建立一个主函数,分别执行这些函数。要注意的是,主函数是放在所有其他函数后面的,能不能将主函数放到所有函数前面呢?或者主函数的位置是否可以任意呢?回答是肯定的,关于如何实现这一点我们将在后续内容中讲解。3.2任务2项目封面及菜单的顺序执行设计知识必备
1.顺序结构程序设计如果程序是按照语句的书写顺序执行的,每条语句都被执行到,而且只被执行一次,这样的程序结构叫顺序结构,很多情况下,程序是顺序执行的,它是程序结构中较为简单的一种。【例3.10】输入三角形的三边长,求三角形面积。已知三角形的三边长a,b,c,则该三角形的面积公式为:,其中s=(a+b+c)/2源程序如下:#include<stdio.h>#include<math.h>main(){floata,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);printf(“area=%7.2f\n”,area);3.2任务2项目封面及菜单的顺序执行设计⑨%m.ne和%-m.ne。m,n和“-”字符的含义与前相同。此处n指拟输出的数据的小数部分(又称尾数)的小数位数。若f=123.456,则:printf("%e□□%10e□□%10.2e□□%.2e□□%—10.2e",f,f,f,f,f);输出如下:1.234560e+002□□1.234560e+002□□□1.23e+002□□l.23e+002□□l.23e+002□第2个输出项按%10e输出,即只指定了m=10,未指定n。凡未指定n,自动使n=6,3.2任务2项目封面及菜单的顺序执行设计
代码贴士程序中第08行中sqrt()是求平方根的函数。由于要调用数学函数库中的函数,必须在程序的开头加一条#include命令,把头文件“math.h”包含到程序中来。请注意,以后凡在程序中要用到数学函数库中的函数,都应当“包含”math.h开始输入a,b,c值计算周长s,面积area输出s,area值结束图3-83.2任务2项目封面及菜单的顺序执行设计【例3.11】求方程ax2+bx+c=0的实数根。a,b,c由键盘输入,a≠0且b2-4ac>0。程序代码:#include<stdio.h>#include<math.h>//使用求平方根函数sqrt(),必须包含math.h头文件voidmain(){floata,b,c,disc,x1,x2;printf("Inputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);/*输入方程的三个系数的值*/disc=b*b-4*a*c; /*求判别式的值赋给disc*/x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);}
3.2任务2项目封面及菜单的顺序执行设计代码贴士在输入a,b,c时,必须保证a≠0且b2-4ac>0。关于a=0且b2-4ac≤0情况将在下一章讨论。【例3.12】键盘输入一个小写字母,以大写字母形式输出该字母及对应的ASCII码。程序代码:0102030405060708091011#include"stdio.h"voidmain(){charc1,c2;printf("请输入小写字母:");c1=getchar();putchar(c1);printf(",%d\n",c1);c2=c1-32;/*将小写字母转换成对应的大写字母*/printf("%c,%d\n",c2,c2);}代码贴士由于小写字母与大写字母相差32。故小写字母减去32便是大写字母了。3.2任务2项目封面及菜单的顺序执行设计程序运行结果:
任务实施用户进入“学生成绩管理系统”中,首先呈现在用户面前的是软件的封面,接下来是主菜单,还可以看到开发者就软件使用等方面的说明。我们可以编制函数来实现这些不同的功能,然后,按照一定的次序呈现到用户面前。这里,我们用顺序结构来实现封面、菜单顺序显示,其目的是使学习者掌握顺序结构的实现方法,了解函数创建、调用过程,掌握主函数在执行过程与其他函数的区别。程序的显示顺序如图3-9所示:3.2任务2项目封面及菜单的顺序执行设计软件封面软件主菜单软件各种子菜单开始结束任务实施的程序代码如下:voidStuCover()//项目封面函数{system("cls");//执行DOS清屏命令函数printf("\n\n\n");printf("\t\t班级学生成绩管理系统\n\n");printf("\t\t版本号:1.0\n\n");printf("\n\n\n");printf("\t\t2010年3月\n\n");printf("\t\tTim软件工作室\n");}voidMainMenu()//项目主菜单函数{intn;system("cls");printf("\n\n\n");printf("|*****学生成绩管理系统*****|\n");printf("|....................................|\n");printf("|请选择菜单序号(0~6)|\n");printf("|....................................|\n");printf("|1----打开文件|\n");printf("|2----保存文件|\n");printf("|3----编辑数据|\n");printf("|4----显示数据|\n");printf("|5----数据计算|\n");printf("|6----程序说明|\n");printf("|0----退出系统|\n");printf("|....................................|\n");3.2任务2项目封面及菜单的顺序执行设计printf("\t\t请选择序号:");scanf("%d",&n);printf("您选择了第%d项!\n",n);}voidEditMenu()//项目编辑子菜单函数
intn;system("cls");printf("\n\n\n");printf("|*******编辑子菜单******|\n");printf("|............................
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国茶籽市场调查研究报告
- 2025年中国葡萄粮酸锌市场调查研究报告
- 2025年防敏修复霜项目可行性研究报告
- 2025年中国皮艇市场调查研究报告
- 2025年中国板材端面Ⅴ形槽涂布机市场调查研究报告
- 2025年电动搅拌机项目可行性研究报告
- 2025年方型油压缸项目可行性研究报告
- 2025年微孔过滤管项目可行性研究报告
- 2025年导电无基材胶带项目可行性研究报告
- 2025年单波峰焊机项目可行性研究报告
- 卖花生混声合唱简谱
- 【永辉超市公司员工招聘问题及优化(12000字论文)】
- 柴油加氢装置知识培训课件
- 汽油安全技术说明书(MSDS)
- 中国直销发展四个阶段解析
- 2024届浙江省宁波市镇海区镇海中学高一物理第一学期期末质量检测试题含解析
- 部编版语文四年级下册 教材解读
- 《一次函数与方程、不等式》说课稿
- 动火作业安全管理要求及控制措施
- 诗豪刘禹锡一生部编教材PPT
- 中国营养师培训教材1
评论
0/150
提交评论