C语言程序设计期末考试复习题.docx

上传人:b****7 文档编号:23622520 上传时间:2023-05-19 格式:DOCX 页数:18 大小:25.55KB
下载 相关 举报
C语言程序设计期末考试复习题.docx_第1页
第1页 / 共18页
C语言程序设计期末考试复习题.docx_第2页
第2页 / 共18页
C语言程序设计期末考试复习题.docx_第3页
第3页 / 共18页
C语言程序设计期末考试复习题.docx_第4页
第4页 / 共18页
C语言程序设计期末考试复习题.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言程序设计期末考试复习题.docx

《C语言程序设计期末考试复习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计期末考试复习题.docx(18页珍藏版)》请在冰豆网上搜索。

C语言程序设计期末考试复习题.docx

C语言程序设计期末考试复习题

C语言程序设计期末考试复习题

一、选择题

1.在每个C程序中都必须包含有这样一个函数,该函数的函数名为      A    。

A.main          B.MAIN          C.name          D.function

2.在以下关于C语言的注释的叙述中,不正确的是C。

A.注释可用"/*"、"*/"形式表示,也可用"//"形式表示

B.编译器在编译一个程序时,将跳过注释,不对其进行处理

C.编译器在编译一个程序时,可发现注释中的单词拼写错误

D.程序中注释的多少不会影响所生成的可执行文件的长度

3.以下叙述不正确的是C。

A.在C程序中,严格区分大小写字母

 B.一个C源程序有且仅有一个main函数

 C.在C程序中,注释只能位于一条语句的后面

 D.一个C程序总是从main函数开始执行

4.下列合法的标识符为D

A.abde+B.#KDJFC.67KDJD.DK3_

5.关于字符串和字符的关系正确的是C

A.“A”与’A’是相同的

B.字符串是常量,字符是变量

C.“A”与’A’是不同的

D.“A”与“A”是相同的

6.下面关于语句的说法正确的是B

A.下面这两段程序的执行效果是一致的

 

B.空语句是只有一个分号的语句,它其实什么也不干

C.语句的构成不一定需要分号

D.语句的书写对程序的运行不起作用,因此可以随便写都可以

7.以下各标识符中,合法的用户标识符组为D。

A.PAd,P#d,b-b,abc,_0123,ssiped

B.cin,a10,CPP,float,del_word,signed

C.void,max,hiy,,list,*jer

D.a,temp,_isw,INT,keep,wind

8.字符串“\”EOF=-\61\””的长度是B。

A.8 B.9 C.12D.非法字符串

9.数学式

在C程序中对应的不正确的表达式为B。

A.sqrt(sin(x)>0?

sin(x):

-sin(x))B.sqrt(fabs(sinx))

C.sqrt(sqrt(sinx*sinx))D.fabs(sqrt(sin(x)))

10.下列A是C语言的有效标识符?

A._No1B.No.1C.12345D.int

11.以下叙述中正确的是(B)。

A.a是实型变量,C允许进行以下赋值a=10,因此可以这样说:

实型变量中允许存放整型值。

B.在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。

C.执行语句a=b;后,在内存中a和b变量中原有的值都将被改变。

D.已有a=3,b=5。

当执行了表达式a=b,b=a之后,可使a中的值为5,b

中的值为3。

12.构成C语言源程序的基本单位是(D)。

A.子程序B.过程C.文本D.函数

13.以下叙述正确的是(D)。

A.do_while语句构成的循环不能用其它语句构成的循环来代替。

B.do_while语句构成的循环只能用break语句退出。

C.用do_while语句构成循环时,当while后的表达式为非零时结束循环。

D.用do_while语句构成循环时,当在while后的表达式为零时结束循环。

14.以下能正确进行字符串赋值的是(A)。

A.chars[5]={‘a’,’e’,’i’,’o’,’u’};

B.char*s;s=“good!

”;

C.chars[5]=“good!

”;D.chars[5];s=“good”;

15.以下函数调用语句中,含有的实参个数是(D)。

A.1B.2C.4D.5

func((exp1,exp2),(exp3,exp4,exp5));

16.若已定义:

inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是(D)。

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

17.对于for(表达式1;表达式2;表达式3)语句,下列说法不正确的是(D)。

A.表达式1只能执行一次

