自考2243计算机软件基础讲义_第1页
自考2243计算机软件基础讲义_第2页
自考2243计算机软件基础讲义_第3页
自考2243计算机软件基础讲义_第4页
自考2243计算机软件基础讲义_第5页
已阅读5页,还剩509页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机软件基础第一篇C语言程序设计基础第一章C语言基础一、计算机语言、算法、程序的概念1.计算机语言

:是人与计算机进行交流的一种语言。2.算法

:是解决问题的方法、步骤和思路。起止框处理框输入、输出框判断框流程指示线起止框处理框输入、输出框判断框流程指示线一、计算机语言、算法、程序的概念如:求a、b两数中的最大数的算法及C程序开始输入a、ba>bmax=amax=b输出max结束YN#include<stdio.h>/*预编译命令*/main()/*主函数首部*/{inta,b,max;/*定义变量*/scanf(“%d%d”,&a,&b);/*输入变量a和b的值*/if(a>b)max=a;/*若a>b,则最大值为a*/elsemax=b;/*若a<=b,则最大值为b*/printf(“max=%d\n”,max);/*输出a,b中的最大数*/}一、计算机语言、算法、程序的概念3.程序

:用某种计算机语言描述解决问题的方法步骤。4.算法与程序的区别:(1)算法是有穷的,而程序可以是无穷的;

累加器程序流程(2)算法和程序的描述方法不同;(3)算法一般情况是不可执行的,而程序是可执行的;二、计算机解题过程计算机解题过程

:注意

:C语言编写的程序,一般要经过编辑、编译、连接和运行才能得到程序的结果。提出问题构造模型选择方法编写程序调试运行分析结果二、计算机解题过程1)提出问题:求解一元二次方程2)构造模型:一元二次方程的数学模型为:ax2+bx+c=03)选择方法二、计算机解题过程#include<stdio.h>/*预编译输入、输出类函数*/#include<math.h>/*预编译数学类函数*/main(){floata,b,c; /*定义系数变量*/floatx,x1,x2,delta,d; /*定义根变量和表达式的变量值*/floatm,n;/*定义复数根实部和虚部系数*/printf("请输入a,b,c:"); /*提示用户输入三个系数*/scanf("%f,%f,%f",&a,&b,&c)/*接收用户输入的系数*/printf("\n"); /*输出回行*/if(a==0.0)/*二次项系数a=0时的处理*/{x=-c/b;printf("x=%f\n",x);}

4)编写程序else{delta=b*b-4*a*c;/*给表达式赋值*/d=sqrt(fabs(delta)); If

(delta==0.0){x=-b/2.0/a;printf("x=%f\n",x);}elseif(delta>0.0){x1=(-b+d)/(2*a); /*根1的值*/x2=(-b-d)/(2*a); /*跟2的值*/printf("x1=%f,x2=%f\n",x1,x2); /*输出两个根的值*/} else{m=-b/(2.0*a); /*实部系数*/n=d/(2.0*a); /*虚部系数*/printf("x1=%f+%fi\n",m,n); /*输出根的值*/printf("x2=%f-%fi\n",m,n);/*输出根的值*/ } }} 二、计算机解题过程5)上机调试三、C的基本数据类型整型数据类型基本类型构造类型指针类型枚举类型空类型实型字符型数组型结构型共用型三、C的基本数据类型1.常量

:在程序运行过程中,其值固定不变的量。十进制常量整型实型字符型字符串型八进制十六进制定点实数浮点实数一般形式字符型转义字符型三、C的基本数据类型表1-1整型常量整型常量

分类

书写形式

示例

备注十进制通常整数的写法100-300(1)正数前面的“+”可以省略;(2)占2个字节,数值范围是:-32768~32767八进制以0开头,后跟八进制数码0~7067012十六进制以数字0和字母x(或X)开头,后跟十六进制数码0~9、a~f0x10aoXABC三、C的基本数据类型表1-2实型常量实型常量(4个字节,有效位数为7位)分类书写形式示例备注定点实数正负号+整数+小数点+小数部分-3.4.21-5.整数部分或小数部分可以省略浮点实数前置数+e(或E)+指数1.2e3-2.34e-21E-2(1)指数必须是十进制整数(2)前置数不能省略三、C的基本数据类型表1-3字符型、字符串型常量常量类型

分类

书写形式

示例

备注字符型常量一般字符型用一对单撇号括起来的单个字符‘B’‘b’字母区分大小写转义字符型以“

\”开头的“控制字符”\n\f占1个字节的空间字符串型常量用一对双撇号括起来的单个或多个字符“a”“abc”三、C的基本数据类型2.变量

