《C语言程序设计I》期末复习DOC.docx

上传人:b****2 文档编号:1162081 上传时间:2023-04-30 格式:DOCX 页数:20 大小:43KB
下载 相关 举报
《C语言程序设计I》期末复习DOC.docx_第1页
第1页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第2页
第2页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第3页
第3页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第4页
第4页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第5页
第5页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第6页
第6页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第7页
第7页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第8页
第8页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第9页
第9页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第10页
第10页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第11页
第11页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第12页
第12页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第13页
第13页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第14页
第14页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第15页
第15页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第16页
第16页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第17页
第17页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第18页
第18页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第19页
第19页 / 共20页
《C语言程序设计I》期末复习DOC.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《C语言程序设计I》期末复习DOC.docx

《《C语言程序设计I》期末复习DOC.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计I》期末复习DOC.docx(20页珍藏版)》请在冰点文库上搜索。

《C语言程序设计I》期末复习DOC.docx

《C语言程序设计I》期末复习DOC

《C语言程序设计I》期末复习

一、复习内容:

⏹第1讲程序设计与C语言

●C语言的特点;

●C语言程序的基本结构:

头文件、main()函数、scanf语句、数据处理语句、printf语句、注释等;

●C程序的运行环境和运行方法。

⏹第2讲数据类型和表达式

●数据类型:

不同性质数据类型需用不同数据类型来表示,int、short、long、char、float、doublet等常用类型占用的内存字节、数据范围(大致)、输出格式等;char与整数的运算、输出格式;浮点型数据的特点,规范化指数形式;sizeof运算符;

●常量与变量:

标识符的概念、种类、命名规则;常量的概念,不同进制的整型常量、符号常量与常变量,字符常量(格式、转义字符)、字符串常量(格式、存储方式、长度、与字符常量的比较),浮点型常量(指数形式、f后缀);变量的概念,变量名与变量值的比较,变量的定义与初始化;

●运算符与表达式:

单目、双目运算的概念;运算符分类、要点,算术运算符与表达式(重点:

/与%),自增、自减运算符与表达式(++、--、前缀与后缀的比较);数据类型的转换(自动转换、强制转换)。

⏹第3讲顺序结构

●运算符与表达式(续):

赋值运算符(一般赋值运算符与复合赋值符)与表达式;逗号运算符与表达式;数学函数的调用;程序结构与语句的分类;

●顺序结构:

算法,传统流程图和N_S流程图,程序的三种基本结构;

●数据的输入输出:

输入输出的概念,printf(),scanf(),格式控制符,字符符与字符串的输入输出。

(注:

教材“第2章算法”熟悉算法思想、流程图基本用法即可,不单独考试)

⏹第4讲选择结构

●关系运算和逻辑运算:

关系运算(运算符,运算结果,表达式,结合性,优先级,运算与反运算);逻辑运算(运算符,操作数,运算结果,表达式,运算规则,结合性,优先级,如何构造表达式,“短路”现象);

●if语句:

一般形式,单分支,双分支,多分支(if...elseif...else...和switch);

●条件运算符与条件表达式:

运算符,表达式,执行顺序;

●switch语句和break语句:

格式,break语句作用,执行顺序。

⏹第5、6讲循环结构

●循环结构:

功能、组成(循环控制部分[变量初始化、条件判断、修改变量],循环体),循环结构的流程图;

●for语句:

一般格式,执行过程,基础算法(累加、连乘积、分类统计)等,省略形式;

●while语句:

一般格式,执行过程;

●do...while语句:

一般格式,执行过程;

●三种循环的比较:

do…while与while的比较,三种循环的比较;

●不确定次数循环的执行;

●循环的跳转语句:

break语句,continue语句;

●多重循环:

形式,执行过程,使用;

●循环的应用:

迭代法,穷举法,判定素数,求最大公约数,进制转换,Fibonacci数列,译密码等。

⏹第7、8讲数组与字符串

●数组的概念:

●一维数组:

定义,元素的引用和数组初始化;

●二维数组:

定义,排列顺序,元素的引用和数组初始化;

●数组的应用:

打擂台算法,直泡排序算法,查找算法等;

●字符数组:

定义、赋值,初始化,元素引用,处理字符串时的不足之处;

●字符串:

字符串常量(概念、构成字符、作用、结束标志、存储字符串的字符数组长度要求、长度),给一维字符数组赋字符串(使用一般数组赋初值方法、给字符数组赋字符串常量,在程序执行过程中赋完所有字符后,再需人为加上串结束标志);

