德州学院二级C语言期末复习题_第1页
德州学院二级C语言期末复习题_第2页
德州学院二级C语言期末复习题_第3页
德州学院二级C语言期末复习题_第4页
德州学院二级C语言期末复习题_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言练习题一、单项选择题以下选项中合法的标示符是()

A.1_1B.1-1C._11D.1__若有以下类型说明语句:

chara;intb;floatc;shortintd;

则表达式(c*b+a)*d的结果类型是()。

A.charB.intC.doubleD.float算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为()。

A.算术运算、赋值运算、关系运算B.关系运算、赋值运算、算术运算

C.算术运算、关系运算、赋值运算D.关系运算、算术运算、赋值运算多重if_else语句嵌套使用时,寻找与else配套的if方法是()。

A.缩排位置相同的if

B.其上最近的if

C.下面最近的if

D.同行上的if有以下程序,其运行后的输出结果是()。

main()

{intx=1,y=2;

x=x+y,y=x-y;x=x-y;

printf("x=%d,y=%d\n",z);

}

A.12 B.1,2 C.0,1 D.2,1有以下程序,其中%u表示按无符号整数输出

main()

{unsignedshortx=0xFFFF;

printf("%u\n",x);

}

程序运行后的输出结果是()。

A.-1 B.65535 C.32767 D.0xFFFF以下合法的c语言语句是(B)。

A.x=int(x+0.5); B.++k; C.a=b=0 D.a=1,下面有关for循环的正确描述是(D)。

A.for循环只能用于循环次数已经确定的情况。

B.for循环是先执行循环体语句,后判断表达式。

C.在for循环中,不能用break语句跳出循环体。

D.for循环的循环体语句,可以包含多条语句,但必须用花括号括起来。有以下程序,其运行后的输出结果是(C)。

main()

{intx=1,y=2,z;

z=x/y;

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

}

A.1/2 B.0.5 C.0 D.1下列对字符串的操作正确的是(C)。

A.charc[3][4]={"ABCD"};B.charc[4]={'A','B','C','D'};

C.charc[4];scanf("%s",c);D.charc[4];c="ABCD";若有说明inta[3][4];则对其数组元素的正确引用是(A)。

A.a[2][1+2]B.a(2)(3)C.a[2,3]D.a[3][4]在C语言程序中,以下正确的描述是(A)。

A.函数的定义可以嵌套,但函数的调用不可以嵌套。

B.函数的定义不可以嵌套,但函数的调用可以嵌套。

C.函数的定义和函数的调用均不可以嵌套。

D.函数的定义和函数的调用均可以嵌套。执行下面程序的正确结果是(

)。

main(

)

{

float

a=1.9;

switch(a)

{

case

0:

printf("0000");

case

1:

printf("1111");

case

2:

printf("2222");

}

printf("%f",a);}

A.1.900000B.

111122221.900000

C.

22221.900000D.若用数组名作为函数调用的实参,传递给形参的是(A)。

A.数组的首地址B.数组第一个元素的值

C.数组中全部元素的值D.数组元素的个数以下叙述中错误的是()

A.计算机不能直接执行用C语言编写的源程序。

B.C程序经编译程序编译后,生成后缀为.obj的文件是一个二进制文件。

C.后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件。

D.后缀为.obj和.exe的二进制文件都可以直接运行。2.执行以下程序段后,w的值为()

intw=’A’,x=14,y=15;

w=((x||y)&&(w<’a’);

A.-1B.NULLC.1D.03.若有说明语句:intw=1,x=2,y=3,z=4;则表达试w>x?w:z>y?z:x的值是()。

A.4 B.3 C.2 D.14.若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和()等价。

A.k=(a>b)?1:0;B.k=a>b;

C.k=a<=b;D.a<=b?0:1;若有定义:intx=5,*p=&x;,则语句printf("%d\n",*p);的输出结果是(B)。

A.随机值B.5C.x的地址D.p的地址以下判断两个字符串相等的正确方法是()。

A.

if(str1=str2)B.

if(str1==str2)

C.

if(strcpy(str1,str2)=0)D.if(strcmp(str1,str2)==0)设变量已正确定义并赋值,以下正确的表达式是()。

A.int(6.3%2)B.x=z*5=3C.i=j+5,++jD.k=20%3.0有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2){printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}程序运行结果是()

