C语言程序设计复习汇总.docx
《C语言程序设计复习汇总.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习汇总.docx(23页珍藏版)》请在冰豆网上搜索。
C语言程序设计复习汇总
C语言程序设计复习汇总2012
1.每个程序只有一个main函数,而且它是程序最先执行的地方,是程序的入口点,不管它的位置在哪里,都是首先从它开始执行。
2.每个程序都要包含头文件.头文件的声明方法:
#include<头文件名>
3.程序的3个区域:
1预处理区域(头文件定义的地方)2变量声明区域(声明变量的地方)3执行语句区域。
4.每个语句后面要加分号“;”代表语句的结束。
if语句的小括号(判断条件)后面不用加分号。
5.多个语句可以写在同一行,每个语句后面可以加分号,表示语句结束。
但不提倡这种方法,这样不美观,而且能够使程序代码的可读性很差。
6.注释可用双斜杠//表示,但是标准的C语言注释符号是/**/。
7.代码缩进:
在写代码的时候,尽量让执行语句靠右边对齐。
8.复合语句:
用花括号{}括起来的语句组表示复合语句。
9.符号常量:
在包含头文件的定义语句下面。
使用#define关键字进行声明。
格式是:
#define常量名常量值。
使用符号常量的好处:
使程序易于维护,并且增加可读性,同时并不会改变程序编译的结果。
符号常量的值在程序的运行时不能被改变,只能在进行代码编写的时候才能改变。
这是常量与变量的最大区别。
习惯上符号常量的常量名用大写字母,而变量的变量名用小写字母,以示区别。
10.变量的基本类型:
int(整型)char(字符型)float(单精度浮点型)double(双精度浮点型)。
11.变量命名规则:
只能是字母数字下环线组成的字符串,并且第一个字符只能是字母或下划线。
变量名应做到见名知意,变量名不可以是C语言中的关键字或者是函数名。
大小写不同的变量名代表不同的变量(在C语言中区分大小写).
12.变量的作用:
变量的值可以在运行时改变,使程序具有灵活性。
13.变量的三要素:
变量类型变量名变量的当前值
14.所有的变量都必须先声明然后再使用,变量的声明就是规定变量的类型的名字,如果不声明就是用会出现编译错误。
15.变量的初始值:
在声明变量的同时可以赋给变量一个初始值,如果不赋初始值,变量的值会是一个随机数。
16.使用变量的三个步骤:
声明赋初值使用变量的值。
17.输入输出函数:
printf() sacnf()这两个寒暑的声明包含在头文件stdio.h中。
所以要使用这两个函数一定要包含这个头文件。
scanf("%d",&变量名);%d代表整型格式 如果是实型变量则用%f 字符型变量则用%c变量名前面的取地址符(&)不能少在scanf()函数内尽量不要使用换行标志\n
printf("%d",变量名) 同上
引号内的字符串,除格式控制符(如%d%c%f以及换行符\n)等等之外,其它都按照原样输出。
18.算术运算符:
+(加) -(减) *(乘) /(除) %(求余/模)
19.逻辑表达式:
&&(和/与/且) ||(或) !
(非)
表达式1&&表达式2 当表达式1和表达式2同时成立时候,它的值是真,否则为假
表达式1||表达式2 当表达式1或者表达式2任何一个成立的时候,或者两个都成立的时候,它的值是真,否则是假
!
表达式 当表达式的值是真,那么结果就是假反之当表达式的值是假,它的值就是真。
20.在C语言中,0表示假,非0表示真。
21.自增(++)自减(--)运算符,不建议初学者过多的使用,知道有这家伙就可以了。
22.条件语句:
if语句如果是相等比较,那么要注意等于的关系运算符是(==)而不是(=),=是赋值运算符
if(条件)
{
语句;
}
if(条件)
{
语句;
}
else
{
语句;
}
if(条件)
{
语句;
}
elseif(条件)
{
语句;
}
else
{
语句;
}
23.switch-case语句
switch(整型表达式)
{
case情况1:
语句1;
break;
case情况2:
case情况3:
语句2;
break;
default:
语句n;
}
24.循环语句:
for语句while语句do-while语句
for(循环计数器初始化表达式;循环判断条件表达式;循环计数器表达式)
{
循环体;
}
while(循环判断条件表达式)
{
循环体;
}
do
{
循环体;
}while(循环判断条件表达式); //在这里记得要在while()后面加分号.
25.forwhiledo-while语句的区别:
for和while语句是先判断循环条件,如果成立就执行循环体,反之则直接跳到循环后面的语句继续执行。
do-while语句是先执行一次循环体,然后再判断循环条件是否成立,如果成立则继续执行循环体,否则,直接跳到循环后面的语句继续执行。
forwhile语句的循环体可能一次也不会被执行,但是do-while语句的循环体至少会被执行一次。
26.while和do-while通常用于循环此数不确定的情况,而for语句通常用于循环次数已知的情况。
27.break语句:
用于中止循环,跳到循环后面语句中继续执行。
或者跳出switch语句。
28.continue语句:
用于结束本次循环,进入到下一次循环的条件判断,
29.数组:
数组是由多个具有相同数据类型的变量组成的数据结构。
就像是一个集合。
30.数组的声明:
类型数组名[数组元素总数]={初始值};
31.数组的下标从0开始。
32.数组元素的使用:
数组名[下标]
复习题题型
一.单项选择题:
(每小题1分,共25分)
二.判断题:
(每小题1分,共10分)
三.阅读程序写结果:
(每小题4分,共20分)
四.程序填空:
(每空2分,共14分)
五.编程题(4小题共31分)
单项选择题:
1.算法具有五个特性,以下选项中不属于算法特性的是__________。
B
A)有穷性B)简洁性C)可行性D)确定性
2.以下叙述中正确的是__________。
C
A)用C语言实现的算法必须要有输入和输出操作
B)用C语言实现的算法可以没有输出但必须要有输入
C)用C程序实现的算法可以没有输入但必须要有输出
D)用C程序实现的算法可以既没有输入也没有输出
3.不合法的八进制数是__________。
B
A)0B)028C)077D)01
4.在C语言的if语句中,用作判断的表达式为__________D
A)关系表达式 B)逻辑表达式 C)算术表达式 D)任意表达式
5.若变量已定义,要求完成求5!
的计算,不能完成此操作的程序段是___。
B
A)for(i=1,p=1;i<=5;i++)p*=i;
B)for(i=1;i<=5;i++){p=1;p*=i;}
C)i=1;p=1;while(i<=5){p*=i;i++;}
D)i=1;p=1;do{p*=i;i++;}while(i<=5);
6.已有定义:
chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是__________。
C
A)数组a和b的长度相同B)a数组长度小于b数组长度
C)a数组长度大于b数组长度D)上述说法都不对
7.有以下程序__________。
A
main()
{chara='a',b;
print("%c,",++a);
printf("%c\n",b=a++);
}
程序运行后的输出结果是
A)b,bB)b,cC)a,bD)a,c
有以下程序__________。
A
main()
{
inta=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
8.printf("%d",d+++1);
else
printf("%d",++d+1);
printf("%d\n",d);
}
程序运行后的输出结果是
A)2B)3C)43D)44
9.表达式__________是满足:
当c的值为1、3、5三个数时值为“真”,否则值为“假”的表达式D
A)(c=1)||(c=3)||(c=5)B)(c!
=1)&&(c!
=3)&&(c!
=5)
C)(c==1)&&(c==3)&&(c==5)D)(c==1)||(c==3)||(c==5)
10.若变量已正确说明,则以下程序段输出为__________。
A
a=10;b=50;c=30;
if(a>b)
a=b,b=c;
c=a;
A)a=10b=50c=10B)a=10b=30c=10
C)a=50b=30c=10D)a=50b=30c=50
数字字符0的ASCII值为48,若有以下程序__________。
C
main()
{
chara='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是
(A)3,2(B)50,2(C)2,2(D)2,50
11.组成C程序的基本单位是________。
C
A)表达式与语句B)若干文件C)函数D)main函数
12.下列变量定义正确的是________。
A)intx_1;y;
B)intx=y=5;
C)intfor=4;
D)intprintf=2,x_y=2;
13.任何复杂的程序,都是由________构成的。
A)分支结构、顺序结构、过程结构B)循环结构、分支结构、过程结构
C)顺序结构、循环结构、分支结构D)循环结构、分支结构
14.以下说法错误的是________。
A)do~while语句与while语句的区别仅是关键词“while”出现的位置不同
B)while语句是先进行循环条件判断,后执行循环体的
C)do~while是先执行循环体,后进行循环条件判断
D)while、do~while和for语句的循环体都可以是空语句
15.以下叙述错误的是________。
A)C语言本身没有输入输出语句
B)一个可执行的C源程序必须包含一个main函数
C)C程序中,注释说明只能位于一条语句的后面
D)C程序的基本组成单位是函数
16.以下对二维数组a的声明正确的是________。
A)inta[3][];B)inta(3,4);C)inta[1][4];D)inta(3)(4);
17.下列函数头中形参说明错误的是________。
A)floataverage(floatarray[9],n)B)floataverage(float*array,intn)
B)floataverage(floatarray[],intn)C)floataverage(floatarray,intn
18.t为int类型,进入下面的循环之前t的值为0,以下叙述正确的是________。
while(t=l)
{……}
A)循环控制表达式的值为0B)循环控制表达式的值为1
C)循环控制表达式不合法D)以上说法都不对
19.若a为整型变量,则以下语句________。
a=-2L;
printf(“%d\n”,a);
A)赋值不合法B)输出值为-2C)输出为不确定值D)输出值为2
20.若有说明语句:
inty[][4]={0,0,0,0,0,0};则正确的叙述是________。
A)数组y的每个元素都可得到初值0
B)二维数组y的行数为1
C)该说明等价于inty[0][4]={0};
D)有元素y[0][0]至y[0][5]可得到初值,其余元素均得不到初值0
21.若有定义:
intb[5];则以下对b数组元素的正确引用是________。
A)*&b[5]B)b+2
C)*(*(b+2))D)*(b+2)
22.C语言中规定,if语句的嵌套结构中,else总是与________配对。
A)与最近的if配套B)与第一个if配套
C)按缩进位置相同的if配套D)与最近的且尚未配对的if配套
23.若用数组名作为函数调用时的参数,则实际上传递给形参的是________。
A)数组元素的个数B)数组的第一个元素值
C)数组中全部元素的植D)数组首地址
24.若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量x,则在另一文件中可以使用的引用说明是________。
A)externfloatx;B)floatx;
C)externautofloatx;D)externstaticfloatx;
25.若有定义charx[]="12345";chary[]={'1','2','3','4','5'};则。
A)x数组与y数组的长度相同B)x数组长度大于y的长度
C)x数组长度小于y数组长度D)x数组等价与y数组
判断题:
( )1、“A”是一个字符常量。
X
( )2、在标准C中,使用所有输入输出函数必须包含“stdio.h”文件。
X
3、设整型变量s,c1,c2的值均为2,则执行语句(s=(c1==c2))后,s的值为:
( )。
A)0 B)1 C)2 D)3
()4、关系运算符中,==的优先级要高于>=的优先级。
X
()5、判断a,b两个数是否相等,用a=b。
X
()6、在循环过程中,使用break语句和continue语句的作用是一样的。
X
( )7、数组的下标从1开始。
X
( )8、数组边定义边赋值时,大括号内数据项的数目可以大于或等于数组的长度。
()9、空指针的值为NULL。
正确
()10、函数的返回值必须与函数定义时的返回类型一致。
正确
阅读程序写结果
1.阅读以下程序,若输入5<回车>,写出程序运行结果。
#include
intmain()
{inti,n;
doublefact;
scanf("%d",&n);
fact=1;
for(i=1;i<=n;i++)
fact*=i;
printf("%.0f\n",fact);
}
120
2.阅读以下程序,若输入a<回车>,写出程序运行结果。
#include
intmain()
{
charch;
ch=getchar();
if(ch>='a'&&ch<='z')
ch=ch-‘a’+’A’;
elseif(ch>='A'&&ch<='A')
ch=ch-'A'+'a';
putchar(ch);
}
A
3.阅读以下程序,若输入19340<回车>,写出程序运行结果。
#include
intmain()
{intx,sum;
scanf("%d",&x);
sum=0;
while(x>0)
{if(x%2==0)sum+=x;
scanf("%d",&x);}
printf("%d\n",sum);
}
4
4.阅读以下程序,若输入45795<回车>,写出程序运行结果。
#include
intmain()
{inti,index,n;
inta[10];
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
index=0;
for(i=1;i{if(a[i]printf("min=%d,index=%d\n",a[index],index);
}
Min=5,index=0
5.写出以下程序的运行结果。
#include
intx;
voidcude()
{x=x*x*x;}
voidmain()
{x=5;
cude();
printf("%d\n",x);
}
125
6.写出以下程序的运行结果。
#include
voidmain()
{
inta[]={1,3,5,7,9};
inty=0,x,*p;
p=&a[0];
for(x=0;x<3;x++)y+=*(p+x);
printf("%d\n",y);
}
9
7.阅读以下程序,写出程序的功能。
#include
voidmain()
{
inta[10]={2,4,0,-5,10,6,-8,9,6,7};
inti,s=0,count=0;
for(i=0;i<10;i++)
if(a[i]>0)s+=a[i],count++;
elsecontinue;
printf("s=%d,count=%d\n",s,count);
}
S=44,count=7
8.阅读以下程序,写出程序的运行结果。
#include
#defineN6
voidmain()
{
inta[N]={4,5,8,3,6,1};
intj,t;
for(j=0;jif(a[j]>a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0;jprintf("%5d",a[j]);
}
答案
1.120
2.A
3.4
4.min=5,index=0
5.125
6.9
7.s=44,count=7
8.1 3 4 5 6 8
程序填空:
1.以下程序的功能是计算1+1/2+1/3+1/4+..的前n项和,请填空。
#include
intmain()
{
inti,n;
floatsum;
scanf("%d",&n);
;
for(i=1;i<=n; )
{
;
}
printf("%.3f\n",sum); }
2.以下程序的功能是从键盘输入n个整数,输出其中的最大值,请填空。
#include
intmain()
{
int a,max,i,n;
scanf("%d",&n);
scanf("%d",&max);
for( ;i{
;
if( )
max=a;}
printf("minis%d\n",max); }
3.以下程序的功能是对10个整数从小到大排序
#include
voidsort(intarr[],intn);
voidmain()
{
inta[10],*p,i;
printf("input10numbers:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\ntheoriginalarrayis:
");
for(p=a; p printf("%d ",*p);
;
printf("\nthepresentarrayis:
");
for(p=a;p printf("%d ",*p);
}
voidsort(intarr[],intn)
{
int*p1,*p2,temp;
for(p1=arr;p1 for( ;p2 if( )
{ temp=*p1;*p1=*p2;*p2=temp;}
}
4.以下程序完成对键盘输入的正整数进行求和、平均值、最大值和最小值,输入负数时循环结束。
请填写缺少的语句。
#include
voidmain()
{
inti,j,n,max,min,a[100],s=0;
for(i=1;i<=100;i++)
{ scanf("%d,",&a[i]);
if( ) s+=a[i];
}
n=i-1;
min=max=a[1];
for(j=2;j<=n;j++)
{ if( )max=a[j];
if( )min=a[j];
}
printf("n=%d\taverage=%f\tmax=%d\tmin=%d\n",n,(float)s/n,max,min);
}
1
sum=0
i++
sum+1.0/i
3
sort(a)
p2=p1+1
*p1>*p2
2
i=1
scanf("%d",&a)
a>max
4
if(a[i]>0)
a[j]>max
a[j]编程题
1.输入2个整数,求两数的平方和并输出。
#include
main()
{intta,b,s;
printf("pleaseinputa,b:
\n");
scanf("%d%d”,&a,&b);
s=a*a+b*b;
printf("theresultis%d\n",s);
}
2.输入一个圆半径(r),当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。
#include