●字符串的输入输出:

使用“%s”格式符一次性输入、输出,gets(),puts();

●字符串处理函数:

求长度函数,字符串连接函数,字符串拷贝函数,比较函数,小大写转换函数;

●字符串的应用:

求串长度程序,字符串复制功能程序,统计字符串中单词数,字符串比较大小,选择排序算法。

⏹第9、10讲函数

●函数的基础知识:

功能,模块化程序设计思想,有关说明,函数的分类;

●函数的定义:

含义,定义的方法,空函数;

●函数的调用:

调用的一般形式,调用的3种方式,调用过程的数据传递(形参与实参结合),函数调用过程(“值传递”的单方向性),函数的返回值;

●函数的声明:

函数原型,什么情况需要条件,库函数的处理方式,编程时的一般做法;

●函数的嵌套调用:

不允许嵌套定义函数,函数嵌套调用的含义;

●函数的递归调用:

递归调用的含义,递归函数的两个组成部分(递归形式、终止条件),典型用法;

●数组名作函数参数:

数组元素作实参,数组名作函数参数,多维数组名作函数参数;

●局部变量与全局变量:

作用域的概念,局部变量,全局变量,两者的比较;

●变量的存储方式与生存期:

生存期概念,静态存储方式与动态存储方式,局部变量的存储类型,全局变量作用域的扩展与限制;

●变量定义与声明的区分;

●内部函数与外部函数:

内部函数的定义与使用,外部函数的定义与使用;

●函数的应用:

能根据要求写出相应函数,包括常用算法用函数实现,例如:

求极值、累加与均值、连乘积、冒泡排序、选择排序、素数、最大公约数与最小公倍数、十进制数与n进制数的转换等。

⏹第11讲结构体、共用体和枚举类型

●结构体:

作用,类型的定义,变量的定义,变量的初始化和使用;

●结构体数组:

概念、定义、初始化和使用;

●共用体类型:

定义的一般形式,引用共用体变量的方式;(不考试)

●枚举类型:

概念,定义格式;(不考试)

●typedef声明新类型:

功能,声明格式,命名一个新的类型名代表结构体类型,命名一个新的类型名代表数组类型。

二、需要掌握的常用算法:

●两个基本类型变量值的交换、求较大值、求较小值,两个字符串值的交换,三个值求极值;

●循环的应用:

累加与均值,连乘积,分类统计;

●循环、数组与函数的综合:

打擂台算法(求极值),冒泡排序,选择排序,求最大公约数与最小公倍数,求素数,十进制数与二进制数的相互转换等;

●字符串函数的调用与自己编写。

此外,还应熟悉函数的调用时值传递方式(值传递的单方向性;数组作参数时,形参值改变对实参的影响),结构化编程的思路(把实现一定功能的代码放在函数中,main函数应用简洁、明了)。

三、样题(与考题无必然联系,仅供参考)

单选题:

1、C语言中,运算对象必须是整型的运算符是【】

A./B.%C.++D.!

2、下列标识符中,不合法的是【】

A.x2B.sizeofC._123D.char2

3、若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为【】

A.4B.16C.32D.52

4、设有数组定义:

chara[]="China";则数组a所占的空间为【】字节

A.4B.5C.6D.7

5、设d是double型变量,若要从键盘输入数据给d,正确的语句是【】

A.scanf(d);B.scanf("%f",d) ;

C.scanf("%f",&d) ;D.scanf("%lf",&d) ;

6、以下程序段的输出结果是【】

intx=3;

do

{

printf("%d",x-=2);

}while(!

(--x));

A.1-2B.30C.1D.无输出

7、下列程序段执行之后,输出的结果是【】

doublex=4,y;

if(x<0)

y=0;

elseif(x<10)

y=1.0/x;

else

y=1;

printf("%.2f\n",y);

A.0.25B.0.50C.0.75D.1.00

8、判断字符串s1和s2是否相等的表达式是【】

A.s1=s2B.s1==s2C.strcpy(s1,s2)==0D.strcmp(s1,s2)==0

填空题

1、一个C语言程序的执行是从函数开始的。

2、结构化程序的三种基本结构是:

顺序结构、和循环结构。

3、在VC++2008环境下,C语言源程序的扩展名是_____,经过编译、链接后得到的可执行文件的扩展名是__________。