B.表达式1、表达式2、表达式3都可以缺省

C.缺省表达式2时循环执行无限次

D.只有循环次数确定的情况下才能用for循环

18.对于函数的形参数和实参数,下列说法正确的是(C)。

A.函数调用时,实参数和形参数之间相互进行值传递

B.实参数个数和形参数的个数可以不相等

C.形参只能是变量D.实参只能是变量

19.下列说法正确的是(C)。

A.指针变量专门用来存放另外一个变量的地址

B.定义指针时,其类型为整型

C.可以把一个整数直接赋给指针变量

D.指针与指针变量是同一概念

20.对于输入语句scanf(“%d%c”,&a,&x);为了使a=10,x=’A’,正确的输入格式是(C)。

A.10AB.10,AC.10AD.10;A

21.以下叙述中正确的是(B)。

A.a是实型变量,C允许进行以下赋值a=10,因此可以这样说:

实型变量中允许存放整型值。

B.在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。

C.执行语句a=b;后,在内存中a和b变量中原有的值都将被改变。

D.已有a=3,b=5。

当执行了表达式a=b,b=a之后,可使a中的值为5,b

中的值为3。

22.构成C语言源程序的基本单位是(D)。

A.子程序B.过程C.文本D.函数

23.以下叙述正确的是(D)。

A.do_while语句构成的循环不能用其它语句构成的循环来代替。

B.do_while语句构成的循环只能用break语句退出。

C.用do_while语句构成循环时,当while后的表达式为非零时结束循环。

D.用do_while语句构成循环时,当在while后的表达式为零时结束循环。

24.以下能正确进行字符串赋值的是(B)。

A.chars[5]={‘a’,’e’,’i’,’o’,’u’};

B.char*s;s=“good!

”;

C.chars[5]=“good!

”;D.chars[5];s=“good”;

25.以下函数调用语句中,含有的实参个数是(B)。

A.1B.2C.4D.5

func((exp1,exp2),(exp3,exp4,exp5));

26.若已定义:

inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是(D)。

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

27.对于for(表达式1;表达式2;表达式3)语句,下列说法不正确的是(D)。

A.表达式1只能执行一次

B.表达式1、表达式2、表达式3都可以缺省

C.缺省表达式2时循环执行无限次

D.只有循环次数确定的情况下才能用for循环

28.对于函数的形参数和实参数,下列说法正确的是(C)。

A.函数调用时,实参数和形参数之间相互进行值传递

B.实参数个数和形参数的个数可以不相等

C.形参只能是变量D.实参只能是变量

29.下列说法正确的是(C)。

A.指针变量专门用来存放另外一个变量的地址

B.定义指针时,其类型为整型

C.可以把一个整数直接赋给指针变量D.指针与指针变量是同一概念

30.对于输入语句scanf(“%d%c”,&a,&x);为了使a=10,x=’A’,正确的输入格式是(C)。

A.10AB.10,AC.10AD.10;A

二、填空题

1.C语言程序由函数组成,其中每一个程序必须含有一个main函数。

2.一个算法应包含有限的操作步骤,这是指算法的有穷性。

3.以下程序段执行后z的值是。

intx,y,z;x=1;y=2;z=1/y*x;

4.请填入一个整数使以下程序段输出10个整数。

for(i=0;i<=9;printf(“%d\n”,i+=2));

5.静态型变量在函数调用结束后不消失而继续保留原值,而且只能被初始化一次。

6.以下程序段给数组所有元素输入数据,请补充完整。

main()

{inta[10],i=0;

while(i<10)scanf(“%d”,&a[i]);}

7.函数直接或间接调用其本身称为函数的递归调用。

8.C语言的变量分全局变量和局部变量,在函数外定义的变量是全局变量。

9.为表示关系x≥y≥z,应使用的C语言表达式是(x>=y)&&(y>=z)。

10.C语言的函数一般由两部分组成,分别是声明部分和执行部分。

11.以下程序段给数组所有元素输入数据,请补充完整。

main()

{inta[10],i=0;

while(i<10)scanf(“%d”,);}

12.函数直接或间接调用其本身称为函数的递归调用。

13.C语言的变量分全局变量和局部变量,在函数外定义的变量是全局变量。

14.为表示关系x≥y≥z,应使用的C语言表达式是(x>=y)&&(y>=z)。