:在程序运行过程中,其值不断变化的量。(1)类型:整型变量、实行变量和字符型变量。(2)变量名:以字母或下划线开头,由字母、数字和下划线组成,而且不能为C语言中的保留字。(3)变量定义的一般形式:类型说明符变量1,变量2,…变量n;(4)变量初始化:在定义变量时,预先给变量设置初值。注意:不能写成:charch1=cha2=‘a’;。三、C的基本数据类型表1-4变量类型说明符变量类型分类类型说明符占用字节数整型变量基本整型int2长整型long4短整型short2实型变量单精度实型float4双精度实型double8字符型变量字符型变量char1四、算术预算符和算数表达式1.基本的算术运算符:名称运算符优先级备注加法+优先级相同,但低于乘、除和求余的优先级;同级运算时自左向右进行减法-乘法*优先级相同;同级运算时自左向右进行(1)两整数相除,商为整数;(2)参与求余运算的两个对象必须是整数,其结果也是整数。除法/求余%四、算术预算符和算数表达式2.书写算术表达式注意事项:(1)乘号*不能省略;(2)所有括号必须是圆括号,而且必须配对;(3)函数自变量用圆括号括起来;(4)三角函数的自变量必须用弧度。(弧度=角度*π/180)四、算术预算符和算数表达式3.不同类型量混合运算原则:(1)自动转换原则

转换顺序为:如:3+2.0(2)强制转换原则charintlongfloatdouble如:3+(int)2.0五、赋值预算符和赋值表达式1.赋值表达式(1)书写形式:

变量名=表达式;如:a=b=c=6,等价于a=(b=(c=6)),最后结果是a为6。(2)执行过程:

首先计算表达式的值,然后转换为“=”左边变量的类型,最后将转换后的结果保存在变量的存储空间中。注意:

inta=b=c=6;是错的五、赋值预算符和赋值表达式2.复合赋值运算符名称运算符运算规则结合性示例(inta=3,b=2;)加赋值+=a+=b(等价于a=a+b)从右到左a+=b(最后结果是a中的值为5)减赋值-=a-=b(等价于a=a-b)a-=b(最后结果是a中的值为3)乘赋值*=a*=b(等价于a=a*b)a*=b(最后结果是a中的值为6)除赋值/=a/=b(等价于a=a/b)a/=b(最后结果是a中的值为3)余赋值%=a%=b(等价于a=a%b)a%=b(最后结果是a中的值为1)五、赋值预算符和赋值表达式3.自加、自减运算符名称表达式形式运算规则示例备注自增i++i++(等价于i=i+1)inti=1,j=2,m=3,n=4;写出表达式(i++)*(++j)*(m--)*(--n)的值,及变量的值。表达式的值:27变量的值:i=2;j=3;m=2;n=3.在使用i后,使i的值加1++i++i(等价于i=i+1)在使用i前,使i的值加1自减i--i--(等价于i=i-1)在使用i后,使i的值减1--i--i(等价于i=i-1)在使用i前,使i的值减1六、逗号运算符和逗号表达式1.逗号表达式的一般形式表达式1,表达式2,表达式3,…表达式n;如:a=3,b=a+2,c=a+b,c=a+b+c;该逗号表达式的值为16。2.执行过程从左到右逐个计算各个表达式的值,并将最后一个表达式的值作为该逗号表达式的值。历年真题演练1.(2009.4,单选)下列合法的C语言标识符是()staticB.3abcC.abc_2D.am&t2.(2010.4,单选)已知intx=17,y=5;,则表达式x/y的值是()0B.2C.3D.3.43.(2010.4,填空)已知inta=1,b=2,d;执行语句d=a<0||b<2&&(a=3);后,a的值是()。同步跟踪测评1.下列常量中,不正确的是()0021B.0.0C.0.12E5D.E22.关于C语言主函数的描述正确的是()C程序可以有多个main函数;C程序必有一个而且只能有一个main函数;C.C程序可以没有main函数;D.C程序的执行不一定在main函数开始执行。同步跟踪测评3.若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()2.500000B.2.750000C.3.500000D.0.0000004.C语言中,已知:inta,b,c;下列运算符使用错误的是()a++B.b--C.++cD.3++同步跟踪测评5.C语言中,字符串在计算机中结束的标记是()空格B.换行C.\nD.\t6.C语言中,j=i++;等价于()j=i;i=i+1;B.i=i+1;j=i;C.j=i;j=j+1;D.j=i;j=i+1;7.C语言中,赋值语句的赋值号“=”()可以是常数B.可以是变量名C.只能是表达式D.可以是常数或表达式同步跟踪测评8.已知有如下程序:main(){inti,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%d”,i,j,m,n);}请选择程序正确输出的结果()。9,11,9,10B.8,10,9,11C.9,11,9,11D.8,8,11,10同步跟踪测评9.已知有如下程序:main(){inti=6;a+=a-=a*a;printf(“%d”,a);}36B.0C.-24D.-60请选择程序正确输出的结果()。同步跟踪测评9.下列程序的运行结果是()#include<stdio.h>#include<math.h>main(){inta=5;a=3+a%4+sqrt(16);a=a/3;a++;printf(“%d\n”,a);}2B.2.6C.3D.4同步跟踪测评10.已知:inti=5,a;当a=++i;语句执行后,变量i和a的值分别是()55B.56C.65D.6611.用C语言表示算式2(a+b)/(cd),正确的表达式是()2*(a+b)/(cd)B.2(a+b)/(c*d)C.2*(a+b)/(c*d)D.2(a+b)/(cd)同步跟踪测评12.若有intx;floaty;下面结果为整数型的表达式有()(float)(x+y)B.(int)x+yC.2.3+xD.x+(int)y13.已知字符型变量定义:chara;则下列哪一个正确的字符变量赋值操作()chara=‘3’;B.chara=“3”;C.chara=%;D.chara=*;同步跟踪测评14.下列四个选项中,哪一个可以作为字符型常量使用()\r\nB.“a”C.\997D.6515.若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=52,k=16)后,x的值为()4B.16C.32D.52同步跟踪测评16.下列程序的运行结果是()#include<stdio.h>main(){intx=021;printf(“%d\n”,++x);}18B.17C.19D.20同步跟踪测评17.已知有如下程序:main(){inta=9,b=2;floatx=6.6,y=1.1,z;z=a/2+b*x/y+1/2;printf(“%5.2f”,z);}则它的输出结构是()。S=S+x顾客交款x累加器程序流程开始总收入S=0计算机软件基础第一篇C语言程序设计基础第二章顺序结构、选择结构和循环结构的程序设计第二章顺序结构、选择结构和循环结构的程序设计1、顺序结构——用来表示一个操作系列,它的执行过程是按顺序执行各序列。2、选择结构——也称分支结构,根据假定条件,选择执行某个分支操作。3、循环结构——根据条件重复执行某些操作。一、顺序结构程序设计顺序结构程序是最简单,最基本的程序设计,它由简单的语句组成,程序的执行是按照程序员书写的顺序进行的,没有分支、转移、循环,且每条语句都将被执行。顺序结构的程序是从上到下依次执行的,其执行流程如图所示。图顺序结构执行流程一、顺序结构程序设计【实例2.1】求三角形的周长和面积。程序分析:①输入三条边a、b、C;②计算周长:l=a+b+c;③计算面积:根据海伦公式,半周长hl=(a+b+c)/2;三角形面积:s=sqrt(hl*(hl—a)*(hl-b)*(h1一c));④输出三角形的面积和周长。一、顺序结构程序设计#include<stdio.h>#include<math.h> //添加数学函数所需头文件voidmain(){ floata,b,c,l,h1,s; printf("请输入能组成三角形的三条边:\n");

