二级C语言考试复习资料01.docx

上传人:b****8 文档编号:9139230 上传时间:2023-02-03 格式:DOCX 页数:93 大小:62.10KB
下载 相关 举报
二级C语言考试复习资料01.docx_第1页
第1页 / 共93页
二级C语言考试复习资料01.docx_第2页
第2页 / 共93页
二级C语言考试复习资料01.docx_第3页
第3页 / 共93页
二级C语言考试复习资料01.docx_第4页
第4页 / 共93页
二级C语言考试复习资料01.docx_第5页
第5页 / 共93页
点击查看更多>>
下载资源
资源描述

二级C语言考试复习资料01.docx

《二级C语言考试复习资料01.docx》由会员分享,可在线阅读,更多相关《二级C语言考试复习资料01.docx(93页珍藏版)》请在冰豆网上搜索。

二级C语言考试复习资料01.docx

二级C语言考试复习资料01

二级C语言考试复习资料

1、找出1~100中其各位数的乘积大于各位数的和的所有整数

#include"stdio.h"

main()

{intk=1,s=0,m,n;

printf("\n");

for(n=1;n<=100;n++)

{k=1,s=0;

m=n;

while(m%10)

{k*=m%10;s+=m%10;

m=m/10;}

if(k>s&&s)printf("%4d",n);

}

}

2、编程实现:

学校买校服小于50套90元一套元一条,超过50套80元一套,单件上衣60元一件,裤子45元一条,现需购买M套上衣,N套裤子,共需多少钱?

#include"stdio.h"

main()

{intm,n,s,k;

printf("pleaseinputtheclouthnumble:

mandtheshirtnumble:

n\n");

scanf("%d,%d",&m,&n);

if(m==n)

{if(m>50)s=80*m;s=90*m;}

if(m>n)

{

k=m-n;

if(n>50)s=80*n+k*60;elses=90*n+k*60;

}

else

{

k=n-m;

if(m>50)s=80*m+k*45;elses=90*m+k*45;

}

printf("s=%d",s);

}

3、如果a=1,b=2,c=0,k=2写出表达式k

k:

c?

k:

c

c:

a结果是C的值

include"stdio.h"

main()

{

inta,b,c,k;

a=4;b=5;c=1;k=6;

k=k

k:

c?

k:

c

c:

a;

printf("k=%d",k);

}

4、若有如下定义和说明则P+1代表的是元素(a[0][1])的地址.

inta[2][3],(*P)[3];P=a;

5、画矩阵n=4

n=5

main()

{

inta[10][10],m,n,i,j;

scanf("%d",&n);

if(n%2==0)m=n/2;elsem=n/2+1;

for(i=0;i

for(j=i;j

{

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

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

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

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

}

for(i=0;i

{

for(j=0;j

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

}

}

6、画n层金字塔

main()

{

inti,j,m,n;

printf(“pleaseinputn:

\n”);

scanf(“%d”,&n);

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

{

for(j=1;j<=n-1;j++)printf”(““);//画空格

for(k=1;k<=2*i-1;k++)printf(“*“);//画星号

printf(“\n”);

}

}

7、求下列表达式的值

1)若a是int变量,a=6;则a+=a-=a*a的值是-60

2)若a,b是int变量,a=6,b=5;则a%=(b%=2)的值是0

3)若x=2.5,a=7,y=4.7则x+a%3*(int)(x+y)%2/4值是2.5

4)a=2,b=3,x=2.5y=2.5则(float)(a+b)/2+(int)x%(int)y值是2.5

5)intx,y,z,k;x=(y=52,z=26,k=32)后x的值是32

6)语句printf(“%d”,stramp(“TEH”,”THE”));的结果是-3

main()

{

printf("%d",strcmp("TEH","THE"));

}

8、找出1~100中能被3整除且个位数是6的所有整数

main()

{

inti,j;

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

if((i*10+6)%3==0)printf("%-4d",i*10+6);elsecontinue;

}

9、假如m是一个三位数abc,由a、b、c组成另一个三位数cba,则表达式是:

因为c=m%10,b=(m/10)%10,a=m/100,所以结果是:

(m%10)*100+((m/10)%10)*10+m/100.

程序如下:

main()