15.C语言的函数一般由两部分组成,分别是声明部分和执行部分。

三、程序改错题

1.以下程序代码是求n!

#include

main()

{inti,s,n;

scanf(“%d”,n);->scanf(“%d”,&n);

for(s=0,i=1;i<=n;i++)->for(s=1,i=1;i<=n;i++)

s*=i;

printf(“%d\n”,s);}

2.以下程序是求整型数组中的最大值。

#include

main()

{inta[10]={4,6,78,45,2,1,0,8,12,24},max,i;

for(max=a[0],i=1;i<=10;i++)->for(max=a[0],i=1;i<=9;i++)

if(a[i]if(a[i]>max)

max=a[i];

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

3.以下程序实现的功能是:

交换主函数中的变量a和b的值。

#include

voidfun(int*p1,int*p2)

{int*p3;->p3

p3=p1;p1=p2;p2=p3;}->p3=*p1;*p1=*p2;*p2=p3;}

main()

{inta=10,b=5;

fun(&a,&b);

printf(“a=%d,b=%d\n”,a,b);}}->}

4.以下程序是判断x是否是素数,若是就输出“YES”,否则输出“NO”。

#include

main()

{intx,flag,i;

scanf(“%d”,x);->scanf("%d",&x);

for(flag=1,i=1;i<=x-1;i++)->for(flag=1,i=2;i<=x-1;i++)

if(x/i==0){flag=0;break;}->if(x%i==0){flag=0;break;}

if(flag==1)printf(“YES”);

elseprintf(“NO”);}

5.下列程序是采用折半查找算法在a数组中查找x,若找到x则显示“成功”,否则显示“失败”。

#include

main()

{inta[15]={100,89,80,76,64,56,45,41,32,30,24,22,15,10,6};

inti,j,mid,x;

scanf(“%d”,&x);

i=0;j=14;

while(i<=14)

{mid=(i+j)/2;

if(a[mid]==x)break;

elseif(a[mid]>x)

j=mid-1;->i=mid+1;

elsei=mid+1;}->elsej=mid-1;}

if(i>j)printf(“查找失败\n”);elseprintf(“查找成功\n”);}

6.以下程序的功能是将一个矩阵转置。

#include

main()

{inta[4][4]={4,3,2,1,8,7,6,5,12,11,10,9,13,14,15,16},i,j,k;

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

for(j=0;j<=3;j++)->for(j=i;j<=3;j++)

{k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;}加}

7.以下程序是判断x是否是素数,若是就输出“YES”,否则输出“NO”。

#include

main()

{intx,flag,i;

scanf(“%d”,x);

for(flag=1,i=1;i<=x-1;i++)

if(x/i==0){flag=0;break;}

if(flag==1)printf(“YES”);

elseprintf(“NO”);}

8.下列程序是采用折半查找算法在a数组中查找x,若找到x则显示“成功”,否则显示“失败”。

#include

main()

{inta[15]={100,89,80,76,64,56,45,41,32,30,24,22,15,10,6};

inti,j,mid,x;

scanf(“%d”,&x);

i=0;j=14;

while(i<=14)

{mid=(i+j)/2;

if(a[mid]==x)break;

elseif(a[mid]>x)

j=mid-1;

elsei=mid+1;}

if(i>j)printf(“查找失败\n”);elseprintf(“查找成功\n”);}

9.以下程序的功能是将一个矩阵转置。

#include

main()

{inta[4][4]={4,3,2,1,8,7,6,5,12,11,10,9,13,14,15,16},i,j,k;

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

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

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

四、程序分析题

1.以下程序段的输出结果是97531。

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

for(p=a;p<=a+9;p+=2)

printf(“%d”,*p);

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

intt=1;

intfun(intp)

{staticintt=5;

t+=p;

printf("%d",t);

return(t);}

main()

{inta=3;

printf("%d\n",fun(a+fun(t)));}

3.以下程序的输出结果是-5,-12,-7。

voidsub(intx,inty,int*z)

{*z=y-x;}

main()

{inta,b,c;

sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);

printf(“%d,%d,%d\n”,a,b,c);}

4.以下程序段的输出结果是15。

main()

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

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

b+=a[i];

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

5.以下程序段的输出结果是16。

intfun(intn)