//输出提示文字 scanf("%f,%f,%f",&a,&b,&c);

//输入a、b、c的值 printf("a=%f,b=%f,c=%f\n",a,b,c);

//输入a、b、c的值 l=a+b+c;

//计算三条边的和 h1=l/2;

//为h1赋值 s=sqrt(h1*(h1-a)*(h1-b)*(h1-c));

//计算三角形的面积 printf("三角形的周长和面积分别为:\n");

//输出面积的值 printf("l=%4.2f,s=%4.2f",l,s);

//输出l和s的值}编写程序如下:一、顺序结构程序设计

一、赋值语句

1.语句书写形式变量名=表达式;

2.功能赋值语句的功能是把表达式值算出后赋给变量。注意,赋值语句就是赋值表达式后加上一个分号,分号作为语句的结束标志。例2-1写出a、b两变量交换值的语句。方法一:

m=a;a=b;b=m;

一、顺序结构程序设计

二、字符输入与输出函数1.getchar()函数getchar()函数是字符输入函数,它的功能是从键盘上输入一个字符。一般形式为:getchar()Charch;“ch=getchar();”2.putchar()函数putchar()函数为字符输出函数,它的作用是在显示器上输出一个字符。其一般形式为:putchar(c);一、顺序结构程序设计

二、字符输入与输出函数例2-2#include"stdio.h"voidmain(){intx=97;chary='a';

putchar('a');

putchar(y);

putchar(97);putchar(x);putchar('c'-2);}一、顺序结构程序设计1.格式输出函数printf一般形式函数功能示例printf(“格式控制字符串”,输出对象表列)按指定格式输出若干个任意类型的数据(1)inta=61,b=-34;①printf(“%d%d\n”,a,b);输出结果为61,-34.\n输出完后换一行。②printf(“a=%d,b=%d\n”,a,b);输出结果为:a=61,b=-34。③printf(“%3d,%2d\n”,a,b);输出结果为:a=61,b=-34。这里的%md中的m为指定输出宽度,如果m大于输出的位数,则在输出数前面补空至m位;如果m小于输出的位数,则按实际位数输出。三、格式输入与输出函数一、计算机语言、算法、程序的概念格式输出函数printf注意事项:1.格式控制字符串包含两部分内容:(1)格式说明符,如%d,%f,%c等;(2)照原样输出的字符。2.输出数据表列是需要输出的数据(也可以是表达式),多于一个时用逗号分开。printf(“格式控制字符串”,输出对象列表)一、顺序结构程序设计2.格式输出函数printf

