您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 结构化程序设计基础 c语言
第三章结构化程序设计基础初步认识程序的三种基本结构掌握C语言的最基本语句理解如何使用基本输入输出函数了解并掌握程序的顺序结构学会用顺序结构解决问题程序可以分为三种基本结构:顺序结构:顺序结构是一种由一组顺序执行的程序块组成的结构。选择结构:选择结构是一种根据不同的条件,选择不同程序处理块的结构循环结构:循环结构是一种对某一处理块反复执行多次的结构。3.1语句C语言里,每一个程序都由语句组成,所以语句是C程序最基本的组成部分。语句必须有一个分号,C语言中最基本的语句有:表达式语句、函数调用语句、控制语句、复合语句和空语句。例如:printf(“HelloWorld!”);c=a+b;表达式语句表达式语句由表达式加上分号“;”组成。其一般形式如下:表达式;例如:a*b;a+b;是两个表达式语句。赋值语句变量名=表达式;例如:C=a+b;函数调用语句由函数名、实际参数和分号“;”组成。其一般形式如下:函数名(实际参数表);例如:printf(“HelloWorld!”);/*标准输出函数语句*/复合语句把多个语句用括号大括号({})括起来组成的一个语句即是复合语句。例如:{intx;x=y+z;printf(%d,x);}/*其中:复合语句内的各条语句都必须以分号“;”结尾;在结束括号“}”外不能加分号。*/空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。控制语句:C语言有9种控制语句,可分成以下三类:(1)条件判断语句:if语句switch语句(2)循环执行语句:dowhile语句while语句for语句(3)转向语句:break语句goto语句:此语句尽量少用,因为这不利结构化程序设计,滥用它会使程序流程无规律、可读性差。continue语句return语句3.2基本输入输出函数在C语言中,所有的数据输入/输出都是由库函数完成的。标准输入输出函数主要包括字符数据的输入输出函数getchar()和putchar(),格式化的输入输出函数scanf()和printf(),这些函数定义在头文件“stdio.h”中。#includestdio.hstdio是standardinputandoutput的缩写,包含了与标准输入/输出库函数有关的变量定义和宏定义。将该头文件包含到程序文件中。字符输出函数putchar()字符输出函数的一般形式如下:putchar(ch);其功能是向标准输出设备(即显示器)输出ch变量中的字符。例如:putchar(‘E’);表示结果将在屏幕上输出一个字符E。字符输入函数getchar()字符输入函数的一般形式如下:getchar();其功能是从键盘读取一个字符作为函数值。ch=getchar();表示从键盘读取一个字符并赋给字符变量ch格式化输出函数printf()其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。格式化的输出函数的一般形式如下:printf(“格式化字符串”,输出表列);其中:格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式;输出表列是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用“,”分开,且顺序一一对应,否则将会出现意想不到的错误。printf(“HelloWorld!”);printf(%c=%d,%c=%d\n,x,x,y,y);/*从最简单的学起*/#includestdio.hvoidmain(){printf(“HelloWorld!”);}运行结果:HelloWorld!调用printf()时可以省略#include命令!–格式字符•d格式符:输出十进制整数,有3种用法–%d格式:按数据实际长度输出,数据范围-32768~32767。/*%d格式的printf()函数使用*/#includestdio.hvoidmain(){inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);}运行结果:34a=3,b=4格式说明决定最终输出的格式格式说明应与输出列表项个数相同,顺序一致格式说明通常用小写字母表示%md格式:m指定输出字段的宽度数据位数小于m,左端补空格,反之按实际输出。inta=123,b=12345;printf(“%4d%4d”,a,b);%ld格式:输出长整型数据»可以用%mld格式指定输出列宽longc=135790printf(“%ld\n”,c);printf(“%8ld”,c);13579013579013579032767(int型数据的最大值)12312345•o格式符:八进制输出整数–是将内存中的二进制位整个按八进制输出,所以输出值没有符号。–可以指定输出宽度%mo,长整型可以用%lo格式输出。inta=-1;printf(“%d,%o,%8o,%x”,a,a,a,a);输出:-1,177777,__177777,ffff1111111111111111-1在内存的存放形式(补码)•x格式符:十六进制输出整数–同o格式符,无符号,即无负十六进制数。–可以指定输出宽度%mx,长整型可以用%lx格式输出。•u格式符:十进制输出unsigned型数据–int型可以用%u格式输出,unsigned型也可以用%d、%o和%x格式输出。例无符号数据的输出#includestdio.hvoidmain(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}运行结果:a=-1,177777,ffff,65535b=-2,177776,fffe,65534•c格式符:输出一个字符–值在0~255的整数,可以用%c形式输出为字符例4.4字符数据的输出#includestdio.hvoidmain(){charc=‘a’;inti=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}运行结果:a,97a,97–s格式符:输出一个字符串–有%s,%ms,%-ms,%m.ns,%-m.ns五种用法例4.5字符串的输出#includestdio.hvoidmain(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);}运行结果:CHINA,_____CH,CHIN,CHI__m自动=n•f格式符:输出实数–%f格式:整数部分全部输出,小数6位。可以有非有效数字输出,因为单精度有效位7位,双精度16位。–%m.nf格式:占m列,其中n位小数,左补空格。–%-m.nf格式:右补空格例4.8%f格式输出实数时指定小数位数#includestdio.hvoidmain(){flotf=123.456;printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);}例4.6%f格式输出实数时的有效位数#includestdio.hvoidmain(){flotx,y;x=111111.111;y=222222.222;printf(“%f\n”,x+y);}运行结果:333333.328125例4.7%f格式输出双精度实数时的有效位数#includestdio.hvoidmain(){doublex,y;a=1111111111111.111111111;b=2222222222222.222222222;printf(“%f\n”,x+y);}运行结果:3333333333333.333010运行结果:123.456001__123.456001______123.46__123.46__123.46____•e格式符:指数形式输出实数–%e格式:不指定m和n,小数6位,指数部分共5位,其中e和指数符号各1位,指数值3位。–%m.ne和%-m.ne格式:m、n、-的含义同前面。没有n时,自动=6•g格式符:输出实数–可以自动根据数值大小选择f或e格式(选列少的)–不输出无意义的零dx,Xoucse,Efg,G%%格式字符表十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身inta=100;printf(“%d”,a);inta=255;printf(“%x”,a);inta=8;printf(“%o”,a);inta=100;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);100ff10100AABC5.677890e+02567.789000567.789%Printf()的应用#includestdio.hvoidmain(){inti=-1;charch='a';printf(i=%d,%o,%x,%u\n,i,i,i,i);printf(ch=%c,%d\n,ch,ch);}格式化输入函数scanf()scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。格式化的输入函数的一般形式如下:scanf(“格式化字符串”,变量的地址列表);scanf(%d%d,&x,&y);#includestdio.hvoidmain(){intx,y,z;scanf(%d,%d,%d\n,&x,&y,&z);printf(%d,%d,%d\n,x,y,z);}例printf()与scanf()的综合应用#includestdio.hvoidmain(){chara,b,c,d,e;intx,y;a='C',b='C',c='U',d='T';putchar(a);putchar(b);putchar(c);putchar(d);putchar('\n');putchar(a);putchar('\n');/*每输出一个字符就换行*/putchar(b);putchar('\n');putchar(c);putchar('\n');putchar(d);putchar('\n');printf(PleaseInputacharacter:\n);e=gatchar();putchar('\n');printf(PleaseInputtwointegers:\n);scanf(%d%d,&x,&y);printf(Thetwointegersyouinputedare%dand%d:\n,x,y);}程序的顺序结构顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。顺序结构的一般形式如下:{语句1;语句2;…语句n;}语句1顺序结构示意图语句2顺序结构程序设计举例【例】求ax2+bx+c=0的根,a,b,c由键盘输入,设a≠0且b2-4ac0。分析:根据数学公式,当b2-4ac0时,二元方程ax2+bx+c=0的两个根为:x1=(-b+)/2a,x2=(-b-)/2a因此,求出的值,在对应求出x1和x2,顺序执行和输出即可。#includestdio.h#includemath.h#includeconio.hintmain(){floata,b,c,delta,x1,x2,p,q;scanf(%f%f%f,&a,&b,&c);delta=b*b–4*a*c;p=-b/(2*a);q=sqrt(delta)/(2*a)
本文标题:结构化程序设计基础 c语言
链接地址:https://www.777doc.com/doc-3598790 .html