{

intm;

printf("pleaseinput3bitnumblem=abc:

\n");

scanf("%d",&m);

printf("m.a=%d,m.b=%d,m.c=%d\n",m/100,(m/10)%10,m%10);

printf("cba=%d\n",(m%10)*100+((m/10)%10)*10+m/100);

}

9、编程计算找出x,y,x中的最小值:

voidmain(void)

{

intx=4,y=5,z=8;

intu,v;

u=x

x;y;

v=u

u:

z;

printf(“min=%d”,v);

}

A.10、

11、写出下列程序运行结果:

(1)

main()

{

intx=2,y=-1,z=2;

if(x

if(y<0)z=0;

elsez=z+1;

printf(“%d”,z);

}

结果是2

(2)

main()

{

intx1=3,x2=0,x3=0;

if(x1=x2+x3)printf(“****”);elseprintf(“&&&&”);

}

结果是****想想为什么?

(3)

main()

{

inty=10;

do{y--;

printf("%d",y--);}

while(--y>0);

}

结果是9630

(4)

main()

{inta=6,b=5;

printf("%d",a%=(b%=2));

}结果是0

(5)

#definePx+x

main()

{

intx=5,y;

y=P*P;

printf("%d",y);

}结果是35

(6)

main()

{

inta=12,b=12;

printf(“%d%d”,--a,++b)’

}结果是1113

(7)

main()

{

inta=2,b=3,c;

c=1.0/b*a;

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

}结果是0和下面程序对比有什么不同

main()

{

inta=2,b=3;floatc;

c=1.0/b*a;

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

}

(8)

main()

{

inty=10;

while(y--);

printf(“y=%d”,y);

}结果是-1

(9)

intf(intx)

{

staticintm=0;

m+=2;

return(m+x);

}

main()

{

inti;

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

printf(“%d,”,f(i));

}结果是3,6,9,12,

(10)

#include”string.h”

voidfun(char*w,inym)

{

chars,*p,*p2;

p1=w;p2=w+m-1;

while(p1

{s=*p1++;*p1=*p2--;*p2=s;}

}

main()

chara[]=”abcdefg”;

fun(a,strlen(a));

puts(a);

}结果是agaagag

12编程实现去掉一个英语句子中多余空格

main()

{

charc[80]="Iam16.";intflag=0,i=0;

for(i=0;c[i]!

='\0';i++)

{

if(c[i]!

=''){printf("%c",c[i]);flag=1;}

elseif(c[i]==''&&flag==1){printf("%c",c[i]);flag=0;

}

}

13、编程实现输入一组数,输出偶数

include"stdio.h"

#include"math.h"

main()

{

inti,j,a[10],b[10];

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

a[i]=rand();

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

{if((a[i]%2)==0)b[j++]=a[i];

elsecontinue;}

for(i=0;i

printf("%d,",b[i]);

}

14、编程求最大公约数和最小公倍数

main()

{

inta,b,p,temp,t;

scanf("%d,%d",&a,&b);

if(a

p=a*b;

while(b!

=0)

{

t=a%b;

a=b;

b=t;

}

printf("maxyonumble=%d",a);

printf("mainbeinumble=%d",p/a);

}

15、选择法排序

main()

{

inti,j,min,t,a[11];

printf("inputdata:

\n");

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

{printf("a[%d]=",i);

scanf("%d",&a[i]);}

printf("\n");

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

printf("%5d",a[i]);

printf("\n");

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

{

min=i;

for(j=i+1;j<=10;j++)

if(a[min]>a[j])min=j;

{t=a[i];a[i]=a[min];a[min]=t;}

}

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

printf("%5d",a[i]);

}

16写一个函数用冒泡法对十个字符排序

#include"string.h"

voidsort(chara[])

{

inti,j;

chart;

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

for(j=0;j<10-i&&a[i]!

='\0';j++)

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

{

t=a[j];

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

a[j+1]=t;

}

}

main()

{

inti;

chara[20];

gets(a);

sort(a);

puts(a);

}

17、在一组有序数中插入一个数后仍然有序

main()

{inta[11]={1,10,20,30,40,50,60,70,80,90};

intx,n,end,i;

printf("pleaseinsertdata:

\n");

scanf("%d",&x);

if(x>a[9])a[10]=x;

else

{

n=0;

while(x>a[n])

n++;

for(i=10;i>n;i--)

a[i]=a[i-1];

a[n]=x;

}

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

printf("%5d",a[i]);

}

18、输出乘法口诀表

main()

{

inti,j;

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

{

for(j=1;j<=9;j++)

printf(“%d*%d=%-4d”,i,j,i*j);

printf(“\n”);

}

}

19、键盘上输入一个字符串将其中的小写字母全部换成大写字母,然后输出到文件“test”中保存,文件以!

结束

main()

{

FILE*fp;

chara[100];

inti=0;

if((fp=fopen(“test”,”w”)==NULL)

{

printf(“Cannotopenthefile\n”);

exit(0);

}

printf(:

inputonestring:

\n”);

gets(a);

while(a[i]!

=’!

’)

{

if(a[i]>=’a’&&a[i]<=’z’)a[i]=a[i]-32;

fput(a[i],fp);

i++;

}

fclose(fp);

fp=fopen(“test”,”r”);

fgets(a,strlen(a)+1,fp);

printf(%s\n”,a);

fclose(fp);

}

20、选择题

1)下列算术运算符中,只能用于整型的是(D)

A--B.+C./D.%

2)判断字符串ab是否相等应当使用(D)

A.if(a==b)B.if(a=b)C.if(strcpy(a,b))D.if(strcmp(a,b))

3)有intk=7,x=12;则能使值为3的表达式是(C)

A.x%=(k%=5)B.x%=(x-k%5)C.x%=k+k%5D.(k%=5)-(x%=k)

4)已知inta;floati=2;下列合法的语句是()

A.a==1B.++i;C.a=a++=5;D.a=int(i);

5)在C语言中合法的字符常量是(B)

A‘\084’B‘\x48’C.”48”D.‘\48’

6)下面关于switch和break语句说法正确的是(B)

A.break是switch的一部分;

B.在switch中可根椐需要使用和不使用break语句;

C.在switch中必须使用break语句;

D.以上三个结论有两个是正确的

7)能正确表示a和b同时为正或同时为负的逻辑表达式是(D)

A.(a>=0||b>=0)&&(a<0||b<0)

B.(a>=0&&b>=0)&&(a<0&&b<0)

C.((a+b)>0&&(a+b<=0)

D.a*b>0

8)函数的定义和引用中以下下说法正确的是(B)

A.必须有形参B。

可以没有形参

B.C.数组名不能作形参D。

形参必须是变量名

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

A.只在该复合语句有效;

B.在函数内有效;

C.不能在复合语句中定义变量;

D.在程序文件范围内有效;

10)C语言中(D)存储类型的变量只在使用时分配空间