(续)一般形式函数功能示例printf(“格式控制字符串”,输出对象列表)按指定格式输出若干个任意类型的数据(2)floatx=2.1,y=-31.42;①printf(“%f,%f\n”,x,y);输出结果为:2.100000,-34.420000;默认状态下,单精度保留6位小数。②printf(“x=%5.1f,y=%3.1f\n”,x,y);输出结果为:x=2.1,m=-31.4;%m.nf,整个输出m位,小数位占n位,小数点也1位(m小于输出位数时,整数部分按实际位数输出)。(3)charch1=‘a’,ch2=‘b’;printf(“%c,%3c\n”,ch1,ch2);输出结果为:ab。一、顺序结构程序设计2.格式输入函数scanf一般形式函数功能示例Scanf(“格式控制字符串”,输入对象地址列表)输入若干个任意类型的数据(1)scanf(“%d%d”,&a,&b);运行时,输入35(回车),则a=3,b=5。(2)scanf(“%d,%d”,&a,&b);运行时,输入3,5(回车),则a=3,b=5。(3)scanf(“%2d%3d”,&a,&b);运行时,输入12345(回车),则系统自动将12赋a,345赋给b。一、顺序结构程序设计格式输入函数scanf注意事项:(1)输入实型数据时不能规定精度。如:scanf(“%3.2f“,&a);是错误的。(2)格式控制字符串后面对应的是“变量地址”,而

不是“变量名”。如:scanf(“%f%f“,&a,&b);是正确的;

scanf(“%f%f“,a,b);是错误的;(3)”%c”格式输入时只能接受一个字符。如:scanf(“%c“,&a);若输入a,则ch=a;若输入abc,则输出仍然为a。一、顺序结构程序设计

例2-3输入一个字符,输出它的ASCII代码值,反过来输入一个字符的ASCII代码值,输出这个字符。

#include<stdio.h>/*程序中使用了字符输入,输出系统函数*/

main(){intx;charch;

ch=getchar();/*从键盘上键入一个字符到变量ch*/

printf("%d\n",ch);

/*将ch的十进制ASCII码输出*/

scanf("%d",&x);

/*从键盘键入一个十进制整数*/

putchar(x);/*输出X这个整数所代表的字符*/

}一、顺序结构程序设计例2-4输入一个十进制整数,输出它的八进制、十六进制数。程序如下:#include"stdio.h"voidmain(){inta;scanf("%d",&a);/*键入十进制数到a中*/printf("%o\n",a);/*输出a的八进制数*/printf("%x\n",a);/*输出a的十六进制数*/}一、顺序结构程序设计例2—5输入一个小写字母,输出相应的大写字母。#include"stdio.h"voidmain(){charch1;

scanf("%c",&ch1);/*输入小写字母*/

printf("%c",ch1-32);/*输出表达式chl一32相应的字符*/}一、顺序结构程序设计例2-6编写求任意半径圆的周长和面积的程序,要求周长四舍五入精确到小数点后第2,面积到第3位。#include"stdio.h"voidmain(){floatr,c,s,pi=3.14159; scanf("%f",&r);/*键入半径值r*/ c=2.0*pi*r;/*计算周长C*/ s=pi*r*r;/*计算面积s*/ printf("r=%f,c=%6.2f,s=%7.3f\n",r,c,s); /*按要求输出结果*/}二、选择结构程序设计由于顺序结构程序是顺序执行的,无分支、无转移、无循环,因此它不可能处理复杂的问题,而在数据处理过程中,通常需要根据不同的条件进行判断,然后选择程序进行处理,由此可见,顺序结构无法满足要求,而选择结构就是为了解决这类问题而设定的。一般而言,C语言中选择语句包括两种:if语句和switch语句。所谓选择语句就是通过判断条件来选择执行哪一条语句,进而达到编程目的。二、选择结构程序设计1.关系运算符和关系表达式运算符含义关系表达式运算规则结果类型优先级>大于关系表达式成立,则关系表达式的值为真,即为1;关系表达式不成立,则关系表达式的值为假,即为0;“真”或假;“1”或“0”。优先级相同,高于==,!=>=大于等于<小于<=小于等于==等于优先级相同,较低。!=不等于二、选择结构程序设计关系运算符说明:(1)关系运算符的优先级低于算术运算符,但高于赋值运算符;(2)关系表达式对象类型可以是整数、实数或字符型;(3)同级运算,自左向右,如:(3>4)!=5的值为真。二、选择结构程序设计2.逻辑运算符和逻辑表达式运算符含义对象类型结果类型优先级!逻辑非数值型、字符型等逻辑真1逻辑假0高&&逻辑与中||逻辑或低二、选择结构程序设计逻辑运算符说明:(1)逻辑运算、算术运算和关系运算的优先级由高到低排列的顺序为:(2)对于逻辑与,只有当运算符左边的值为真时,才计算运算符右边的表达式。如:!*,/,%+,->,>=,<,<===,!=&&||inta=1,b=2,c=3;执行(a>b)&&(c=b)后,c的值仍为3。二、选择结构程序设计逻辑运算符说明(续)

:(3)对于逻辑或,只有当运算符左边的值为假时,才计算运算符右边的表达式。如:inta=1,b=2,c=3;执行(a<b)||(c=b)后,c的值仍为3。(4)设x是一个整数,如果!x的值为0,则x的值为非0,不能简单的说x的值为1,因为非0的数不仅仅是1.二、选择结构程序设计3.1单分支if语句语句格式单分支if语句流程if(表达式)

