c语言复习纲要.docx

上传人:b****8 文档编号:10879108 上传时间:2023-02-23 格式:DOCX 页数:17 大小:19.11KB
下载 相关 举报
c语言复习纲要.docx_第1页
第1页 / 共17页
c语言复习纲要.docx_第2页
第2页 / 共17页
c语言复习纲要.docx_第3页
第3页 / 共17页
c语言复习纲要.docx_第4页
第4页 / 共17页
c语言复习纲要.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

c语言复习纲要.docx

《c语言复习纲要.docx》由会员分享,可在线阅读,更多相关《c语言复习纲要.docx(17页珍藏版)》请在冰豆网上搜索。

c语言复习纲要.docx

c语言复习纲要

2013程序设计复习

考试题型

判断、单选、读程序写结果、程序填空、编程题

一、绪论

1.C程序的基本结构

一个main函数和若干个其他函数构成

2.C程序的运行步骤(两种集成开发环境)

编辑、编译、连接、运行

3.保留字、标识符

保留字(32个):

系统规定,有特定含义,不能用作其他用途

标识符:

由字母或下划线开头,字母、下划线和数字构成

二、顺序结构

1.常量

整型常量12301230x123123L

字符常量‘a’

转义字符常量‘\t’‘\n’‘\\’‘\123’‘\x1a’

字符串常量“12345”

实型常量123.451.5e-31.5e5

符号常量#define...

2.变量

intlongshortunsignedcharfloatdouble

指针变量、枚举变量

例:

enumcolor{red,yellow,blue,white,black};

enumcolorx,y,z;

x=red;y=blue;

构造类型的变量:

数组、结构、联合

3.表达式

算术表达式(+-*/%++--)

例:

(-b+sqrt(b*b-4*a*c))/(2*a)

关系表达式(<<=>>===!

=)

例:

A+b>=c

逻辑表达式(!

&&||)

a&&b&&c

A||B||C

例1:

设有以下程序段

intx=2,y=2,z=0,a;

a=++x||++y&&z++;

printf(“%d,%d,%d\n”,x,y,z);

执行后输出的结果是:

3,2,0

2.以下程序的输出结果是__1__。

main()

{inta=4,b=5,c=0,d;

d=!

a&&!

b||!

c;

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

}

