C程序复习.docx

上传人:b****3 文档编号:4597838 上传时间:2022-12-07 格式:DOCX 页数:27 大小:59.69KB
下载 相关 举报
C程序复习.docx_第1页
第1页 / 共27页
C程序复习.docx_第2页
第2页 / 共27页
C程序复习.docx_第3页
第3页 / 共27页
C程序复习.docx_第4页
第4页 / 共27页
C程序复习.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C程序复习.docx

《C程序复习.docx》由会员分享,可在线阅读,更多相关《C程序复习.docx(27页珍藏版)》请在冰豆网上搜索。

C程序复习.docx

C程序复习

第1章程序设计和C语言

1、C语言是一种结构化语言。

2、C语言程序结构的特点:

(1)一个程序由一个或多个源程序文件组成。

(预处理指令、全局声明、函数定义)

(2)函数是C程序的主要组成部分。

1 函数是C程序的基本单位。

2 一个C语言程序是由一个或多个函数组成的,其中必须包含一个main函数(且只能有一个main函数)。

(3)一个函数包括两个部分:

函数首部、函数体(声明部分、执行部分)。

(4)程序总是从main函数开始执行的,到main函数结束。

而不论main函数在整个程序中的位置如何(main函数的位置是任意的)。

(5)程序中对计算机的操作是由函数中的C语句完成的。

(6)在每个数据声明和语句的最后必须有一个分号。

(7)C语言本身不提供输入和输出语句。

(8)程序应当包含注释。

3、运行C程序的步骤:

编辑(源程序f.c)、编译(f.obj)、连接(f.exe)、执行(f.exe)。

(注意P13图1.2)

4、C语言是面向对象的语言。

第二章算法

1、沃斯公式:

算法+数据结构=程序

2、算法的定义:

算法——为解决一个问题而采取的方法和步骤。

3、有效算法的特点:

(1)有穷性

(2)确定性

(3)有零个或者多个输入

(4)有一个或者多个输出

(5)有效性

4、三种基本结构:

(1)顺序结构

(2)选择结构

(3)循环结构(当型循环结构、直到型循环结构)

5、结构化程序设计方法的基本思路:

把一个复杂问的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。

第三章最简单的C程序设计——顺序程序设计

1、符号常量:

用#define指令,指定用一个符号名称代表一个常量。