A.static和auto

B.register和extern

C.register和static

D.auto和register

11)下列说法正确的是(B)

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

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

C.函数的定义和调用都不能嵌套

D.函数的定义和调用都可以嵌套

如果限制一个变量只能被本程序使用,必须通过(C)来实现

A.静态内部变量B、外部变量说明C、静态外部变量D、局部变量说明

12)下列说法正确的是(A)

A.C语言由1个或多个函数组成

B.一个C程序必须包含在一个源文件中

C.一个函数可以定义其他函数

D.所有函数必须在一个源文件内

13)一个被调用函数无返回语句,则函数返回值的类型是(D)

A、charB.intC.无返回值D、无法确定

14)对宏命令的处理是(B )

A、在程序执行时进行B、在程序对其它语句进行编译前进行

C、在程序连接时进行D、与程序中其它语句同时进行编译

15)下列说法正确的是(C)

A、预处理命令只能位于程序开始处

B、预处理功能是指宏替换和文件包含调用

C、只要#标识的控制行老师预处理命令

D、上述说法都对

16)return的说法正确的是(C)

A、必须在每个函数中出现

B、只能在非主函数中出现一次

C、可以在一个函数中多次出现

D、在主函数和其它函数中都可以出现

17)下列说法不正确的是(B)

A、形参是局部变量B、主函数中定义的变量在整个文件都有效

C、可以在一个函数的复合语句中定义变量

D、不同函数可以使用相同变量名

18)建立函数的主要目的之一是(b)。

A.提高程序的执行效率B.提高程序的可读性

C.减少程序的篇幅D.减少程序文件所占内存

19)以下关于预处理的叙述中不正确的是(c)。

A.C源程序中凡是以"#"号开始的控制行都是预处理命令行B.预处理命令行必须位于源程序的开始部位C.一条有效的预处理命令行必须单独占据一行D.预处理命令是在正式编译之前先行被处理的

20)若有以下说明和语句,则对结构体变量std中成员id的引用方式不正确的是(a)。

structwork

{

intid;

intname;

}

std,*p;

p=&s+d;

A.std.idB.*p.idC.(*p).idD.p->id

21)下列运算符中优先级最高的是(b)。

A.

22)设有说明:

doubley=0.5,z=1.5;intx=10;则能够正确使用C语言库函数的赋值语句是(d)。

A.z=ln(y)+abs(y);B.y=log10(y)+pow(y);

C.z=sqrt(y-z);D.x=(int)(atan2((double)x,y)+exp(y-0.2));

23)若运行以下程序时,从键盘输入2473,则下面程序的运行结果是(a)。

#include

voidmain(void)