语句s;表达式语句s下一语句YN二、选择结构程序设计单if语句说明:(1)语句s可以是一个语句,也可以是若干语句,如果是若干语句,必须用“{}”将这些语句括起来。如:if(a<b){m=a;a=b;b=m;}(2)注意“=”(赋值)和“==”(相等)的区别。下面哪个代码段不能正确输出一个“*”号()。A.inta;if(a=1)printf(“*”);B.inta;if(a==1)printf(“*”);C.inta=1;if(a=1)printf(“*”);D.inta=1;if(a==1)printf(“*”);二、选择结构程序设计单if语句说明(续):(3)常量、变量和函数也是表达式,它们是表达式的特列。(4)实型运算中,常量尽可能写成小数,如10写成10.0。二、选择结构程序设计

例2-7铁路上托运行李规定,行李重量小于等于20kg时免费,超20kg时超过部分每kg0.5元,试编写根据行李重量计算运费的C程序。设行李重量用P,运费用W表示,它们都按实型对待,其数学式为:程序一:

voidmain(){floatP,W;scanf("%f",&P);

/*输入行李重量P*/if(P<=20.0)W=0.0;if(P>20.0)W=(P-20.0)*0.5;printf("P=%f,W=%f\n",P,W);/*输出重量P和运费W*/}程序二(只写运算部分):W=(P-20.0)*0.5;If(P<=20.0)W=0.0;二、选择结构程序设计3.2双分支if语句语句格式单分支if语句流程if(表达式)

语句s1;else语句s2;(语句1和语句2,都可以是复合语句)表达式if语句的下一个语句语句1语句2YN二、选择结构程序设计3.3嵌套的if语句语句格式单分支if语句流程if(表达式1){if(表达式2)语句1;

else

语句2;}else

{if(表达式3)语句3;

else

语句4;}表达式1语句1语句2表达式2表达式3语句3语句4YYYNNN二、选择结构程序设计3.4条件运算符(?)和条件表达式语句格式条件表达式流程变量名=表达式1?表达式2:表达式3;(1)”?:”是C中唯一的一个三目运算符;(2)求值过程:如果表达式1的值为“真”,那么整个表达式取表达式2的值,否则,取表达式3的值,并赋值给最左边的变量。表达式1取表达式2的值真假取表达式3的值二、选择结构程序设计例题2-8有如下分段函数:y=-101(x<0)(x=0)(x>0)试编写通过输入x值,求y值的程序。二、选择结构程序设计单分支if语句编程:main(){ intx,y; scanf("%d",&x); if(x<0) y=-1; if(x==0) y=0; if(x>0) y=1; printf("x=%d,y=%d\n",x,y);}二、选择结构程序设计嵌套if语句编程(1):main(){ intx,y; scanf("%d",&x); if(x<=0) { if(x<0) y=-1; else y=0; } else y=1; printf("x=%d,y=%d\n",x,y);}二、选择结构程序设计嵌套if语句编程(2):main(){ intx,y; scanf("%d",&x); if(x<0) y=-1; else { if(x==0) y=0; else y=1; } printf("x=%d,y=%d\n",x,y);}二、选择结构程序设计条件表达式编程:main(){ intx,y; scanf("%d",&x); y=x<0?-1:(x==0?0:1); printf("x=%d,y=%d\n",x,y);}二、选择结构程序设计3.5多分支结构的switch语句语句格式

switch(表达式){case常量表达式1:语句组1;break;case常量表达式2:语句组2;break;……case常量表达式n:语句组n;break;default:语句组n+1;}二、选择结构程序设计例2-9输入一个学生某门课百分制成绩,输出其成绩等级。等级规定如下:100分——’A’级,90~99分——’8’级,80—89分——’C’级,70~79分——’D’级,60~69分——’E’级,60分以下为’F’级。#include"stdio.h"voidmain(){intx,i;charch;scanf("%d",&x);

/*输入成绩x*/i=x/10;

/*确定分数段*/switch(i){

case10:ch='A';break;

/*成绩100分为A级*/case

9:

ch='B';break;

/*成绩90~99分为B级*/case

8:

ch='C';break;

/*成绩80~89分为C级*/case

7:

ch='D';break;

/*成绩70~79分为D级*/case

6:

ch='E';break;

/*成绩60~69分为E级*/default:ch='F';

/*成绩小于60分为F级*/}printf("%d一%c\n",x,ch);/*输出成绩及等级*/}三、循环结构程序设计例2-10:分析下列程序,写出运行结果。voidmain(){inta=1,b=0; switch(a) {case1:switch(b)

{case0:a++;b++; case1:a++;break; case2:b++;

} case2:a++;b++;break; default:a++; }printf("a=%d,b=%d\n",a,b);}二、选择结构程序设计例2-11输入a、b、C三个数,按由小到大的顺序输出。分析:排序的结果可让a中存放最小数,b中存人中间数,c中存放最大数。#include"stdio.h"voidmain(){floata,b,c,m;scanf("%f%f%f",&a,&b,&c);if(a>b){m=a;a=b;b=m;}if(b>c)m=b,b=c,c=m;/*此为逗号表达式语句*/if(a>b)m=a,a=b,b=m;printf("a=%6.2f,b=%6.2f,c=%6.2f\n",a,b,c);}二、选择结构程序设计例2-12编写求a、b、c、d四个数中最大数的程序。#include"stdio.h"voidmain(){floata,b,c,d,max;scanf("%f

