黄山学院c语言复习资料例题答案.docx

上传人:b****6 文档编号:6579037 上传时间:2023-01-08 格式:DOCX 页数:18 大小:26.22KB
下载 相关 举报
黄山学院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语言复习资料例题答案

二、类型及表达式

一)合法的标志符:

例题:

1.是合法的用户自定义标识符的(D)

A)ah-spksB)doubleC)D)_myapple

2.以下正确的C语言标识符是(C)

A)%xB)a+bC)a123D)test!

3.以下不能定义为用户标识符的是(C)

A)VoidB)b_2C)intD)name

二)合法的整型常量

例题:

1.以下选项中可作为C语言合法整数的是(D)

A)11010BB)0583C)x2b2D)0xafb

三)合法的实型常量

例题:

1.以下选项中可作为C语言合法常量的是(A)

A)-80.B)-080C)-8e1.0D)-80.0e

四)合法的字符型常量

例题:

1.设有说明语句:

chara=’\123’;则变量a(A)

A)包含1个字符B)包含2个字符C)3个字符D)说明不合法

2.C语言中,“\x5d”在内存中占用的字节数是( A )

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

3.字符串“\t\x42\\bcd\n”的长度是( A )。

  A)7B)10C)12D)13

五)各种基本类型变量所占的字节数

例题:

1.下列式中,值不为4的表达式是(C)

A)sizeof(unsignedlong)B)sizeof(long)C)sizeof(unsignedint)D)sizeof(float)

六)合法的表达式

例题:

1.设变量a、b、c已定义并赋值,则下列表达式中符合C语言语法规则的是(BC)

A)a=5++B)a=b=c++C)a%=2D)b=a+1=2

七)表达式的值

例题:

1.设整型变量a的值为2,下列表达式值为1的是(C)

A)a%3B)a/3C)--aD)a++

2.下列表达式的值为0的是( A )

A)7/8B)7%8C)7/8.0D)7<8

3.设floatm=4.0,n=4.0;使m为10.0的表达式是( D )

A)m-=n*2.5B)m/=n+9C)m*=n-6D)m+=n+2

4.逗号表达式(a=4*5,a*2),a+15的值是( A )

A)35B)40C)55D)20

八)++、--运算

例题:

当i=4,j=5时,表达式3-(i++)*4+(--j)的值如何,i,j的值多少?

表达式值为-9,i=5,j=4

九)表达式的类型

例题:

1.下列式中,最终运算结果的数据类型不是双精度的表达式的是(A)

A)(int)(3+3.0)B)1e-3C)(double)(3)D)(int)3.0+3.0

二、顺序结构

例题:

1.putchar函数可以向终端输出一个( D  )

A)整数  B)实数  C)字符串  D)字符

二)printf和scanf语句的使用方法:

例题:

1.设有语句scanf(%d,%d”,&m,&n);要使m、n的值依次是2、3,正确是输入是(B)

A)23B)2,3C)2;3D)2

2.设变量定义为inta,b;执行下列语句时,输入(B),则a和b的值都是10

scanf(“%d,%d”,&a,&b);

A)1010B)10,10C)a=10b=10D)a=10,b=10

3.有以下程序

main()

{intm,n,p;

  scanf("m=%dn=%dp=%d",&m,&n,&p);

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

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是( A )

A)m=123n=456p=789  B)m=123n=456p=789

C)m=123,n=456,p=789  D)123456789

例题:

1.有如下程序段:

inta=3,b=15;

floatf=7.5;

printf(“%.1f”,(float)a+b/2+(int)f%3);

执行该程序段后,运算结果为:

(B)

A)11.5B)11.0C)11D)12.0

三、选择结构

一)关系表达式、逻辑表达式和条件表达式

例题:

1.在C程序中,用(B)表示逻辑”真”。

A)1B)非0的数C)非1的数D)大于0的数

2.若有定义:

intx=2,y=3,z=4;则表达式!

(x+y)+z-1&&y+z%2的值为( C )

 A)4B)0C)1D)2