{

intc;

while((c=getchar())!

='\n')

switch(c-'2')

{

case0:

case1:

putchar(c+4);

case2:

putchar(c+4);break;

case3:

putchar(c+3);

default:

putchar(c+2);break;

}

printf("\n");

}

A.668977B.668966C.66778777D.6688766

.24)对for(表达式1;;表达式3)可理解为(b)。

A.for(表达式1;0;表达式3)B.for(表达式1;1;表达式3)C.for(表达式1;表达式1;表达式3)D.for(表达式1;表达式3;表达式3)

25)在访问一个结构元素前你必须定义(B)

A、结构体B、结构体变量C、定义结构指针D、A和B

26)

21、填空题

1)C语言中数据的基本类型有整型、实型、字符型、板举型。

2)C语言的三种基本结构是顺序结构、选择结构和循环结构。

3)若有定义:

inta[3][5],i,j;(且0≤i≤3,0≤j≤5),则a[i][j]的地址是(i-1)*5+j-1

可用五种形式表示。

它们是:

(1)&a[i][j]

(2)a[i]+j

(3)*(a+i)+j

(4)&a[0][0]+()

(5)a[0]+(5*i+j)

4)利用指针参数或记录类型作为返回值类型可以使一个函数返回多个值。

5)指针实际是机器的内存地址。

6)二维数组有两个下标分别用一对方括号括起。

7)void*是无基类型指针类型

8)数组指针是指数组在内存的首地址

9)函数的返回值和参数可以是指针。

10)二维数组名是一维数组的指针常量

11)整型和实型可以转换,但整型指针和实型指针不能转换。

12)在C语言中把文件缓冲区中数据写入文件进程称为输出从文件读取数据称为输入

13)C语言文件分为文本文件和二进制文件,若称为流式文件由字符(或字节)组成不是由记录组成

14)文件操作的一般顺序是打开文件、读写文件、关闭文件

15)fputs(str,fp)的功能是把str所指向的字符串输出到fp所指的文件中,但不输出字符串结束符’\0\

22、判断题

1)字符型数据在内存中以其相应的ASCII码存储。

(A)

A.正确。

B.错误。

2)若用数组名作为函数调用时的实参,则传递给形参的是数组的第一个元素值。

(B)

A.正确。

B.错误。

3).已知intx,y,z;则赋值语句x+y=z;是非法的。

(A)

A.正确。

B.错误。

4).使用宏来代替与其功能相同的函数可以提高程序的运行速度。

(A)

A.正确。

B.错误。

5).在switch语句中必须使用break语句。

(B)

A.正确。

B.错误。

6).有定义int*p,则*p是p所指向的变量,p是指针变量。

(A)

A.正确。

B.错误。

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

(B)

A.正确。

B.错误。

8).若以"a+"方式打开一个已经存在的文件,则原有文件的内容不被删除,位置指针移到文件尾部,可以添加和读取数据。

(A)

A.正确。

B.错误。

9).inta[][3]={{1,0,1},{},{1,1}}是对二维数组a进行正确初始化的语句。

(A)

A.正确。

B.错误。

10).若fp是指向某文件的指针,并且已读到某文件的末尾,则函数feof(fp)的返回值是EOF。

(B)

A.正确。

B.错误。

全国高校计算机等级考试试题精选

(二级C)

(说明;二级C试题包括基础知识部分和语言部分,其中基础知识部分参考一级试题。

一、单项选择题:

1.#defne能作简单的替代,用宏替代计算多顶式4*x*x+3*x2之值的透数f,正确的宏定义是C

A)#definef(x)4*x+3*x+2

B)#definef4*x*x3*x+2

C)#definef(a)(4*a*a+3*a+2)

D)#define(4*a*a+3*a+2)f(a)

2.若intk=7,x=12,则使值为3的表达式是D。

A)x%b=(k%=5)

B)x%=(k=k%5)

C)x%=k%5

D)(X%=k)-(k%=5)

3.以下程序的正确运行结柔是D3.以下程序的正确运行结柔是D。

#defineMAX10

Inta[MAX],i

main()

{printf("\n"〕:

subl();sub3(a);sub();sub3(a):

}

sub2()

{inta[MAX],i.max;

nax=5:

for(i=0:

1

1++)a[1]=i:

}

sub1()

{for(i=0;1(MAX;i++)}a[i」=i+i:

}

sub3(inta[])

{inti:

for(i=0;1

Printt(’\n');

A)024681012141618

01234

B)01234

024681012141618

C)0123456789

01234

D)1681012141618

024681012141618

4.设有程序

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

当前位置:首页 > 人文社科 > 广告传媒

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

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