A.*7B.*3*5C.*2*6D.*5有下列程序:

voidswap1(intc1[],intc2[])

{intt;

t=c1[0];c1[0]=c2[0];c2[0]=t;

}

voidswap2(int*c1,int*c2)

{intt;

t=*c1;*c1=*c2;*c2=t;

}

main()

{inta[2]={1,2},b[2]={3,4};

swap1(a,a+1);swap2(&b[0],&b[1]);

printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);

}

程序运行后的输出结果是()

A.1234B.2143C.2341D.1324若有定义inta[]={1,2,3},b[3]={1,2,3};,表达式a==b的结果是(A)。

A.不能比较B.结果为真C.结果不确定D.结果为假有定义:inta=4,b,*p=&b,*q=&a;,以下赋值语句中与b=a;语句等价的是()。

A.*p=*q;B.p=q;C.*p=&a;D.p=*q;有下列程序:

voidsum(inta[])

{a[1]=a[0]+a[2];

}

main()

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

sum(&a[2]);

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

}

程序运行后的输出结果是()

A.6B.7C.3D.9定义structp{intx;chary[10];}p1;,则下列正确的赋值是(C)。

A.p1.y="sun"B.p1->y="sun"C.strcpy(p1.y,"sun")D.p1.strcpy(y,"sun")若调用一个函数,且此函数中没有return语句,则正确的说法是()。

A.该函数没有返回值

B.返回若干个系统默认值

C.能返回一个用户所希望的函数值

D.返回一个不正确的值指针是一种()。

A.标识符B.变量C.运算符D.内存地址有下列程序:

main(intargc,char*argv[])

{intn=0,i;

for(i=1;i<argc;i++)n=n*10+*argv[i]-‘0’;

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

}

编译连接后生成可执行文件tt.exe。若运行时输入以下命令行

tt12345678

程序运行后的输出结果是()。

A.12B.12345C.12345678D.136给出语句xxx.yyy.zzz=10;,下面正确的是()。

A.结构yyy嵌套在结构xxx中B.结构zzz嵌套在结构yyy中

C.结构xxx嵌套在结构yyy中D.结构xxx嵌套在结构zzz中下面程序执行后k的值为(D)。

int

a=1,b=2,c=3,d=4,k;

k=a>b?a:c>d?c:d

A.1B.2C.4D有以下程序,其运行后的输出结果是(C)。

main()

{intx=1,y=2,z;

z=x/y;

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

}

A.1/2 B.0.5 C.0 D.1设变量已正确定义,以下不能统计出一行中输入字符个数的是(D)。

A.n=0;while((ch=getchar())!=′\n′)n++;B.n=0;while(getchar()!=′\n′)n++;

C.for(n=0;getchar()!=′\n′;n++);D.n=0;for(ch=getchar();ch!=′\n′;n++);有以下定义:

inta[]={0,1,2,3,4};

charc1='b',c2='1';

则数值为3的表达式是(B)。

A.a[2]B.'e'-c1C.a[4-c2]D.c2+1有以下定义:

charc1="abcdef";

charc2={'a','b','c','d','e','f'};

则正确的叙述是(C)。

A.数组c1和数组c2等价。B.数组c1和数组c2的长度相等。

C.数组c1的长度大于数组c2的长度。D.数组c1的长度小于数组c2的长度。C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)。

A.float型B.int型

C.long型D.double型#include<string.h>

main()

{charp[20]={‘a’,’b’,’c’,’d’},q[]=”abc”,r[]=”abcde”;

strcpy(p+strlen(q),r);strcat(p,q);

printf(”%d%d\n”,sizeof(p),strlen(p));

}程序运行后的输出结果是()

A.209B.99C以下正确的说法是()

如果在一个函数中的复合语句中定义了一个变量,则该变量

A.只在该复合语句中有效B.在该函数中有效

C.在本程序范围内均有效D.为非法变量以下正确的函数形式是()

A.doublefun(intx,inty)

{z=x+y

;returnz

;}

B.fun(intx,y);

{intz

;returnz

;}

C.fun(x;y)

{intx,y

;doublez

;z=x+y

;returnz

;}

D.doublefun(intx,inty)

{doublez

;z=x+y

;returnz

;}若有定义inta[][3]={1,2,3,4,5,6};,下面()能访问元素5。

