C语言期末考试复习提纲.docx
- 文档编号:23191929
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:148
- 大小:52.15KB
C语言期末考试复习提纲.docx
《C语言期末考试复习提纲.docx》由会员分享,可在线阅读,更多相关《C语言期末考试复习提纲.docx(148页珍藏版)》请在冰豆网上搜索。
C语言期末考试复习提纲
C语言期末考试复习提纲
一、题型
一、单项选择题(本题总分50分,每小题2分)
二、填空题(本题总分20分,每空2分)(含有程序填空)
三、程序分析题(本题总分10分,每小题5分)
四、编程题(本题总分20分,每小题10分)
二、知识点
70%范围在练习册中,并且集中在前三大题里。
第1章:
C语言程序的基本结构
C语言字符集、标识符与关键字
第2章:
C语言的基本数据类型、常量与变量、运算符与表达式
数据类型的转换
第3章:
C语言的基本语句;数据输入与输出
关系运算符与关系表达式、逻辑运算符与逻辑表达式
If语句、switch语句、选择结构的嵌套
while和dowhile语句
for语句
break、continue语句
循环的嵌套
第4章:
函数的定义与调用、函数的递归调用
变量作用域与存储方式
编译预处理(只考宏替换)
第5章:
一维数组、二维数组的定义和引用
字符数组与字符串
第6章:
指针变量的定义和使用,一维数组的指针、字符指针(小题)
第7章:
结构体类型的定义、结构体变量定义和使用(小题)
位运算(小题)
第8章:
标准文件操作(小题)
三、要求掌握的算法(编程)
1、分段函数、最大公约数、最小公倍数、数字串拆分、选择法排序、冒泡法排序、顺序查找、求最大值最小值、求奇数或偶数和、多项式求和、穷举法、素数、完数、水仙花数、大小写字母转换、阶乘、九九乘法表、整除问题、统计字符串中单词个数或字母或数字出现次数。
2、对二维数组各行、各列排序,求周边元素之和或最大最小值。
注意:
1、表达式计算:
尤其是赋值表达式、逗号表达式、逻辑表达式
2、选择结构中的条件,循环的起始、终止条件
必做题:
上机实验一至八全部及练习册中以下部分
第1章全部
第2章一、1,2,5,8,9,10,13,15,16,21,22,24,25,31,32,34,35
二、6,8,10,12,14
三、2,3,5,6
第3章
第1节一、1,2,3,8,10,12,13,16,17,21,22,28,29
二、3,5,7,9,13
三、2,4,6
四、1,2,6
第2节一、2,4,7,8,10,15,16,18,20,21,23,25,26,27
二、2,4,6,8,10,15,17,18
三、2,4,7,8,10,11
四、1,3,4,6,7
第3节一、2,4,5,8,10,12,14,15,17,19,21,25,30,34
二、1,2,4,5,7,8,9,11,12,15
三、1,3,4
四、2,4,6,8,10,11
第4章一、1,3,4,6,8,10,13,14,15,16,22,23,24,25,26
二、1,2,4,5,7,8,14,16
三、1,2,4
第5章一、1,2,3,7,11,12,13,17,18,20,22,23,27,29,39,40
二、2,8,9,10,11,12
三、2,4,7,8
第6章一、1,2,3,15,16,18,22,23
二、1,2,3,4,8
三、1,3
第7章一、2,3,4,732,33,35,36
第8章一、1,2,3,4,8,10
二、1,2,3
下列给定程序中,函数fun的功能是:
计算S=f(-n)+f(-n+1)+…+f(0)+f
(1)+f
(2)+…f(n)的值。
例如,当n为5时,函数值应为10.407143。
f(x)函数定义如下:
f(x)=
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
#include
/*************found**************/
f(doublex)
{
if(x==0.0||x==2.0)
return0.0;
elseif(x<0.0)
return(x-1)/(x-2);
else
return(x+1)/(x-2);
}
doublefun(intn)
{
inti;doubles=0.0,y;
for(i=-n;i<=n;i++)
{y=f(1.0*i);s+=y;}
/*************found**************/
returns
}
voidmain()
{system("CLS");
printf("%f\n",fun(5));
}
【参考答案】
(1)错误:
f(doublex)正确:
doublef(doublex)
(2)错误:
returns正确:
returns;
t=1+1/2+1/3+1/4+…+1/m
例如,若输入5,则应输出2.283333。
请改正程序中的错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
doublefun(intm)
{
doublet=1.0;
intI;
for(I=2;I<=m;I++)
/*************found**************/
t+=1.0/k;
/*************found**************/
returnI;
}
voidmain()
{intm;
system("CLS");
printf("\nPleaseenter1integernumber:
");
scanf("%d",&m);
printf("\nTheresultis%1f\n",fun(m));
}
【参考答案】
(1)错误:
t+=1.0/k;正确:
t+=1.0/I;
(2)错误:
returnI;正确:
returnt;
下列给定程序中,函数fun的功能是:
分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s输入:
AaaaBBb123CCccccd,则应输出结果:
upper=5,lower=9。
请改正程序中的错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
/*********found***********/
voidfun(char*s,inta,intb)
{
while(*s)
{
/*********found***********/
if(*s>='A'&&*s<='Z')
a++;
/*********found***********/
if(*s>='a'&&*s<='z')
b++;
s++;
}
}
main()
{
chars[100];
intupper=0,lower=0;
printf("\npleaseastring:
");
gets(s);
fun(s,&upper,&lower);
printf("\nupper=%dlower=%d\n",upper,lower);
}
【参考答案】
(1)错误:
voidfun(char*s,inta,intb)
正确:
voidfun(char*s,int*a,int*b)
(2)错误:
a++;正确:
(*a)++;
(3)错误:
b++;正确:
(*b)++;
下列给定程序中函数fun的功能是:
计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
longfun(longnum)
{
/*************found**************/
longk;
do
{
k*=num%10;
/*************found**************/
num\=10;
}while(num);
return(k);
}
main()
{
intn;
printf("\Pleaseenteranumber:
");
scanf("%ld",&n);
printf("\n%ld\n",fun(n));
}
【参考答案】
(1)错误:
longk;正确:
longk=1;
(2)错误:
num\=10;正确:
num/=10;
下列给定程序中函数fun的功能是:
计算n!
。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
doublefun(intn)
{doubleresult=1.0;
/*************found**************/
ifn==0
return1.0;
while(n>1&&n<170)
/*************found**************/
result=n--;
returnresult;
}
voidmain()
{
intn;
printf("InputN:
");
scanf("%d",&n);
printf("\n\n%d!
=%lf\n",n,fun(n));
}
【参考答案】
(1)错误:
ifn==0正确:
if(n==0)
(2)错误:
result=n--;正确:
result*=n--;
下列给定的程序中,函数fun的功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入,若k的值为500,则函数的值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
intfun(intk)
{intm=0,mc=0,j;
while((k>=2)&&(mc<10))
{
/*************found**************/
if((k%13=0)||(k%17=0))
{m=m+k;mc++;}
k--;
/*************found**************/
returnm;
}
voidmain()
{system("CLS");
printf("%d\n",fun(500));
}
【参考答案】
(1)错误:
if((k%13=0)||(k%17=0))
正确:
if((k%13==0)||(k%17==0))
(2)错误:
缺少大括号正确:
加}
下列给定程序中,函数fun()的功能是:
根据整型形参m的值,计算如下公式的值:
请改正函数fun()中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
doublefun(intm)
{doubley=1.0;
intI;
/*************found**************/
for(I=2;I /*************found**************/ y-=1/(I*I); return(y); } voidmain() {intn=5; system("CLS"); printf("\nTheresultis%1f\n",fun(n)); } 【参考答案】 (1)错误: for(i=2;i 正确: for(i=2;i<=m;i++) (2)错误: y-=1/(i*i); 正确: y-=1.0/(i*i); 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。 下列给定程序中,函数fun的功能是: 计算数组元素中值为正数的平均值(不包括0)。 例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include doublefun(intx[]) { /*************found**************/ intsum=0.0; intc=0,I=0; while(x[I]! =0) { if(x[I]>0) { sum+=x[I]; c++; } I++; } /*************found**************/ sum=sum\c; returnsum; } 【参考答案】 (1)错误: intsum=0.0;正确: doublesum=0.0; (2)错误: sum\=c;正确: sum/=c; 下列给定程序中,函数fun的功能是: 判断一个整数m是否是素数,若是返回1,否则返回0。 在main函数中,若fun()返回1则输出"YES",若fun()返回0则输出"NO! "。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include intfun(intm) {intk=2; while(k<=m&&(m%k)) /*************found**************/ k++ /*************found**************/ if(m=k) return1; elsereturn0; } voidmain() {intn; system("CLS"); printf("\nPleaseentern: "); scanf("%d",&n); if(fun(n))printf("YES\n"); elseprintf("NO! \n"); } 【参考答案】 (1)错误: k++正确: k++; (2)错误: if(m=k)正确: if(m==k) 下列给定程序中,函数fun的功能是: 按如下递归公式求函数值。 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include /*************found**************/ intfun(n) { intc; /*************found**************/ if(n=1) c=10; else c=fun(n-1)+2; return(c); } voidmain() { intn; printf("Entern: "); scanf("%d",&n); printf("Theresult: %d\n\n",fun(n)); } 【参考答案】 (1)错误: intfun(n)正确: intfun(intn) (2)错误: if(n=1)正确: if(n==1) 下列给定程序中,函数fun的功能是: 用递归算法计算斐波拉契级数列中第n项的值。 从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项的斐波拉契级数值为13。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include longfun(intg) { /*************found**************/ switch(g); {case0: return0; /*************found**************/ case1;case2: return1; } return(fun(g-1)+fun(g-2)); } voidmain() { longfib;intn; printf("Inputn: ");scanf("%d",&n); printf("n=%d\n",n); fib=fun(n); printf("fib=%d\n\n",fib); } 【参考答案】 (1)错误: switch(g);正确: 去掉分号 (2)错误: case1;case2: return1; 正确: case1: case2: return1; 下列给定程序中,函数fun的功能是: 求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #defineN20 /*************found**************/ voidfun(int*a,intn); { intI,m,t,k; for(I=0;I { /*************found**************/ m=0; for(k=I+1;k if(a[k]>a[m]) m=k; t=a[I]; a[I]=a[m]; a[m]=t; } } main() { intb[N]={11,5,12,0,3,6,9,7,10,8},n=10,i; system("CLS"); for(i=0;i printf("%d",b[i]); printf("\n"); fun(b,n); for(i=0;i printf("%d",b[i]); printf("\n"); } 【参考答案】 (1)错误: voidfun(int*a,intn); 正确: voidfun(int*a,intn) (2)错误: m=0;正确: m=i; 下列给定程序中,函数fun的功能是: 将十进制正整数m转换成进制数,并按位输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正函数fun中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /*************found**************/ voidfun(intm,intk); {intaa[20],i; for(i=0;m;i++) { /*************found**************/ aa[i]=m/k; m/=k; } for(;i;i--) /*************found**************/ printf("%d",aa[i]); } main() { intb,n; printf("\nPleaseenteranumberandabase: \n"); scanf("%d%d",&n,&b); fun(n,b); printf("\n"); } 【参考答案】 (1)错误: voidfun(intm,intk); 正确: voidfun(intm,intk) (2)错误: aa[i]=m/k; 正确: aa[i]=m%k; (3)错误: printf("%d",aa[i]); 正确: printf("%d",aa[i-1]); 下列给定程序中,函数fun的功能是: 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。 其中x和y不相等,z和y不等。 例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include /*************found**************/ #defineFU(m,n)(m/n) floatfun(floata,floatb,floatc) {floatvalue; value=FU(a+b,a-b)+FU(c+b,c-b); /*************found**************/ return(Value); } voidmain() {floatx,y,z,sum; printf("Inputxyz: : "); scanf("%f%f%f",&x,&y,&z); printf("x=%f,y=%f,z=%f\n",x,y,z); if(x==y||y==z) {printf("Dataerror! \n"); exit(0);} sum=fun(x,y,z); printf("Theresultis: %5.2f\n",sum); } 【参考答案】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末考试 复习 提纲
![提示](https://static.bdocx.com/images/bang_tan.gif)