%f

%f

%f",&a,&b,&c,&d);/*输入4个数*/max=a;/*先假设第1个数a最大,将其保存在max中*/if(b>max)max=b;/*下面各数依次和当前最大数比较*/if(c>max)max=c;if(d>max)max=d;printf("max=%f\n",max);/*输出最大数*/}二、选择结构程序设计

例2-13输入一个字符,判断它是否为大写字母,若是则变成小写字母,若不是则不处理。最后输出这个字符。#include"stdio.h"voidmain(){charch;scanf("%c",&ch);

/*输入字符*/if(ch>='A'&&ch<='Z')ch=ch+32;/*若ch为大写字母,则变成小写字母*/printf("%c\n",ch);

/*输出这个字符*/}本题的if语句还可以用条件表达式写成:ch=(ch>=’A’&&ch<=’Z’)?ch+32:ch;二、选择结构程序设计例2-14判断某一年是否为闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除。②能被400整除。试编写C程序。判断闰年的条件,可用一个逻辑表达式来表示:(year%4==0&&year%100!=0)||year%400==0程序一:#include"stdio.h"voidmain(){intyear;scanf("%d",&year);if((year%4==0&&year%100!=0)||year%400==0)printf("%disaleapyear\n",year);elseprintf("%disnotaleapyear\n",year);}二、选择结构程序设计程序二(流程如图2-5所示):#include"stdio.h"voidmain(){intyear,a;/*用a=1标志闰年*/scanf("%d",&year);if(year%4!=0)a=0;elseif(year%100!=0)a=1;elseif(year%400!=0)a=0;elsea=1;if(a==1)printf("%disaleapyear\n",year);elseprintf("%disanotaleapyear\n",year);{三、循环结构程序设计许多问题都会遇到规律性的重复操作。例如,求和问题、求有一定规律的问题和一些迭代等问题都会用到循环结构。循环结构是结构化程序设计的基本结构之一,它与顺序结构、选择结构共同构成了作为各种复杂程序的基本构造单元。本节重点讲解3种循环语句:while语句、do…while语句和for语句。三、循环结构程序设计3.3.1条件(当型)循环(while)语句书写形式流程图while(表达式)

{循环体;}表达式非0?循环体结束循环,执行下面的语句YN例2-15编写求S=1+2+…+100的程序。#include"stdio.h"voidmain(){inti=1,s=0;while(i<=100){s=s+i;i++;}printf("s=%d\n",s);}三、循环结构程序设计三、循环结构程序设计3.3.2直到型循环(do-while)语句书写形式流程图Do{循环体;}while(表达式);表达式非0?循环体结束循环,执行下面的语句YN例2-16编写求S=1+2+…+100的程序。#include"stdio.h"voidmain(){inti=1,s=0;do{s=s+i;i++;}while(i<=100);printf("s=%d\n",

s);}三、循环结构程序设计三、循环结构程序设计3.3.3次数型循环(for)语句书写形式流程图for(表达式1;表达式2;表达式3){循环体;}表达式2非0?循环体结束循环,执行下面的语句YN计算表达式1计算表达式3例2-17编写求s=1+2+…+100的程序。#include"stdio.h"voidmain(){inti,s=0;for(i=1;i<=100;i++)/*i从1至100,每次加1*/s=s+i;/*不断把各次i值加到s中*/printf("s=%d\n",s);}三、循环结构程序设计三、循环结构程序设计3.3.4循环辅助语句(break)(1)语句功能:Break语句只能用于switch或循环语句当中,其功能是跳出switch语句或跳出本层循环,转去执行其他后继语句。(2)使用技巧:当循环次数不确定,需要在循环语句执行过程中提前结束循环,或需要循环语句中提供多个出口时,可用break语句。(3)使用方法:在循环语句中,break语句一般与if语句配合使用,用if语句设置退出条件,break语句则执行退出操作。三、循环结构程序设计3.3.4循环辅助语句(break)#include"stdio.h"voidmain(){inti,s=0;for(i=1;i<=100;i++){ s=s+i; if(s>10)

break;}printf("i=%d,s=%d\n",i,s);}三、循环结构程序设计3.3.4循环辅助语句(continue)(1)语句功能:执行continue时,循环体中continue

下面的语句都不执行,而重新进行循环判断,以决定是否继续进行下次循环。(2)使用方法:在循环语句中,continue语句一般与if语句配合使用。break与continue的区别:continue只结束本次循环重新进行下次判断,而break结束整个循环。三、循环结构程序设计3.3.4循环辅助语句(continue)#include"stdio.h"voidmain(){inti,s=0;for(i=1;i<=100;i++){if(i%2==0)

continue; s=s+i; if(s>10)