(#definePI3.1416,这样用一个符号代表一个常量的,称为符号常量)

2、标识符:

C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。

3、数据类型

基本整形(int)

短整型(shortint)

长整型(longint)

整形类型*双长整型(longlongint)

字符型(char)

*布尔型

基本类型

单精度浮点型(float)

浮点类型双精度浮点型(double)

复数浮点型(float-complex...)

数据类型枚举类型(enum)

空类型(void)

指针类型(*)

数组类型([])

派生类型结构体类型(struct)

共用体类型(union)

函数类型

4、字符与字符代码:

目前大多数系统采用ASCII字符集。

各种字符集(包括ASCII字符集)的基本集都包括了127个字符。

其中包括:

●字母:

大学英文字母A~Z,小写英文字母a~z。

●数字:

1~9.

●专门符号:

29个:

”#&‘()*+,—·/:

<=>?

[\]ˆ_﹛﹜~

●空格符:

空格、水平制表符(tab)、垂直制表符、换行、换页(formfeed)。

●不能显示的字符:

空(null)字符(以'0'表示)、警告(以'\a'表示)、退格(以'\b'表示)、回车(以'\r'表示)等。

5、最常用的算术运算符

运算符

含义

举例

结果

+

正号运算符(单项运算符)

+a

a的值

-

负号运算符(单项运算符)

-a

a的算数负值

*

乘法运算符

a*b

a和b的乘积

/

除法运算符

a/b

a除b的商

%

求余运算符

a%b

a除b的余数

+

加法运算符

a+b

a和b的和

-

减法运算符

a-b

a和b的差

6、自增、自减运算符

作用是使变量的值加1或减1(++i、--i、i++、i--)

例如:

a的初始值为3,

(a++)+(a++)+(a++)=9

(++a)+(++a)+(++a)=18

7、运算符的优先级(详见第四章)与结合性

自左向右(又称“左结合性”,即运算对象先与左面的运算符结合):

算数运算符

结合性

自右向左(即右结合性):

赋值运算符

8、不同类型数据间的混合运算:

编译时,从左至右扫描。

(规律:

同一个字母,用小写表示的字符的ASCII代码比大写的大32,'a'的ASCII码为97,'A'的ASCII码为65)

9、C运算符

除了算数运算符外,C还提供其他运算符,共有以下几类:

(1)算术运算符(+-*/++--)

(2)关系运算符(> < == <= >=  !

=)

(3)逻辑运算符(!

&&||)

(4)位运算符(针对二进制的运算)(<<>>~|^&)

例如:

&&和&

2&&0=02&&3=1(非零即为1)

2&3=2(2:

0103:

011010&011=010)

(5)赋值运算符(=及其扩展赋值运算符)

(6)条件运算符(?

(7)逗号运算符(优先级最低)(,)

(8)指针运算符(*和&)

(9)求字节数运算符(sizeof)

(10)强制类型转换运算符((类型))

(11)成员运算符(.->)

(12)下标运算符([])

(13)其他

10、用printf函数输出数据

Printf函数的一般格式为:

printf(格式控制、输出列表)

Printf函数的一般形式可以表示为:

printf(参数1,参数2,...,参数n)

11、用scanf函数输出数据

Scanf函数的一般形式:

scanf(格式控制,地址列表)

12、用putchar函数输出一个字符,puts输出一个字符串

Putchar函数的一般形式为:

putchar(c)

用getchar函数输入一个字符,gets输入一个字符串

Getchar函数的一般形式为:

getchar()

第4章选择结构程序设计

1、if语句的一般形式:

if(表达式)语句1

[else语句2]

方括号内的部分(即else子句)为可选的,即可有可无。

嵌套(就近原则,向上就近且为配套的)

2、关系运算符及其优先次序

C语言提供6种关系运算符:

(1)

<(小于)算术运算符(高)

(2)<=(小于或等于)优先级相同(高)

(3)>(大于)关系运算符

(4)>=(大于或等于)

(5)

==(等于)优先级相同(低)赋值运算符(低)

(6)!

=(不等于)

3、逻辑运算符及其优先次序

运算符

含义

举例

说明

&&

逻辑与

a&&a

如果a和b都为真,则结果为真,否则为假

||

逻辑或

a||a

如果a和b有一个以上为真,则结果为真,二者都为假时,结果为假

!

逻辑非

!

a

如果a为假,则!

a为真,如果a为真,则!

a为假

(非)(高)

算术运算符

关系运算符

&&和||

赋值运算符(低)

4、条件表达式的一般形式:

表达式1?

表达式2:

表达式3

真(非0)假(0)

5、例题:

输入一个字符,判别它是否为大写字母,如果是,将它转化为小写字母;如果不是,不转换。

然后输出最后得到的字符。

(p99例4.4)(重点掌握大小写的转换)

解题思路:

用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换。

编写程序:

#include

intmain()

{

charch;

scanf("%c",&ch);

ch=(ch>='A'&&ch<='z')?

(ch+32):

ch;//或ch=(ch<=65&&ch<=90)?

(ch+32):

ch;

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

return0;

}

运行结果:

A

a

输入大写字母A,输出小写字母a。

6、有三个整数a,b,c,由键盘输入,输出其中最大的数。

(P112T4)

程序如下:

#include

intmain()

{

inta,b,c;

printf("请输入三个数:

");

scanf("%d,%d,%d",&a,&b,&c);运行结果:

if(a

12,34,9

if(b

printf("max=%d\n",c);

else

printf("max=%d\n",b);

elseif(a

printf("max=%d\n",c);

else

printf("max=%d\n",a);

return0;

}

方法二:

使用条件表达式:

#include

intmain()

{inta,b,c,temp,max;

printf("请输入三个数:

");

scanf("%d,%d,%d",&a,&b,&c);

temp=(a>b)?

a:

b;//将a和b中的大者放入temp中

max=(temp>c)?

temp:

c;//将a和b中的大者和c比较,取最大者

printf("三个整数中最大数是%d\n",max);

return0;

}

7、给一个不多余5位的正整数,要求:

1 求出它是几位数;

2 分别输出每一位数字;

3 按逆序输出各位数字,如原数为234,应输出321。

(P113T9)

解:

程序如下:

#include

#include

intmain()

{

intnum,indiv,ten,hundred,thousand,ten_thousand,place;

printf("请输入一个整数(0-99999):

");

scanf("%d",&num);

if(num>9999)

place=5;

elseif(num>999)

place=4;

elseif(num>99)

place=3;

elseif(num>9)

place=2;

elseplace=1;

printf("位数:

%d\n",place);

printf("每位数字为:

");

ten_thousand=num/10000;

thousand=(int)(num-ten_thousand*10000)/1000;

hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;

ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;

indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);

switch(place)

{case5:

printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);

printf("\n反序数字为:

");

printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);

break;

case4:

printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);

printf("\n反序数字为:

");

printf("%d%d%d%d\n",indiv,ten,hundred,thousand);

break;

case3:

printf("%d,%d,%d",hundred,ten,indiv);

printf("\n反序数字为:

");

printf("%d%d%d\n",indiv,ten,hundred);

break;

case2:

printf("%d,%d",ten,indiv);

printf("\n反序数字为:

");

printf("%d%d\n",indiv,ten);

break;运行结果:

case1:

printf("%d",indiv);请输入一个整数(0~99999):

98423printf("\n反序数字为:

");位数:

5

printf("%d\n",indiv);每位数组为:

9,8,4,2,3

break;反序数字为:

32489

}

return0;

}

8、输入四个整数,要求按由大到小的顺序输出。

(P113T11)

程序如下:

#include

intmain()

{intt,a,b,c,d;

printf("请输入四个数:

");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(a>d)

{t=a;a=d;d=t;}

if(b>c)

{t=b;b=c;c=t;}

if(b>d)

{t=b;b=d;d=t;}

if(c>d)运行结果:

请输入四个数字:

6,8,1,4

{t=c;c=d;d=t;}a=6,b=8,c=1,d=4

printf("排序结果如下:

\n");排序结果如下:

printf("%d%d%d%d\n",a,b,c,d);1468

return0;

}

第5章循环结构程序设计

1、循环结构:

while;dowhile;for。

2、while语句:

只要当循环表达式为真(即给定的条件成立),就执行循环体语句

循环特点:

先判断条件表达式,后执行循环体语句。

一般形式:

while(表达式)语句

3、dowhile语句特点:

无条件地执行循环体,然后判断循环条件是否成立。

一般形式:

do

语句

while(表达式)

4、for语句一般形式:

for(表达式1;表达式2;表达式3)

语句

3个表达式的主要作用:

表达式1:

设置初始条件,只执行一次。

表达式2:

是循环条件表达式,用来判断是否继续循环。

在每次执行循环体前先执行此表达式,决定是否继续执行循环体。

表达式3:

作为循环的调整。

即:

for(循环变量赋初值;循环条件;循环变量增值)

语句

说明:

for(表达式1;表达式2;表达式3)语句

可以该写为while循环的形式:

while表达式2

语句

表达式3

5、集中循环的比较:

1)3种循环都可以用来处理同一问题,一般情况下可以相互代替。

2)在while循环和do...while循环中,只在while后面的括号内制定循环条件,因此为了使循环能正常结束,应在循环体中包含是循环趋于结束的语句。

for循环可以在表达式3中包含使循环区域结束的操作,甚至可以将循环体中的操作全部放到表达式3中。

因此,for语句的功能能强,凡能用while循环能完成的,用for循环都能实现。

3)用while和dowhile循环时,循环变量初始化的操作应在while和do...while语句完成之前完成。

而for语句可以在表达式1中实现循环变量的初始化。

4)While循环、do...while循环和for循环,都可以用break语句跳出循环,用continue语句结束本次循环。

6.break语句和continue语句的区别:

Continue语句只结束本次循环而不是终止整个循环的执行。

而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

7、P128例题5.6程序语句:

if(n%5==0)printf("\n")控制在输出5个数据后换行。

8、输入两个正数m和n,求其最大公约数和最小公倍数。

(P140T3)

#include

intmain()

{

intp,r,n,m,temp;

printf("请输入两个正整数n,m:

");

scanf("%d,%d",&n,&m);

if(n

{

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!

=0)

{

r=n%m;

n=m;

m=r;

}运行结果:

printf("它们的最大公约数为:

%d\n",n);请输入两个正整数n,m:

35,49

printf("它们的最小公倍数为:

%d\n",p/n);他们的最大公约数是:

7

return0;他们的最小公倍数是:

245

}

9、输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.(P140T4!

!

重点)

程序如下:

#include

intmain()

{

charc;

intletters=0,space=0,digit=0,other=0;

printf("请输入一行字符:

\n");

while((c=getchar())!

='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z')运行结果:

letters++;请输入一行字符:

elseif(c=='')Iamastudent.

space++;字母数:

11

elseif(c>='0'&&c<='9')空格数:

3

digit++;数字数:

0

Else其他字符:

1

other++;

}

printf("字母数:

%d\n空格数:

%d\n数字数:

%d\n其他字符数数:

%d\n",letter,apace,digit,other);

return0;

}

10、求

,即1+2!

+3!

+4!

+…+20!

.(P140T6,重点掌握求一个数的阶乘)

程序如下:

#include

main()

{

doubles=0,t=1;

intn;

for(n=1;n<=20;n++)

{

t=t*n;

s=s+t;

}运行结果:

printf("1!

+2!

+…+20!

=%22.15e\n",s);1!

+2!

+…+20!

=2.561327494111820e+018

return0;

}

11、一个数恰好等于它的因子之和,这个数就称为完数。

例如,6的因子为1,2,3,而6=1+2+3,因此6是完数。

编程找出1000以内的所有完数,并按下面的格式输出其因子:

(P141T9)

6itsfactorsare1,2,3

程序如下:

#defineM1000//定义寻找范围

#include

intmain()

{

intk1,k2,k3,k4,k5,k6,k7,k8,k9,k10;

inti,a,n,s;

for(a=2;a<=M;a++)//a是2~1000之间的整数,检查它是否完数

{n=0;//n用来积累a的因子个数

s=a;//s用来存放尚未求出的因子之和,并开始等于a

for(i=1;i

if(a%i==0)//如果i是a的因子

{n++;//n加一表示新找到一个因子

s=s-i;//s减去已找到的因子,s的新值是尚未求出的因子之和

switch(n)//将找到的因子赋给k1~k9,或k10

{case1:

k1=i;break;//找出第1个因子赋值给k1

case2:

k2=i;break;//找出第2个因子赋值给k2

case3:

k2=i;break;//找出第3个因子赋值给k3

case4:

k4=i;break;//找出第4个因子赋值给k4

case5:

k5=i;break;//找出第5个因子赋值给k5

case6:

k6=i;break;//找出第6个因子赋值给k6

case7:

k7=i;break;//找出第7个因子赋值给k7

case8:

k8=i;break;//找出第8个因子赋值给k8

case9:

k9=i;break;//找出第9个因子赋值给k9

case10:

k10=i;break;//找出第10个因子赋值给k10

}

}

if(s==0)

{

printf("%d,itsfactorsare",a);

if(n>1)printf("%d,%d",k1,k2);//n>1表示a至少有2个因子

if(n>2)printf(",%d",k3);//n>2表示至少有3个因子,故再输出一个因子

if(n>3)printf(",%d",k4);//n>3表示至少有4个因子,故再输出一个因子

if(n>4)printf(",%d",k5);//以下类推

if(n>5)printf(",%d",k6);

if(n>6)printf(",%d",k7);

if(n>7)printf(",%d",k8);

if(n>8)printf(",%d",k9);

if(n>9)printf(",%d",k10);

printf("\n");运行结果:

}

}6,itsfactorsare1,2,3

return0;28,itsfactorsare1,2,4,7,14

}496,itsfactorsare1,2,4,8,16,31,62,124,248

方法二:

#include

intmain()

{intm,s,i;

for(m=2;m<1000;m++)

{s=0;

for(i=1;i

if((m%i)==0)s=s+i;

if(s==m)

{printf("%d,itsfactorsare",m);

for(i=1;i

if(m%i==0)printf("%d",i);

printf("\n");

}

}

return0;

}

第6章利用数组处理批量数据

1、定义一维数组的一般形式为:

类型符数组名[常量表达式]

注意:

下标从0开始,常量表达式中可以包括常量和符号常量,不能包含变量。

2、应用数组元素的表示形式为:

数组名[下标]

注意:

只能引用数组元素而不能一次整体调用整个数组的全部元素的值。

3、对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。

(P144例题6.1)

程序如下:

#include

intmain()

{

inti,a[10];

for(i=0;i<=9,i++)

a[i]=i;

for(i=9;i>=0,i--)运行结果:

pri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1