3.设inta=0,b=0,c=0;c=++a||b++;则a、b、c值分别为(d) 

A)010B)111C)110D)101

4.执行语句:

inta=1,b=0,c;c=a>0||++b;后,b的值为(a)

A)0B)1C)2D)不确定

5.设intx,y,z=4;x=y=++z;x=(y>z)?

x+2:

x++;则x的值是(C)

A)4B)5C)6D)7

6.为表示关系x>y>=z,则正确的c语言表达方式为( C )。

A)(x>y>=z)B)(x>y)and(y>=z)

C)(y=z)D)(x>y)&(y>=z)

7.若变量ch为char类型,能正确判断出ch为大写字母的表达式是(D)

A)’A’<=CH<=‘Z’B)(ch>=’A’)||(ch<=’Z’)

C)(‘A’<=ch)and(‘Z’>=ch)D)(ch>=’A’)&&(ch<=’Z’)

二)if语句

例题:

1.有以下程序

main()

{inta=0,b=0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

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

}

程序输出( D  )

A)0,1,2,0  B)0,0,0,3  C)1,1,2,0  D)编译有错

2.以下程序运行后的输出结果是 4599 

main()

{

  inta=3,b=4,c=5,t=99;

  if(b

  if(a

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

}

三)switch语句

(1)switch的执行过程

(2)break的用法

例题:

1.#include

main()

{intx=1,y=1,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:

a++;

case1:

b++;

case2:

b++;break;

}

case2:

a++;b++;break;

case3:

a++;b++;

}

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

}

输出结果:

a=1,b=3

2.#include输入:

3210 

main()

{charc;

while((c=getchar())!

=’\n’)

{switch(c-‘1’)

{case0:

case1:

putchar(c+2);

case2:

putchar(c+3);break;

case3:

putchar(c+4);

default:

putchar(c+1);break;

}

printf(“\n”);

}

}

输出结果:

6

45

34

1

四)算法

输入出租车里程S,输出应付车费F。

S和F的关系如下:

#include

voidmain()

{floatS,F;

scanf(“%f”,&S);

if(S<=3)F=8;

elseF=8+(S-3)*2;

printf(“F=%f\n”,F);

}

四、循环结构

一)循环条件均以条件为真(非0)进行循环,以条件为假(0)结束循环)

例题:

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

A)do-while语句构成的循环不能用其它语句构成的循环来代替

B)do-while语句构成的循环只能用break语句退出

C)do-while语句构成的循环,在while后的表达式为非零时结束循环

D)do-while语句构成的循环,在while后的表达式为零时结束循环

2.设有程序段:

    intk=10;

while(k=0)k=k-1;

则循环体执行的次数为( C)

A)10次  B)9次  C)0次  D)1次

3.下列(D)循环不是无限循环

A)for(y=0;x=1;++y);B)for(;;x=0);

C)while(x=1){x=1;}D)for(y=0,x=1;x>++y;x++)

二)三种循环的执行流程

例题:

1.设变量y值为3,执行下列循环语句后,变量y的值的是(C)

doy++;while(y++<4);

A)3B)4C)5D)6

2.执行语句for(I=1;I++<4;);后变量I的值是(C)

A)3B)4C)5D)0

三)循环嵌套的执行次数

例题:

1.#include“stdio.h”

voidmain()

{intI,j;

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

{for(j=0;j

printf(”%d”,I);

printf(“*\n”);

}

}

输出结果:

*

1*

22*

333*

四)break和continue的用法

例题:

1.有以下程序

voidmain()

{inta=1,b;

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

{if(a>=8)break;

if(a%2==1){a+=5;continue;}

a-=3;

}

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

}

输出结果:

4

2.#include

voidmain()

{intI,m=0,n=0,k=0;

for(I=5;I<=7;I++)

switch(i/6)

{case0:

m++;n++;

case6:

n++;break;

default:

k++;n++;

}

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

}

输出结果:

1,4,2

算法略

五、数组

一)数组语法