A.A[4]B.a[0]+4C.**a+4D.*(&a[0][0]+4)若有chars[10],*p=s;,则下面表达式正确的是()

A.s=p+s;B.p=s[0]+10;C.s[2]=p[4];D.p=s[0];定义unions{intw,x,y,z;charc[6];};,则sizeof(unions)=()

A.2B.6C.8D.14C语言规定,函数返回值的类型是由()。

A.return语句中的表达式类型所决定。

B.调用该函数时的主调函数类型所决定。

C.调用该函数时系统临时决定。

D.在定义该函数时所指定的函数类型所决定。设已有定义:intx;,则下列对指针变量p进行定义且赋初值的语句中正确的是()。

A.int*p=1024;B.int*p=(int)x;C.intp=&x;D.int*p=&x;有下列程序:

floatf1(floata)

{returna*a;

}

floatf2(floatb)

{return3*b;

}

main()

{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;

p1=f1;p2=f2;

y1=p2(p1(3.0));

t=p1;p1=p2;p2=t;

y2=p2(p1(3.0));

printf("%3.0f,%3.0f\n",y1,y2);

}

程序运行后的输出结果是(B)。

A.27,8B.27,81C.2,8D.2,81定义typedefstruct{intx;}A[10];Aa;,下面正确的是(B)。

A.a.x=30;B.a[0].x=30;C.a.A[0].x=30;D.A[0].x=20;结构化程序设计的基本原则不包括()。

A.多元性B.自顶向下

C.模块化D.逐步求精若函数中有定义语句:intk;,则()

A.系统将自动给k赋初值0B.这时k中的值无定义

C.系统将自动给k赋初值-1D.这时k中无任何值以下不能定义为用户标识符的是()。

A.Main B._0 C._int D.sizeof

下列运算符中,优先级最低的是()。

A.*B.!=C.+D.=若有以下类型说明语句:

chara;intb;floatc;shortintd;

则表达式(c*b+a)*d的结果类型是()。

A.charB.intC.doubleD.float有以下程序,程序的运行结果是()。

#include<stdio.h>

voidmain()

{intx=8;

for(;x>0;x--)

{if(x%3){printf("%d,",x--);continue;}

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

}

}

A.7,4,2 B.8,7,5,2, C.9,7,6,4, D.8,5,4,2,有以下程序

#include<stdio.h>

voidmain()

{inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;

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

for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}

for(i=0;i<4;i++)printf("%d,",a[0][i]);

}程序运行后的结果是()。

A.6,2,1,1,B.6,4,3,2,C.1,1,2,6,D.2,3,4,6,有以下程序

#include<stdio.h>

voidmain()

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

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

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

for(k=j+1;k<4;k++)

if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}

for(i=0;i<4;i++)printf("%d,",a[i][i]);

}程序运行后的结果是()。

A.1,6,11,16,B.1,7,11,12,C.1,7,11,13,D.1,6,2,11,在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。

A.auto和registerB.extern和registerC.auto和staticD.static和register有以下程序,输出结果是()。

#include<stdio.h>

voidfun(inta,intb,intc)

{a=456;b=567;c=678;}

voidmain()

{intx=10,y=20,z=30;

fun(x,y,z);

printf("%d,%d,%d",x,y,z);

}

A.30,20,10B.10,20,30C.456,567,678D下列程序的输出结果是()。

voidmain()

{inta[2][3],*p,i;

p=&a[0][0];

for(i=0;i<6;i++)p[i]=i;

for(i=0;i<3;i++)printf("%d",a[1][i]);

}

A.123B.345C.234D.245若有chars[10],*p=s;,则下面表达式正确的是()。

A.s=p+s;B.p=s+10;C.s[2]=p[4];D.p=s[0];关于结构类型的成员类型,下列说法正确的是()。

A.成员类型必须是基本数据类型B.每个成员类型必须为同一种

C.成员不可以定义为自身类型的指针D.以上说法均不正确若运行时给变量x输入12,则以下程序的运行结果是()。

main()

{

int

x,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

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

}