条件表达式(?

:

例:

Max=x>y?

x:

y

逗号表达式,

例:

A=(3+x,x+7,x+y+z);

位运算表达式(&|^~<<>>)

例:

C=a^b

赋值表达式=

例:

x=(1+2)*3/8/4;

复合赋值表达式(+=-=*=/=%=&=|=^=~=<<=>>=)

例:

X+=yw&=zt*=x+y

4.输入输出函数

Ch=getch()输入字符,不在屏幕显示

Ch=getchar()输入字符,在屏幕显示

gets(ch)输入字符串,在屏幕显示

scanf(“格式控制”,地址列表)任意类型数据输入

putchar(ch)输出字符

puts(ch)输出字符串

printf(“格式控制”,变量列表)任意类型数据输出

输出格式如下:

%d%md%-md

%o%x%u%ld%hd

%c%s%f%e%lf%le

三、分支结构

1.if(e)s;

例:

scanf(“%d”,&x);

if(x>=0)printf(“x=%d\n”,x);

2.if(e)s1;elses2;

例:

scanf(“%d”,&x);

if(x>=0)y=x;elsey=-x;

printf(“y=%d\n”,y);

3.if的嵌套

例:

输入成绩,输出等级

scanf(“%f”,&x);

if(x>=90)y=’A’

elseif(x>=80)y=’B’;

elseif(x>=70)y=’C’;

elseif(x>=60)y=’D’;

elsey=’E;

printf(“y=%c\n”,y);

也可以改成下面形式:

scanf(“%f”,&x);

if(x>=60)

if(x>=70)

if(x>=80)

if(x>=90)y=’A’;

elsey=’B’;

elsey=’C’;

elsey=’D’;

elsey=’E’;

printf(“y=%c\n”,y);

4.switch结构(注意使用break与不使用break的区别)

例:

输入成绩,输出等级

scanf(“%f”,&x);

k=x/10;

switch(k)

{caes9:

case10:

y=’A’;break;

case8:

y=’B’;break;

case7:

y=’C’;break;

case6:

y=’D’;break;

default:

y=’E’;

}

printf(“y=%c\n”,y);

例1:

有以下程序

main()

{inti;

for(i=0;i<4;i++)

switch(i)

{case0:

printf("%d",i);

case2:

printf("%d",i);

default:

printf("%d",i);

}

}

程序运行后的输出结果是_0001223___。

5.break(退出switch语句)

四、循环结构

1.while(e)s;

2.for(e1;e2;e3)s;

例:

求s=1-1/2+1/3-1/4+1/5-1/6+…前10项之和

main()

{floats=0,t;

intI,p=1;

For(i=1;i<=10;i++)

{t=1.0*p/i;

S=s+t;

p=-p;

}

printf(“s=%f\n”,s);

}

3.doswhile(e)

break(提前结束本循环)

continue(提前结束本次循环,继续下一次循环)

goto(无条件转向)

4.循环嵌套

例1:

#include

main()

{intk=1,m=2,i,j;

for(i=0;i<3;i++)

{for(j=0;j<4;j++)

k++;

k=k-j;

}

m=i+j;

printf("m=%d\n",k);

}

结果为:

m=1

五、函数与宏定义

1.函数定义

类型函数名(形参及类型说明)

{局部变量及类型说明;

语句;

Return表达式;}

2.函数声明类型函数名(形参及类型说明);

3.函数调用

变量名=函数名(实际参数);

函数名(实际参数);

4.函数返回值return

例1:

求指定范围内的素数

#include

intisprime(intx);

voidmain()

{

inti;

for(i=10;i<=20;i++)

if(isprime(i))

printf(“%d“,i);

}

intisprime(intx)

{

inti;

for(i=2;i

if(x%i==0)

return0;

return1;

}

结果:

11,13,17,19

5.局部变量和全局变量

全局变量:

函数外定义,有效范围从定义位置开始到原文件结束

局部变量:

函数内定义,有效范围从定义位置开始到该函数结束

6.变量的存储类别

全局变量:

externstatic局部变量:

autoregisterstatic

7.函数的递归和嵌套

例,求组合数c(m,n)

#include

intjiechen(intn)

{inti;

if(n==0||n==1)i=1;

elsei=n*jiechen(n-1);

returni;

}

intcmn(intm,intn)

{returnjiechen(m)/(jiechen(n)*jiechen(m-n)) ;}

main()

{intm,n,t;

scanf(\“ %d%d ”,&m,&n) ;

t=cmn(m,n) ;

printf(“%d\n”,t) ;

}

8.预处理

宏定义:

#define

文件包含:

#include

六、数组

1.一维数组的定义和使用

inta[10];

2.一维数组的初始化

floatb[6]={1,2,3,4,5,6};

3.一维数组应用(冒泡排序、选择排序)

例1:

实参与形参中:

单向值传递和双向地址传递举例

#include"stdio.h"

voidaaa(inta[2],intb,int*c);

main()

{intw[2]={10,20},x=30,y=40,*z=&y;

aaa(w,x,z);

printf("%d%d%d%d\n",w[0],w[1],x,y);

}

voidaaa(inta[2],intb,int*c)

{a[0]++;a[1]++;b++;(*c)++;}

结果:

11213041

例2:

用数组产生一批随机数并排序

//冒泡排序

#include

#include

#include

voidran(inta[],intn)

{intj

srand(time(NULL));

for(i=0;i

a[i]=rand()%1000;

}

voidbubsort(inta[],intn)

{intj,i,k;

for(i=0;i

for(j=n-1;j>=i+1;j++)

if(a[j]

{k=a[j];a[j]=a[j-1];a[j-1]=k;}

}

main()

{inta[20],k ;

ran(a,20) ;//产生20个随机数

bubsort(a,20) ;//冒泡排序

for(k=0;k<20;k++)//输出排序后的结果

printf(“%d“,a[k]);

}

//选择排序

#include

#include

#include

voidran(inta[],intn)

{intj

srand(time(NULL));

for(i=0;i

a[i]=rand()%1000;

}

voidbubsort(inta[],intn)

{intj,i,k,t;

for(i=0;i

{k=i;

for(j=i+1;j

if(a[j]

{t=a[i];a[i]=a[k];a[k]=t;}

}

main()

{inta[20],k ;

ran(a,20) ;//产生20个随机数

bubsort(a,20) ;//选择排序

for(k=0;k<20;k++)//输出排序后的结果

printf(“%d“,a[k]);

}

4.多维数组的定义和使用

intx[3][4];

例如,输出x及x的转置

5.多维数组的初始化

intx[3][4]={{1},{2},{3}};

例3:

矩阵的转置

#include

main()

{inta[4][3],i,j,b[3][4];

for(i=0;i<4;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

for(i=0;i<3;i++)

for(j=0;j<4;j++)

b[i][j]=a[j][i];

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

printf("%d",a[i][j]);

printf("\n");

}

}

6.字符数组的定义和使用

chara[10];

7.字符数组的初始化

chary[5]={‘a’,’b’,’c’,’d’};

charz[5]= “abcd “;

8.字符数组和字符串的关系

chara[30];inti;

scanf(“%s”,a)或gets(a)

或for(i=0;i<30;i++)scanf(“%c”,&a[i])

9.字符串的标准函数

getsputsstrlenstrcpystrcmp

举例

10.数组名作函数中的形参双向传地址

七、指针

1.变量的指针intj,*p=&j

2.一维数组的指针

以下语句执行完成之后的结果是:

12

inta[5]={1,2,3,4,5},*p=a,b;

b=*p++;

printf(“%d%d\n”,b,*p);

3.指针数组int*p[n];

4.指向具有n个元素的一维数组指针int(*p)[n];

5.指针作函数中形参双向传地址

八、构造类型

1.结构类型定义

struct类型名

{类型分量名;

};

2.结构体的嵌套

3.结构类型变量的定义和使用、初始化

下述程序的输出结果是 (   ) 。

#include

voidmain()

{structcomplex

{intx;

inty;

}cnum[2]={1,3,2,7};

printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);

}

A、0B、1C、3D、6

例1:

定义一个学生结构体,包含:

姓名、三门课成绩、三门课平均成绩。

从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。

structstu

{charname[20];

floats[3];

floataver;

};

main()

{structstua[5];

inti,j;

floats;

for(i=0;i<5;i++)

{scanf(“%s”,a[i].name);

s=0;

for(j=0;j<3;j++)

{scanf(“%f”,&a[i].s[j]);

s=s+a[i].s[j];}

a[i].aver=s/3;

}

for(i=0;i<5;i++)

{printf(“%s“,a[i].name);

for(j=0;j<3;j++)

printf(“%f“,a[i].s[j]);

printf(“%f\n”,a[i].aver);

}

}

4.结构类型的指针

structstus,*p=&s;

(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).aver

p->namep->s[0]p->s[1]p->s[2]p->aver

5.联合类型

例1、下面的运行结果是:

20,x

#include

structn_c

{intx;

charc;

};

voidfunc(structn_cb)

{b.x=15;

b.c='A';

}

voidmain()

{structn_ca={20,'x'};

func(a);

printf("%d,%c\n",a.x,a.c);

}

九、文件

1.文件的基本概念

2.文件的打开方式wrawbrbabw+wb+

3.文本文件的读写

#include

#include

voidmain()

{

FILE*fp;

charch;

fp=fopen(“aaa.txt”,”w”);

if(fp==NULL)exit(0);

while((ch=getchar())!

=’\n’)

fputc(ch,fp);

fclose(fp);

}

一十、位运算

(略)

分析运行结果

1.

#include

#defineN4

voidfun();

main()

{inti;

for(i=1;i

fun();

}

voidfun()

{staticinta;

intb=3;

printf("(%d,%d)\n",a+=2,a*b);

}

运行结果:

(2,0)

(4,6)

(6,12)

2.

#include

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10};

intb[10]={10,9,8,7,6,5,4,3,2,1};

inti,j;

for(i=0,j=9;i<10&&j>0;i+=5,j-=5)

printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);

}

运行结果

a[1]*b[1]=1

a[6]*b[6]=36

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

当前位置:首页 > 法律文书 > 调解书

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

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