C语言复习总结要点.docx
《C语言复习总结要点.docx》由会员分享,可在线阅读,更多相关《C语言复习总结要点.docx(26页珍藏版)》请在冰豆网上搜索。
C语言复习总结要点
C语言学习要点:
第三章
合法的标识符命名规则。
各种运算符的语法,优先级结合性。
转义字符。
输入输出概念,输入时候的分隔符,常用的输入输出格式
第四章选择
if语句switch语句
if(x=***)if(x==***)的区别
break跳出一层不能多层
第五章循环
几种循环语句要熟悉使用方法,循环嵌套
第六章数组
数组定义使用
二维数组输入输出的方法!
起泡法排序(又叫冒泡法)
字符串的灵活使用,编程的时候灵活处理
第七章函数
函数基本概念
函数原型---构造一个函数,解决一个问题
函数递归:
求阶乘,Fibonacci数列,猴子吃桃等类似的递归数列的第n项。
数组名作参数的题目
选择法排序
全局变量局部变量存储类别
局部变量对全局变量的屏蔽
被调函数里static类型的变量的值
第八章指针
灵活使用简单指针变量,即int*p;float*p;char*p;等等。
所学的所有有关指针变量的定义记住
第九章结构体和共用体
基本概念链表的操作的关键语句
第十章文件
基本概念打开关闭文件,常用的几个输入输出函数
算法:
起泡法排序,选择法排序,杨辉三角,求素数方法,最大公约数和最小公倍数方法,一维数
组的最大值,最小值平均值或求和等,二维数组的输入输出,求各种值,特殊二维数组的填充,矩
阵转置等等。
对一维数组的操作,如逆序存放,按指定要求的操作。
字符串:
逆序存放,大小写,求长度,复制,连接,等等指定的某种操作(灵活)
字符串一维数组的灵活操作,会用函数完成。
按题目的要求,用函数完成处理过程。
关系到算法的题目:
编写程序29分。
程序填空20分。
读程序也有关系,21分。
选择题,一般是基本概念。
模拟题A(闭卷考试)
一、选择题(每题2分,共20分)
1、以下不正确的C语言标识符是。
A.ABCB.abcC.a_bcD.ab.c
2、已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:
。
intk,a,b;
unsignedlongw=5;
doublex=1.422;
A.k=(a=2,b=3,a+b)B.w+=-2C.x%(-3)D.a+=a=+(b=4)*(a=3)
3、下述for循环语句。
inti,k;
for(i=0,k=-1;k=1;i++,k++)printf("****");
A.判断循环结束的条件非法B.一次也不循环
C.只循环一次D.是无限循环
4、在执行inta[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是。
A.5B.4C.2D.1
5、在C语言程序中,以下描述正确的是。
A.函数的定义和函数的调用均不可以嵌套
B.函数的定义和函数的调用均可以嵌套
C.函数的定义不可以嵌套,但函数的调用可以嵌套
D.函数的定义可以嵌套,但函数的调用不可以嵌套
6、如果在一个函数的复合语句中定义了一个变量,则该变量。
A.在该函数中任何位置都有效
B.只在该复合语句中有效,在该复合语句外无效
C.在本程序的源文件范围内均有效
D.此定义方法错误,其变量为非法变量
7、若有定义:
inta[3][4];,则不能表示数组元素a[1][1]。
A.*(a+5)B.*(a[1]+1)C.*(&a[1][1])D.(*(a+1))[1]
8、有如下程序段:
int*p,a=10,b=2;
p=&a;a=*p+b;
执行该程序段后,a的值是。
A、12B、11C、10D、编译出错
9、以下是不正确的转义字符。
A.'\\'B.'\t'C.'\0'D.'\081'
10、当用户定义了一个结构体变量时,系统分配给它的内存为。
A.结构中第一个成员所需内存量B.成员中占内存量最大者所需的容量
C.各成员所需内存的总和D.结构中最后一个成员所需内存量
二、读程序写结果(每题3分,共21分)
1、以下程序运行后输出的结果是。
#include
voidmain()
{intx=3,y=1,z;
x*=3+2;
printf("%d",x);
x*=y=z=4;
printf("%d\n",x);
}
2、以下程序的输出结果是。
#include
voidmain()
{intx=1,y=1,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
3、以下程序的输出结果是。
#include
structabc{inta;intb;intc;};
voidmain()
{structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].b+s[1].c;
printf("%d\n",t);
}
4、以下程序的输出结果是。
#include
voidadd()
{intx=1;
staticinty=3;
printf("%d%d",x,y);
x=x+3;
y=y+5;
}
voidmain()
{inti;
for(i=0;i<2;i++)
add();
}
5、以下程序的输出结果是。
#include
intx;
voidcude()
{x=x*x*x;
}
voidmain()
{x=4;
cude();
printf("%d\n",x);
}
6、以下程序的输出结果是。
#include
voidfun(int*a,int*b,int*c)
{int*temp;
temp=a;a=b;b=temp;
*temp=*b,*b=*c;*c=*temp;
}
voidmain()
{inta,b,c,*p1,*p2,*p3;
a=4;b=5;c=6;
p1=&a;p2=&b;p3=&c;
fun(p1,p2,p3);
printf("%d,%d,%d\n",a,b,c);
}
7、以下程序运行的结果是。
#include
voidprtv(int*x)
{printf("%d\n",++*x);
}
voidmain()
{inta=8;prtv(&a);
}
三、程序填空(每空2分,共20分)
1、以下程序用递归法求Fibonacci数列的第8项的值。
请把函数补充完整。
Fibonacci数列的公式
为:
F
(1)=F
(2)=1;当n>2时,F(n)=F(n-1)+F(n-2)。
#include
intFibonacci(intn)
{intf;
if(n==1||n==2)⑴;
elsef=Fibonacci(n-1)+Fibonacci(n-2);
return(f);
}
voidmain()
{printf("Theresultis%d\n",⑵);
}
2、以下程序用来求两个正整数m和n的最大公约数。
把程序补充完整。
#include
voidmain()
{intm,n;
intp;
scanf("%d%d",&m,&n);
p=⑶;
while(⑷)p--;
printf("Theresultis%d\n",p);
}
3、下面程序的功能是用选择法对10个整数从大到小排序。
排序由sort函数完成,输入输出在main
函数中完成。
请填空:
#include
voidsort(intx[],intn)
{inti,j,k,t;
for(j=0;j{k=j;
for(i=j+1;iif(x[i]>x[k])⑹;
if(k!
=j)
{t=x[j];
x[j]=x[k];
x[k]=t;
}
}
}
voidmain()
{intx[10],i;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
⑺;
for(i=0;i<10;i++)
printf("%d",x[i]);
}
4、写一函数,实现两个字符串的比较。
即自己写一个strcmp函数:
compare(s1,s2)。
如果s1=s2,
返回值为0,如果s1≠s2,返回它们二者第一个不同字符的ASCⅡ码差值("BOY"与"BAD",第二个
字母不同,‘O’与‘A’之差为79-65=14)。
如果s1>s2,则输出正值,如s1#include
intcompare(char*p1,char*p2)
{inti;
i=0;
while(*(p1+i)==*(p2+i))
if(*(p1+i++)=='\0')return(⑻);
return(⑼);
}
voidmain()
{intm;
charstr1[20],str2[20];
scanf("%s",str1);
scanf("%s",str2);
m=⑽;
printf("theresultis:
%d\n",m);
}
四、填空题(每空1分,共10分)
1、在C语言中,实数有两种表示形式,即小数形式和⑴。
有两种数据类型:
float型和double
型,一般将实型常量看做⑵类型。
2、设inta=12;则表达式a/=a+a的值是⑶。
3、表达式x=a=3,6*a和表达式x=(a=3,6*a)分别是⑷表达式和⑸表达式。
4、int(*p)[5];定义的p是一个⑹。
5、数组名作函数参数时,从实参到形参传递的值是⑺。
6、文件可以分为记录式文件和流式文件,C语言的文件是⑻。
7、函数fclose的作用是⑼;打开方式是“rb”表示的是⑽。
五、编程题(共29分,分别9分、10分、10分)
1、有一个四位正整数x。
如果将x的各个数字逆序存放得到另一个四位数y,即:
y的千位、百位、
十位、个位分别是x的个位、十位、百位、千位。
已知:
满足x=9y。
求这个四位数x。
2、对一个字符串,编写程序实现,循环右移长度的一半(如果长度n是奇数,则移动(n-1)/2)。
例如:
如果字符串是:
ABCDEFGH则循环右移后的结果是:
EFGHABCD
如果字符串是:
ABCDEFGHI则循环右移后的结果是:
FGHIABCDE
3、10个学生,5门课程的考试成绩,编写一个处理函数,统计每个学生不及格课程的门数。
在主函
数中输入所有成绩,调用处理函数,输出结果。
模拟题B(闭卷考试)
一、选择题(每题2分,共20分)
1、以下不正确的C语言标识符是。
A.AB.CB.abcC.a_bcD.ABC
2、已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:
。
intk,a,b;
unsignedlongw=5;
doublex=1.422;
A.w+=-2B.x%(-3)C.k=(a=2,b=3,a+b)D.a+=a=+(b=4)*(a=3)
3、下述for循环语句。
inti,k;
for(i=0,k=-1;k=1;i++,k++)printf("****");
A.判断循环结束的条件非法B.一次也不循环
C.只循环一次D.是无限循环
4、在执行inta[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是。
A.1B.2C.4D.5
5、在C语言程序中,以下描述正确的是。
A.函数的定义和函数的调用均不可以嵌套
B.函数的定义和函数的调用均可以嵌套
C.函数的定义不可以嵌套,但函数的调用可以嵌套
D.函数的定义可以嵌套,但函数的调用不可以嵌套
6、如果在一个函数的复合语句中定义了一个变量,则该变量。
A.只在该复合语句中有效,在该复合语句外无效
B.在本程序的源文件范围内均有效
C.在该函数中任何位置都有效
D.此定义方法错误,其变量为非法变量
7、若有定义:
inta[3][4];,则不能表示数组元素a[1][1]。
A.*(a[1]+1)B.*(&a[1][1])C.(*(a+1))[1]D.*(a+5)
8、有如下程序段:
int*p,a=10,b=1;
p=&a;a=*p+b;
执行该程序段后,a的值是。
A、12B、11C、10D、编译出错
9、以下是不正确的转义字符。
A.'\081'B.'\\'C.'\t'D.'\n'
10、当用户定义了一个共用体变量时,系统分配给它的内存为。
A.各成员所需内存的总和B.成员中占内存量最大者所需的容量
C.结构中第一个成员所需内存量D.结构中最后一个成员所需内存量
二、读程序写结果(每题3分,共21分)
1、以下程序运行后输出的结果是。
#include
voidmain()
{intx=2,y=3,z;
x*=3+2;
printf("%d",x);
x*=y=z=4;
printf("%d\n",x);
}
2、以下程序的输出结果是。
#include
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
3、以下程序的输出结果是。
#include
structabc{inta;intb;intc;};
voidmain()
{structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].c;
printf("%d\n",t);
}
4、以下程序的输出结果是。
#include
voidadd()
{intx=2;
staticinty=2;
printf("%d%d",x,y);
x=x+3;
y=y+5;
}
voidmain()
{inti;
for(i=0;i<2;i++)
add();
}
5、以下程序的输出结果是。
#include
intx;
voidcude()
{x=x*x;
}
voidmain()
{x=6;
cude();
printf("%d\n",x);
}
6、以下程序的输出结果是。
#include
voidfun(int*a,int*b,int*c)
{int*temp;
temp=a;a=b;b=temp;
*temp=*b,*b=*c;*c=*temp;
}
voidmain()
{inta,b,c,*p1,*p2,*p3;
a=3;b=7;c=5;
p1=&a;p2=&b;p3=&c;
fun(p1,p2,p3);
printf("%d,%d,%d\n",a,b,c);
}
7、以下程序运行的结果是。
#include
voidprtv(int*x)
{printf("%d\n",++*x);
}
voidmain()
{inta=10;prtv(&a);
}
三、程序填空(每空2分,共20分)
1、以下程序用递归法求Fibonacci数列的第8项的值。
请把函数补充完整。
Fibonacci数列的公式
为:
F
(1)=F
(2)=1;当n>2时,F(n)=F(n-1)+F(n-2)。
#include
intFibonacci(intn)
{intf;
if(n==1||n==2)f=1;
elsef=⑴;
⑵;
}
voidmain()
{printf("Theresultis%d\n",Fibonacci(9));
}
2、以下程序用来求两个正整数m和n的最大公约数。
把程序补充完整。
#include
voidmain()
{intm,n;
intp;
scanf("%d%d",&m,&n);
p=⑶;
while(m%p!
=0||n%p!
=0)⑷;
printf("Theresultis%d\n",p);
}
3、下面程序的功能是用选择法对10个整数从大到小排序。
排序由sort函数完成,输入输出在main
函数中完成。
请填空:
#include
voidsort(intx[],intn)
{inti,j,k,t;
for(i=0;i{k=i;
for(j=i+1;iif(x[j]>x[k])k=j⑹;
if(k!
=i)
{t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}
voidmain()
{inta[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);⑺;
for(i=0;i<10;i++)
printf("%d",a[i]);
}
4、写一函数,实现两个字符串的比较。
即自己写一个strcmp函数:
compare(s1,s2)。
如果s1=s2,
返回值为0,如果s1≠s2,返回它们二者第一个不同字符的ASCⅡ码差值("BOY"与"BAD",第二个
字母不同,‘O’与‘A’之差为79-65=14)。
如果s1>s2,则输出正值,如s1#include
intcompare(char*p1,char*p2)
{inti;
⑻;
while(*(p1+i)==*(p2+i))
if(*(p1+i++)=='\0')return0;
return(⑼);
}
voidmain()
{intm;
chars1[20],s2[20];
scanf("%s",s1);
scanf("%s",s2);
m=⑽;
printf("theresultis:
%d\n",m);
}
四、填空题(每空1分,共10分)
1、在C语言中,C程序的基本构成单位是⑴。
一个C程序至少有且只有一个⑵。
2、设inta=12;则表达式a*=a+a的值是⑶。
3、表达式x=(a=3,6*a)和表达式x=a=3,6*a分别是⑷表达式和⑸表达式。
4、int*p[5];定义的p是一个⑹。
5、数组名作函数参数时,从实参到形参传递的值是⑺。
6、设a=3,b=4,c=5,则表达式a||b+c&&b-c的值是⑻。
7、函数feof的作用是⑼;打开方式是“w”表示的是⑽。
五、编程题(共29分,分别9分、10分、10分)
1、有一个四位正整数a。
如果将a的各个数字逆序存放得到另一个四位数b,即:
b的千位、百位、
十位、个位分别是a的个位、十位、百位、千位。
已知:
满足9a=b。
求这个四位数a。
2、对一个字符串,编写程序实现,循环左移长度的一半(如果长度n是奇数,则移动(n-1)/2)。
例如:
如果字符串是:
ABCDEFGH则循环左移后的结果是:
EFGHABCD
如果字符串是:
ABCDEFGHI则循环左移后的结果是:
EFGHIABCD
3、10个学生,5门课程的考试成绩,编写一个处理函数,统计每门课程不及格学生的人数。
在主函
数中输入所有成绩,调用处理函数,输出结果。
模拟题A答案
一、选择题(每题2分,共20分)
DCDBCBAADC
二、读程序写结果(每题3分,共21分)
1、15602、a=1,b=23、84、13185、646、6,5,67、9
三、程序填空(每空2分,共20分)
1、⑴f=1⑵Fibonacci(8)
2、⑶p=m>n?
n:
m⑷m%p!
=0||n%p!
=0
3、⑸i4、⑻0⑼*(p1+i)-*(p2+i)⑽compare(str1,str2)
四、填空题(每空1分,共10分)
⑴指数形式⑵double型⑶0⑷逗号(,)
⑸赋值⑹指向一维数组的指针变量⑺数组的首地址
⑻流式文件⑼关闭文件⑽二进制只读文件
五、编程题(共29分,分别9分、10分、10分)
1、有一个四位正整数x。
如果将x的各个数字逆序存放得到另一个四位数y,即:
y的千位、百位、
十位、个位分别是x的个位、十位、百位、千位。
已知:
满足x=9y。
求这个四位数x。
参考答案:
#include"stdio.h"
voidmain()
{intx,y,a,b,c,d;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for