A.0B.22C.二、填空题算法具有有穷性、可行性、确定性、、输出等5个主要特征。设A为int型的一维数组,如果A的首地址为p,那么A中第i个元素的地址为。人们根据特定的需要,预先为计算机编制的指令序列称为。若以指数形式输出一个浮点数,则对应的格式控制字符为。设变量i已正确定义为整型,且初值为0,则printf(“%d,%”,i++,i++)的输出结果是。设有变量定义为inta[3]={1,4,7},*p=&a[2];,*p的值是。结构变量可以作为函数的参数和返回值类型,以方式传递参数。结构指针是结构变量的内存地址,保存该指针的变量称为。

逻辑运算的值也为“真”和“假”两种,在C语言中“真”用,“假”用0来表示。for(i=0;;i++);如果此for语句要执行10次,则需要在空白处填写。若k为整型变量,则下面while循环执行的次数为:。

k=10;

while(k==0)k=k-1;若有定义:intk;,以下程序段的输出结果是。

for(k=2;k<6;k++,k++)printf("##%d",k);有以下定义:floatb[20];

则数组b共有20个元素,其中的第一个元素为b[0],最后一个元素为。若有定义:intk;,以下程序段的输出结果是。

for(k=2;k<6;k++,k++)printf("##%d",k);for(i=0;i<10;i++);结束后,i的值是。对定义语句chars[]="abcd";则数组的长度是。函数调用语句“f((e1,e2),(e3,e4,e5))”中参数的个数是。在C语言中,一个函数一般由两个部分组成,它们是函数头和。根据变量作用域的不同可以将变量分为局部变量和。指针是C语言的重要特色,实际上它代表了机器的。结构类型的定义需要以关键字开始,其关键字为。for(i=0;i<10;i++);结束后,i的值是。for(i=0;;i++);如果此for语句要执行10次,则需要在空白处填写。有以下定义:floatb[20];

则数组b共有个元素,在C语言中,递归函数分为直接递归和。有定义intarr[10]={0,1,2,3,4,5,6,7,8,9},*p,i=2;若执行语句:

p=arr;

printf(“%d”,*(p+i));

输出结果为:。结构数组是以为基类型的数组,下标运算可以访问每个结构元素。指针变量虽然都是存放指针,但不同。使用结构中成员变量必须先写上结构变量名,中间以分割。若有定义:intk;,以下程序段的输出结果是。

for(k=2;k<6;k++,k++)printf("##%d",k);有以下定义:floatb[20];

则数组b共有20个元素,其中的第一个元素为,最后一个元素为b[19]。变量的存储类型有、static、register和extern四种。在C语言中,递归函数分为直接递归和。指针变量虽然都是存放指针,但不同。使用结构中成员变量必须先写上结构变量名,中间以分割。三、分析程序结果以下程序的输出结果为。

#include<stdio.h>

main()

{intn=12345,d;

while(n!=0){d=n%10;printf("%d",d);n/=10;}

}以下程序的输出结果为。

#include"stdio.h"

main()

{inti,a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

for(i=0;i<3;i++)printf("%d,",a[i][i]);

}以下程序的输出结果为。

#include<stdio.h>

main()

{inti,j,sum;

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

{sum=0;

for(j=1;j<=i;j++)sum+=i*j;}

printf("%d\n",sum);}以下程序的执行结果是。

#include"stdio.h"

main()

{inti;

inta[3][2]={5,10,15,20,25};

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

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

}有以下程序

#include<stdio.h>

intk=1;

main()

{

inti=4;

fun(i);

printf(“(1)%d,%d\n”,i,k);

}

fun(intm)

{

m+=k;k+=m;

{

chark=’B’;

printf(“(2)%d\n”,k-‘A’);

}

printf(“(3)%d,%d\n”,m,k);

}

程序的运行结果是以下程序的输出结果是

#include<stdio.h>

main()

{ inti;

for(i=’a’;i<’f’;i++,i++)printf("%c",i-’a’+’A’);

printf("\n");

}以下程序的输出结果为。

main()

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}以下程序的输出结果为。

#include"stdio.h"

main()

{intn[2]={0},i,j;

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

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

n[j]=j[i]+1;

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

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

}以下程序的输出结果为。

intx1=30,x2=40;

voidmain()

{intx3=10,x4=20;

intsub(intx,inty);sub(x3,x4);

sub(x2,x1);

printf("%d,%d,%d,%d\n",x3,x4,x1,x2);

}