break;}printf("i=%d,s=%d\n",i,s);}三、循环结构程序设计例2-18:分析下列程序,写出运行结果。#include"stdio.h"voidmain(){inti,j,k;for(i=1;i<=3;i++)

/*i从1到3变化,输出3行*/{for(j=1;j<=3;j++)/*每行输出3个算式*/{k=i*j;printf("%1d*%1d=%1d",i,j,k);}printf("\n");/*每行输出完后换一行*/}}三、循环结构程序设计例2-19:分析下列程序,写出运行结果。#include"stdio.h"voidmain(){inti,j;

{for(i=1;i<=3;i++)

for(j=1;j<=11-i;j++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("*");

printf("\n");

}

{for(i=1;i<=2;i++)

{for(j=1;j<=8+i;j++)

printf("");

for(j=1;j<=5-2*i;j++)

printf("*");

printf("\n");}

}}

三、循环结构程序设计例2-20输入一个整数,判断是否为素数

当型结构程序如下:

#include"stdio.h"voidmain(){intm,i=2;scanf("%d",&m);/*i从2开始,若m是i的倍数则结束循环,否则i不断加1,重复判断*/while(m%i!=0)i++;if(m==i)/*当i和m相等时,说明m除以2~m-1均除不尽*/printf("%disaprimemuber\n",m);elseprintf("%disnotaprimemuber\n",m);}三、循环结构程序设计若要求出45以内所有素数,且每行输出7个,方法如下:#include"stdio.h"voidmain(){inti,k=1,m;printf("%5d",2);/*先输出最小的素数2,输出宽度为5是为了数据分开*/for(m=3;m<=45;m=m+2)/*从3开始45以内奇数循环*/{i=2;while(m%i!=0)i++;if(m==i){printf("%5d",m);/*l=输出素数*/k++;/*素数个数加l*/}if(k%7==0)/*k为7的倍数换一行*/printf("\n");}}三、循环结构程序设计例2-21输出Fibonacci数列前8个数,每行输出4个。这个数列有如下特点:一个数列从第3个数开始,各个数等于前两个数之和。

#include"stdio.h"

voidmain(){inti,a=1,b=2;/*设前两个数为1和2*/for(i=1;i<=4;i++)/*i从1到4,循环4次共输出8个数*/{printf("%5d%5d",a,b);/*每次输出两个数*/if(i%2==0)/*若i是2倍数,即每行输够4个,则换一行*/printf("\n");a=a+b;/*形成下面的两个数*/b=a+b;}}

12358132134abababab

从第三个数开始的规律为:a=a+b;b=a+b;三、循环结构程序设计上面程序还可以写成:#include"stdio.h"voidmain(){inti,a=1,b=2,f;printf("%5d%5d",a,b);

/*先输出前两个数*/for(i=3;i<=8;i++)

/*从第3个到第8个数*/{f=a+b;

/*每个数f等于前两个数之和*/printf("%5d",f);

/*输出每l个数*/if(i%4==0)printf("\n");

/*每行输够4个则换一行*/a=b;b=f;

/*形成新的a、b*/}}三、循环结构程序设计例2-22编写求1!+2!+…+n!的通用程序。分析:1)因为n!=n(n一1)!

2)可以边求阶乘边累加。3)定义P为长整型变量,其数值可达231-l。程序如下:

#defineN5

/*假定求1!+2!+3!+4!+5!*/main(){inti;longp=1L,s=0L;for(i=1;i<=N;i++){p=p*i;

/*不断求阶乘*/s=s+p;

/*阶乘累加*/}printf("s=%Ld\n",s);

/*长整型输出用%ld格式串*/}三、循环结构程序设计例2-23输入一列数,以0为结束标志,求正数的平均值。#include"stdio.h"voidmain(){floatX,s=0.0;/*X代表这些数,S先放正数和,后放平均值*/inti=0;

/*i为正数个数计数器*/scanf("%f",&X);

/*先输入第一个数*/while(X!=0)

/*若输人数为0,则结束循环*/{if(X>0){s=s+X;i++;};

/*正数求累加和,个数加1*/scanf("%f",&X);

/*输入下一个数*/}s=s/i;