4、C语言中字符串的结束标志符是________;转义字符_______具有换行功能。

5、若a=5,b=3,则表达式a>b?

a+b:

a-b的结果是____。

6、数学式:

0

7、一个函数的原型是voidfunc(int),现要求定义一个函数指针p指向该函数,那么p的正确定义格式是___________________。

写出下列程序的运行结果

1、

#include

intmain()

{

charc1,c2;

c1='A'+'8'-'5';

c2='A'+'8'-'4';

printf("%c,%d\n",c1,c2);

return0;

}

已知字母A的ASCII码为65,程序运行后的输出结果是

2、

#include

inta=5;

voidfun(intb)

{

inta=10;

a+=b;

printf("%d,",a);

}

intmain()

{

intc=20;

fun(c);

a+=c;

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

return0;

}

程序运行后的输出结果是

3.

#include

voidbubbsort(inta[],intn)

{

inti,j,temp;

for(i=0;i

{

for(j=0;j

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

intmain()

{

intarray[]={3,15,9,6,12};

bubbsort(array,5);

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

printf("%d",array[i]);

printf("\n");

return0;

}

程序运行后的输出结果是

4.

#include

intmain()

{

intf(int);

inta=2,i;

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

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

return0;

}

intf(inta)

{

autointb=0;

staticintc=3;

b=b+1;

c=c+1;

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

return(a+b+c);

}

程序运行后的输出结果是

程序填空

以下函数的功能是:

从整型数组a中顺序查找一个整数x,数组a的元素个数为n,如果找到,就返回x在a中的下标,若未找到,则返回-1。

intsearch(inta[],intn,intx)//顺序查找函数

{

for(inti=0;

(1);i++)

if(a[i]==x)

return

(2);

return-1;

}

编程题:

1、课件第3讲例3输入三角形的三边长,求其面积

#include

#include

intmain()

{

floata,b,c,s,area;

printf("请输入三角形的三边长度:

");

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

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("三角形的三边长度:

a=%f,b=%f,c=%f\n",a,b,c);

printf("三角形的面积:

area=%f\n",area);

return0;

}

2、课件第6讲循环结

(2)例1

#include

intmain()

{

intsign=-1;

doubles=0,PI;

inti;

for(i=1;1.0/i>=1e-7;i=i+2)

{

sign=-sign;

s=s+1.0/i*sign;

}

PI=s*4;

printf("i=%d\n",i-2);

printf("PI=%10.8f\n\n",PI);

return0;

}

3、课件第6讲循环结

(2)

例2:

输入一批学生成绩,输出其中的最高分、最低分

#include

intmain()

{

intscore,min,max;

printf("请输入成绩(0--100),其它成绩结束:

");

scanf("%d",&score);

max=min=score;//min、max赋初值

while((score>=0)&&(score<=100))

{

if(score>max)

max=score;

if(score

min=score;

printf("请输入成绩(0--100),其它成绩结束:

");

scanf("%d",&score);

}

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

return0;

}

4、课件第7讲数组

例5:

已知一个int型数组,数据元素分别为{9,8,5,4,2,0}。

要求按由小到大的顺序,重新排列数组元素

#include

intmain()

{

inta[6],i,j,t;

printf("input6numbers:

\n");

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

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

printf("\n");

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

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

if(a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf("thesortednumbers:

\n");

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

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

printf("\n");

return0;

}

5、课件第8讲数组

例6选择排序

#include

#include

constintM=5;//定义常量,下同

constintN=30;

voidSelectSort(charstr[M][N])//对字符串进行选择排序函数

{

inti,j,k;

chartemp[N];//用于字符串交换时当作中间存放空间

for(i=0;i

{

k=i;//给k赋初值

for(j=i+1;j

if(strcmp(str[k],str[j])>0)//进行字符串比较

k=j;//记录较小值的位置

//利用字符串拷贝函数交换str[i]与str[k]的值

if(i!

=k)

{

strcpy(temp,str[i]);

strcpy(str[i],str[k]);

strcpy(str[k],temp);

}

}

}

intmain()

{

chars[M][N];//定义二维字符数组

inti;

printf("请输入%d个字符串:

\n");

for(i=0;i

gets(s[i]);

SelectSort(s);//调用函数进行选择排序

printf("\n排序后字符串:

\n");

for(i=0;i

puts(s[i]);

printf("\n");

return0;

}

 

6、实验_82、输入一个字符串,请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。

如下图所示:

(提示:

在教材的p385-386中有字符和字符串函数,可以直接引用。

如isalpha()判断字母函数、isdigit()判断数字函数、isspace()判断空格函数、ispunct()判断标点函数等)

#include

#include

intmain()

{

charstr[201];

printf("请输入一个长度不超过的字符串:

\n");

gets(str);

intn1,n2,n3,n4;

n1=n2=n3=n4=0;

for(inti=0;str[i];i++)

{

if(isalpha(str[i]))

n1++;

elseif(isdigit(str[i]))

n2++;

elseif(isspace(str[i]))

n3++;

elseif(ispunct(str[i]))

n4++;

}

printf("该字符串的字母个数:

%d,数字个数:

%d,空格个数:

%d,标点个数:

%d\n\n",n1,n2,n3,n4);

return0;

}

7、实验_101、编程计算数组各元素的平方和,要求如下:

(1)voidarray_input(intarray[],intn)的功能是:

输入整型数组array的各元素值,参数n是数组元素的个数;

(2)intsquare_sum(intarray[],intn)的功能是:

对整型数组array的各元素的平方求和,参数n是数组元素的个数;

(3)主函数的功能:

定义一个是长度为6的整型数组,通过调用array_input()输入各元素的值,再调用square_sum()得到各元素平方和,最后输出结果;

(4)主函数在前,上述两个函数在后面定义。

程序运行如下图所示:

#include

intmain()

{

voidarray_input(intarray[],intn);

intsquare_sum(intarrya[],intn);

inta[6];

array_input(a,6);

intarray_square_sum=square_sum(a,6);

printf("数组a的各元素平方和:

%d\n\n",array_square_sum);

return0;

}

voidarray_input(intarray[],intn)//输入数组元素的函数

{

printf("请输入整型数组的%d个元素:

\n",n);

for(inti=0;i

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

}

intsquare_sum(intarray[],intn)//计算数组元素平方和函数

{

inti;

intsum=0;

for(i=0;i

sum=sum+array[i]*array[i];

returnsum;

}

8、定义一个求最大公约数函数intgcd(intx,inty),在主函数输入两个整数,然后调用gcd()输出这两个整数的最大公约数。

(编程思路参考第6讲课件例子)。

9、定义一个将十进制数转换成十六进制数的函数voiddec_to_hex(intn),该函数的功能是将参数中的十进制数以十六进制方式输出(编程思路参考第6讲课件例子)。

在主函数输入一个十进制整数,然后调用dec2hex()输出对应的十六进制数。

程序运行结果图如下:

请根据题意及注释,填充程序所缺代码:

#include

intmain()

{

intn,rem;

________⑴__________;//dec_to_hex函数的声明

printf("Entern:

");

scanf("%d",&n);

printf("\n十进制数:

%d转换为十六进制数是:

",n);

_____⑵_______;//dec_to_hex函数的调用

printf("\n");

return0;

}

voiddec_to_hex(intn)

{

charnum[20];

intrem,i=0;

do

{

rem=n%16;//存放余数

n=n/16;

if(rem<10)

____⑶_____//10以内的数字转换成对应的字符存放在字符数组num[]中

else

___⑷_____//10以上的数字转换成对应的字符存放在字符数组num[]中

}while(n>0);

for(i=i-1;i>=0;i--)

printf("%c",num[i]);

printf("\n");

}

 

10、学生有三门课程:

语文、数学、英语,3名学生的成绩如下表所示:

姓名

语文

数学

英语

总分

张小山

86

93

82

李一宁

98

92

100

赵小蕊

78

62

90

请先定义一个结构体Student,其成员包括:

name(姓名)、chinese(语文)、math(数学)、english(英语)、total(总分),再定义一个Student类型的数组stud[3]来存放学生资料。

现欲先输入学生三门课程成绩,再计算总分,最后输出学生信息,要求用“模块化程序设计”方法来设计程序。

请根据题意、注释在代码段1-代码段5中填写程序所缺代码。

#include

//定义结构体Student,学生姓名不超过10个字符

//三门课程成绩均为百分制,只取整数

structStudent

{

//代码段1

};

intmain()

{

//定义结构体数组stud[3]

//对input()、sum()、print()三个函数进行声明

//调用input()、sum()、print()三个函数

//代码段2

return0;

}

//定义输入n名学生的姓名、三门课程成绩的函数。

一个学生数据的输入如下图所示

voidinput(Students

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2