sub(intx,inty)

{x1=x;

x=y;

y=x1;

}以下程序的输出结果为。

inta=3,b=5;

max(a,b)

{

intc;

c=a>b?a:b;

return(c);

}

main()

{

inta=8;

printf("%d",max(a,b));}以下程序的输出结果是

#include<stdio.h>

intf(intx)

{inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

main()

{intz;

z=f(3);printf("%d\n",z);

}以下程序的输出结果是:

#include"stdio.h"

#defineN6

main()

{charc[N];inti;

for(i=0;i<N;i++)c[i]=getchar();

for(i=0;i<N;i++)putchar(c[i]);

}

当运行程序时输入三行,每行都是在第一列上开始:

a<Enter>

b<Enter>

cdef<Enter>以下程序的输出结果是:

main()

{

incx();incy();incx();incy();incx();incy();

}

incx()

{

intx=0;

printf("x=%d\t",++x);

}

incy()

{

staticinty=0;

printf("\ny=%d\n",++y);

}四、程序改错题(不得增加或删除行)使用for循环变成求出1-n的和,n值由键盘输入。

#include"stdio.h"

voidmain()

{

inti;n,s=0;//改正(4)

scanf("%d",n);//改正(5)

for(i=1,i<=n;i++)//改正 (6)

s=s+i;

printf("\ns=%d\n",s);}从键盘上输入10个整数,求出其中的最小值。

#include"stdio.h"

voidmain()

{

inti,x,min,//改正(4)

scanf("%d",&x);

min=x;

for(i=0,i<9,i++)//改正(5)

{

scanf("%d",&x);

if(min<x)//改正(6)

min=x;

}

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

}下面程序中有两处语法错误的部分,请找出并改正。

#include<stdio.h>

voida(inti)

{intj;//改正(7)

for(j=0;j<=7-i;j++)printf("");

for(k=0;k<2*i+1;k++)printf("*");

putchar("\n");//改正(8)

}

voidmain()

{inti;

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

for(i=3;i>=0;i--)a(i);

}下面程序实现利用一维字符数组输入并输出一个字符串,改正其中的三处错误。

#include<stdio.h>

voidmain()

{charc[20];

inti=0,j;

printf("请输入一个字符串:\n");

scanf("%c",c[i]);//改正(4)

while(c[i]!='\0')//改正(5)

{i++;

scanf("%d",&c[i]);//改正(6)

}

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

printf("%c",c[j]);

printf("\n");

}冒泡排序。

#include"stdio.h"

main()

{ inta[8],i,j,temp;

printf("请输入8个整数:\n");

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

scanf("%d",&a+i);//改正(7)

for(i=1;i<=7;i++)

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

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

{temp=a[j+1];//改正(8)

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

a[j+1]=temp;

}

printf("排序后:\n");

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

printf("%d,",a[i]);}从键盘上输入10个整数,求出其中的最大值。

#include"stdio.h"

voidmain//改正(4)

{

inti,x,max;

scanf("%f",&x);//改正(5)

max=x;

for(i=0;i<9;i++);//改正(6)

{

scanf("%d",&x);

if(max<x)

max=x;

}

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

}调用函数实现字符串的输出。

#include<stdio.h>

voidmain()

{

voidprint_message;//改正(7)

print_message();

}

print_message()

;//改正(8)

{

printf("Howdoyoudo!\n");

}

从键盘上输入10个整数,求出它们的平均值。

#include"stdio.h"

voidmain//改正(4)

{

inti,x,s=0;

floataver=0.0;

for(i=0;i<10;i++){

scanf("%d",x);//改正(5)

s=s*x;//改正(6)

}

aver=s/10.0;

printf("aver=%f\n",aver);

}以下程序的输出结果为。

#include<stdio.h>

voidfun(intx)

{

if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{

fun(3);printf("\n");

}

程序运行后的结果为789。

#include<stdio.h>

f(inta)

{

intb=1;//改正(6)

intc=3;//改正(7)

b++;

c++;

f(a)=a+b+c;//改正(8)

}

voidmain()

{

inta=2,i;

for(i=0;i<3;i++)printf("%4d",f(a));

}修改下面折半查找程序中的三处错误。

#include<stdio.h>

#definem8

voidmain()

{ inta[m]={-2,1,3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论