1.数组定义为inta[10][10];,则数组a有(A)个数组元素。

A)100B)81C)20D)121

2.以下一维数组a的正确定义是(D)

A)inta(10);B)intn=10,a[n];

C)intn;D)#defineN10

Scanf(“%d”,&n);inta[N];

Inta[n];

3.设有语句”inta[]={3,4,5,9,8,7};”则表达式a[1]-a[4]的值是(C)

A)-6B)6C)-4D)2

4.以下不能正确定义二维数组的是( D )

A)inta[2][2]={{4},{5}};B)inta[][2]={4,5,6,7};

C)inta[2][2]={{4},5,6};D)inta[2][]={{4,5},.{6,7}};

二)字符串

例题:

1.以下程序的输出结果是(B)

#include

#include

main()

{charst[20]=”2000\0\t\\”;

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

}

A)7,7B)4,20C)10,20D)20,20

2.要将字符串a连接到字符串b后面,使用下面(D)语句

A)strcpy(a,b);B)strcat(a,b);C)strcpy(b,a);D)strcat(b,a)

三)算法

例题:

1.已知字符串chars[50]=”Iamstudent.”,请编写程序将字符a插入到student之前,结果为“Iamastudent”。

程序如下:

#include

#include

voidmain()

{

cars[50]=”Iamstudent.”;

intj,len;

len=strlen(s);

s[len+1]=’\0’

for(j=len-1;j>=3;j--)

s[j+1]=s[j];

s[3]=’\0’

puts(s);

}

2.有一个3×4的矩阵,要求编程以求出其中值最大的那个元素,以及它所在的行号和列号。

程序如下:

#include

voidmain()

{

inti,j,row,col,max;

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

max=a[0][0];

for(i=0;i<_3_;i++)/*$BLANK1$*/

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

if(a[i][j]>max)/*$BLANK2$*/

{

max=_a[i][j]__;/*$BLANK3$*/

row=i;

col=j;

}

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

}

六、函数

一)函数语法

例题:

1.在C程序中,若对函数类型未加说明,则函数的隐含类型为(A)

A)intB)doubleC)voidD)char

2.C语言中的函数(D)

A)可以嵌套定义B)不可以嵌套调用

C)可以嵌套定义,但不能递归调用D)嵌套调用和递归调用都可以。

3.有以下函数定义:

voidfun(intn,doublex){…………}

下面函数调用正确的是( A )

A)fun(x,n)B)k=fun(10,12.5)

C)fun(intx,doubley)D)voidfun(n,x)

4.有以下程序

#defineN20

fun(inta[],intn,intm)

{inti,j;

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

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

}

main()

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

fun(a,2,9);

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

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

}

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

A)10234B)12344C)12334D)12234

5.有以下程序

voidsum(inta[])

{a[0]=a[-1]+a[1];}

main()

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

sum(&a[2]);

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

}

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

A)6B)7C)5D)8

6.以下程序运行后的输出结果是:

43

34

43

43

二)递归函数

例题:

【程序1】#include”stdio.h”

intfun(intn)

{if(n<10)returnn;

else

return(n%10)*fun(n/10);

}

main()

{printf(“%d”,fun(218));}

运行结果:

16

【程序2】

#include

longfun(intn)

{longs;

if(n==1||n==2)s=2;

elses=n+fun(n-1);

returns;

}

voidmain()

{printf(“\n%ld”,fun(5));}

运行结果:

14

三)变量的作用域和存储类型(见课件)

例题:

1.C语言auto型变量是(A)

A)存储在动态存储区中B)存储在静态存储区中

C)存储在外存储器中D)存储在计算机CPU的寄存器中

【程序1】intw=2;

intf(intx)

{inty=1;

staticintz=3;

y++;z++;

return(x+y+z);

}

main()

{intk;

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

printf(“%4d”,f(w++));

}

运行结果:

81012

【程序2】以下程序运行后的输出结果是:

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

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

printf("%d%d",i,fun(a));

printf("\n");

}

运行结果:

010111212

七、指针

例题:

1.设有定义:

ints[]={1,3,5,7,9},*p=&s[0];则值为7的表达式是(C)

A)*p+3B)*p+4C)*(p+3)D)*(p+4)

2.若有以下定义,则值为4的表达式是(A)

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

A)p+=3,*(p++)B)p+=3,*++pC)p+=4,*p++D)p+=4,++*p

3.若有定义及赋值:

inta[10]={0,1,2,3,4,5,6,7,8,9},*p;p=a;则引用a中的值是5的元素的表达式为(C)

A)a[4]B)*(p+4)C)*(a+5)D)*p[5]

4.设intx[]={1,2,3,4,5,6},*p=x;则值为3的表达式是(A)

A)p+=2,*p++B)p+=2,*++p

C)p+=3D)p+=2,++*p

5.若有定义及赋值:

inta[5][5],(*p)[5];p=a;则下列各式中表示地址的表达式为(C)

A)a[3][3]B)*(*(p+1))C)a[2]+2D)*(*(a+3)+1)

6.设有一下语句

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

则*(*(a+2)+1)( D)

A)3B)4C)5D)6

四)字符串及字符串数组涵义

例题:

1.不正确的赋值或赋初值方式是(B)

A)charstr[]=”Hell02006”B)charstr[20];str=”Hell02006”;

C)char*p=”Hell02006”D)char*p;p=”Hell02006”

2.下列语句中合法的数组定义是( D)

A)chara[3][]={‘abc’,’12’,”fox”}

B)chara[][3]={‘abc’,’12’,”cd”}

C)chara[3][]={‘a’,”12”,”fox”}

D)chara[][3]={“a”,”12”,”cd”}

3.以下语句或语句组中,能正确进行字符串赋值的是(D)

A)char*sp;*sp="right!

";B)chars[10];s="right!

";

C)chars[10];*s="right!

";D)char*sp="right!

";

八、宏定义、结构体与共用体

一)宏定义

例题:

1.运行程序:

#defineTap(X)2*X+1

main()

{inta=6,k=2,m=1;

a+=Tap(k+m);

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

}则输出结果是(A)

A)12B)13C)7D)6

2.对于以下宏定义

#defineM(x)x*x

#defineN(x,y)M(x)+M(y)

宏调用N(2,2+5)执行后,值为(A)

A)21B)16C)9D)19

二)结构体

例题:

1.设有结构体及其数组和指针变量的定义语句

struct{intx;}y[2],*p=y;

则下列表达式中不正确的表示结构体成员的是(B)

A)(*p).xB)(p+1).xC)y[0].xD)(&y[1])->x

2.设有定义structst{intx;floaty;}time,*t;t=&time;则对于time中成员x的正确引用是(C)

A)w.time.xB)t.xC)(*t).xD)time->x

三)共用体

例题:

1.若定义unionex{intI;floatf;chara[10];}x;则sizeof(x)的值是(C)

A)4B)6C)10D)16

2.设有下列结构型变量w的定义,则表达式”sizeof(w)”的值是( C )

struct

{longnum;

charname[15];

union{floaty;shortz;}yz;

}w;

A)19B)20C)23D)25

四)typedef

例题:

1.以下语句中,指针p的data域正确的引用方式为(B)

typedefstructnode

{intdata;

structnodelchile,rchild;

}Btree;

Btree*p;

A)p.dataB)p->dataC)(*p)->dataD)p[data]

2.设有如下说明

typedefstructST

{longa;

intb;

charc[2];

}NEW;

则下面叙述中正确的是(C)

A)以上的说明形式非法B)ST是一个结构体类型

C)NEW是一个结构体类型D)NEW是一个结构体变量

3.以下对结构体类型变量td的定义中,错误的是(C)

A)typedefstructaaB)structaa

{{

intn;intn;

floatm;floatm;

}AA;};

AAtd;structaatd;

C)structD)struct

{{

intn;intn;

floatm;floatm;

}aa;}td;

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

当前位置:首页 > 医药卫生 > 中医中药

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

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