{if(n==1)return1;

elsereturnn+fun(n-2);}

main()

{printf("%d\n",fun(7));}

6.以下程序段的输出结果是1。

intx=0;

if(x++<0)

printf(“%d”,--x);

printf(“%d”,x++);

7.以下程序段的输出结果是10。

intk,j,s;

for(k=2;k<6;k++,k++)

for(s=1,j=k;j<6;j++)

s+=j;

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

8.以下程序的输出结果是25/10=2。

intf(intm,intn)

{returnn/m;}

main()

{inta=10,b=25,c;

c=f(a,b);

printf("%d/%d=%d",b,a,c);}

9.以下程序的运行结果是**。

main()

{intx=1,y=1;

switch(x)

{case1:

switch(y)

{case0:

printf(“*”);break;

case1:

printf(“*”);break;

default:

printf(“*”);break;}

case2:

printf(“*”);}}

10.以下程序的输出结果是a=22。

intfun()

{staticinti=2;

ints=1;

s+=i;i++;

returns;}

main()

{inti,a=10;

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

a+=fun();

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

11.以下程序段的输出结果是97531。

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

for(p=a;p<=a+9;p+=2)

printf(“%d”,*p);

12.以下程序的输出结果是61515。

intt=1;

intfun(intp)

{staticintt=5;

t+=p;

printf("%d",t);

return(t);}

main()

{inta=3;

printf("%d\n",fun(a+fun(t)));}

13.以下程序的输出结果是-5,-12,-7。

voidsub(intx,inty,int*z)

{*z=y-x;}

main()

{inta,b,c;

sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);

printf(“%d,%d,%d\n”,a,b,c);}

14.以下程序段的输出结果是15。

main()

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

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

b+=a[i];

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

15.以下程序段的输出结果是16。

intfun(intn)

{if(n==1)return1;

elsereturnn+fun(n-2);}

main()

{printf("%d\n",fun(7));}

五、编程题

1.编程求:

S=1/1-1/3+1/5-1/7+…+1/99的值。

#include

main()

{inti=1;

floata=0,f=1.0;

while(i<100)

{

a=a+f/i;

i+=2;

f=-f;

}

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

}

 

2.若给定数组a[12]={15,6,22,34,1,64,52,7,12,32,24,45},请编程对它们进行降序排序并输出。

#include

voidmain(void)

{

inta[12]={15,6,22,34,1,64,52,7,12,32,24,45},i,j,l,temp;

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

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

if(a[i]>a[j])

{temp=a[i];

a[i]=a[j];

a[j]=temp;}

for(l=0;l<12;l++)

printf("%d\n",a[l]);

}

3.编写程序,求e的值。

e≈1+1/1!

+1/2!

+1/3!

+1/4!

+…+1/n!

#include

voidmain()

{

intn=1;

floati=1,e=1;

while(1/i>10e-4)

{

i=i*n;

e=e+1/i;

n++;

}

printf("%f",e);

}

4.输入一个字符串s1,把s1中所有的非数字字符复制到s2中并输出。

例如:

s1[]=“abcd1234%6#$ABC246”,则s2[]=“abcd%#$ABC”。

#include

main()

{

inti=0,j=0;

charch,s1[1024],s2[1024];

gets(s1);

while((ch=s1[i++])!

='\0')

{

if(ch<'0'||ch>'9')

s2[j++]=ch;

}

s2[j]='\0';

puts(s2);

}

5.编写程序,求e的值。

e≈1+1/1!

+1/2!

+1/3!

+1/4!

+…+1/n!

#include

voidmain()

{

intn=1;

floati=1,e=1;

while(1/i>10e-4)

{

i=i*n;

e=e+1/i;

n++;

}

printf("%f",e);

}

6.输入一个字符串s1,把s1中所有的非数字字符复制到s2中并输出。

例如:

s1[]=“abcd1234%6#$ABC246”,则s2[]=“abcd%#$ABC”。

#include

main()

{

inti=0,j=0;

charch,s1[1024],s2[1024];

gets(s1);

while((ch=s1[i++])!

='\0')

{

if(ch<'0'||ch>'9')

s2[j++]=ch;

}

s2[j]='\0';

puts(s2);

}

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

当前位置:首页 > 幼儿教育 > 育儿知识

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

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