/*求平均值*/printf("aver=%f\n",s);/*输出正数平均值*/}三、循环结构程序设计例2-24输入一个整数,试确定是几位数。main(){longx;inti=0;

/*x代表这个整数,i为整数位数计数器*/scanf("%Ld",&x);/*输入这个整数*/while(x!=0)

/*当x除以10的商为0时结束循环,开始的x为输入值*/{i++;

/*除以10的次数即为该数的位数*/x=x/10;

/*该数不断除以10,形成新的x*/}printf("i=%d\n",i);

/*输出整数的位数i*/}历年真题演练1.(2010.4,单选)已知intx=3,y=5,z=7;,则表达式x>y?x:(y>z?y:z)的值是()0B.3C.5D.72.(2010.4,单选)执行下列C程序段,循环体被执行的次数是()for(i=0,j=0;(j!=4)||(i<3);j++,i++)printf("%d",j);2B.3C.4D.无限历年真题演练3.(2010.4,程序分析)写出下列C程序的运行结果。main(){ inta=7; do { switch(a%2) { case1:a--;break; case0:a++;break; } a--; printf("%5d\n",a); }while(a>0);}历年真题演练4.(2010.4,程序分析)下列程序是求一个有规律的数值序列:1,1,2,4,7,13,……,从第4个数开始,每一个数都是它前边3个数的和,一直求到该数列的第n(4≤n≤18)个数,填空完成程序。main(){inti=3,n,a=1,b=1,c=2,d;scanf("%d",&n);printf("%d%d%d",a,b,c);do{i++;d=a+b+c;printf("%3d",d);a=b;b=c;

;} while(

);}同步跟踪测评1.阅读下列代码,说明它的作用,并写出其运行结果。#include<stdio.h>main(){ inti=0; intmax=10; for(;i<max;i++) {if(i%2==0)printf("%d",i); }}同步跟踪测评2.运行下列代码,打印出所有100以内的平方值小于100的整数。main(){ inti=1; for(;i<100;++i) { if(

)printf("%3d",i); }}同步跟踪测评3.设计一个程序,可以通过用户键盘输入来判断用户输入的数是奇数还是偶数(输入值为大于或等于1,并小于100的正整数)。4.试编写一个程序,可以判断用户从键盘输入的数是正数,负数,或是零。三、循环结构程序设计例题1:(已知sun=1+2+3…+i+…,求sun大于12的最大i值及S值。main(){ inti,s=0; for(i=1;i<=100;i++) { s=i+s; if(s>12) break; } printf("i=%d,s=%d\n",i,s);}三、循环结构程序设计例题2:分析下列程序运行的结果。x=4,y=4,z=1B.x=5,y=4,z=1C.x=5,y=4,z=2D.x=5,y=5,z=1main(){ intx=3,y=6,z=0; while(x++!=(y=y-1)) { z++; if(y<x) break; } printf("x=%d,y=%d,z=%d\n",x,y,z);}例题3:编写求s=1+1/2+1/3…+1/100的程序。例题4:编写求s=1-1/2+1/3-1/4…-1/100的程序。计算机软件基础第一篇C语言程序设计基础第三章数组第三章数组数组是在一个变量名之下存放的多个数据的存储区的说明,是具有相同类型的数的集合按照一定的顺序组成的数据。数列和矩阵是用来描述一批数据之间的关系的。如:表示x数列时通常写成:x1,x2,x3,……,xn表示一个2×3矩阵y可以写成:y11y12y13y21y22y23分析数列和矩阵不难发现它们有三个特点:有一批数据;这些数据之间有一定的内在联系;这些数据的类型相同。一、一维数组1.定义定义定义形式当构成数组的各个元素的下标只有1个时,称为一维数组。类型说明符数组名[常量表达式];例如:intnun[5];一、一维数组一维数组的说明:(1)常量表达式中仅包含常量或符号常量,不得包含变量如:intx,a[X];是错误的。

#defineN5inta[N];是正确的。

inta[2+3*2];是正确的。(2)一维数组在内存中是按下标从0开始依次存放各个元素。一、一维数组2.一维数组的初始化方法示例(1)在定义数组的同时,对数组进行初始化。inta[5]={1,2,3,4,5};(2)若对所有元素赋初值,则数组长度可省略。inta[]=={1,2,3,4,5};(3)如果只对数组的前若干个元素赋初值,那么未赋初值的元素其初值为0。inta[5]=={1,2,3};(4)要想让一个数组中全部元素为0,可以写成:inta[3]={0,0,0};或inta[3]={0};一、一维数组3.一维数组元素的引用:(1)引用原则:先定义,后引用;逐个引用,不能一次引用整个数组。(2)引用形式:

数组名[下标]例如:a[2],a[1+2],a[i++],a[i+j];都是合法的数组元素引用。注意:数组元素一经引用就和变量一样使用。一、一维数组3.一维数组元素的引用(续):(3)数组元素的输入:可以用赋值的方法,也可以用输入函数。例如:

for(i=0;i<4;i++)scanf("%d",&num[i]);键入3512(回车)一、一维数组3.一维数组元素的引用(续):(4)数组元素的输出:用输出函数输出数组元素值。例如:

for(i=0;i<4;i++)printf(“%3d“,num[i]);运行结果为:3512注意:数组元素在引用时其下标不要超界。一、一维数组

例3-1求一维数组元素最大值及所在位置。

#defineN5main(){inta[N],i,max,maxi;for(i=0;i<N;i++)scanf("%d",&a[i]);/*输入a数组的N个元素值*/max=a[0];maxi=0;/*最大值及位置序号置初态*/for(i=1;i<N;i++)if(a[i]>max)

/*求最大数max及位置maxi*/{max=a[i];maxi=i;}printf("max=a[%d]=%d\n",maxi,max);}一、一维数组例3-2求一个整数各位数字之和。

main(){longx;inta[10],k,i=0,s=0;/*i中统计整数的位数,S中放各位数字之和*/

scanf("%Ld",&x);/*输入长整型数*/while(x!=0){a[i]=x%10;

/*分离出最右边数字,放入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论