C语言试题详细分析与解答Word格式文档下载.docx

上传人:b****6 文档编号:17292357 上传时间:2022-11-30 格式:DOCX 页数:88 大小:97.38KB
下载 相关 举报
C语言试题详细分析与解答Word格式文档下载.docx_第1页
第1页 / 共88页
C语言试题详细分析与解答Word格式文档下载.docx_第2页
第2页 / 共88页
C语言试题详细分析与解答Word格式文档下载.docx_第3页
第3页 / 共88页
C语言试题详细分析与解答Word格式文档下载.docx_第4页
第4页 / 共88页
C语言试题详细分析与解答Word格式文档下载.docx_第5页
第5页 / 共88页
点击查看更多>>
下载资源
资源描述

C语言试题详细分析与解答Word格式文档下载.docx

《C语言试题详细分析与解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言试题详细分析与解答Word格式文档下载.docx(88页珍藏版)》请在冰豆网上搜索。

C语言试题详细分析与解答Word格式文档下载.docx

c);

给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是

A)10<

回车>

22<

33<

B)10.0,22.0,33.0<

C)10.0<

22.033.0<

D)10 

22<

(20)有如下程序:

main()

{

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

switch(x){

case0:

b++;

case1:

a++;

case2:

b++;

}

printf("

a=%d,b=%d\n"

a,b);

}

该程序的输出结果是

A)a=2,b=1 

B)a=1,b=1 

C)a=1,b=0 

D)a=2,b=2

(21)有以下程序

{inti=1,j=1,k=2;

if((j++||k++)&

&

i++)

%d,%d,%d\n"

i,j,k);

执行后输出结果是

A)1,1,2 

B)2,2,1 

C)2,2,2 

D)2,2,3

(22)有如下程序

{floatx=2.0,y;

if(x<

0.0)y=0.0;

elseif(x<

10.0)y=1.0/x;

elsey=1.0;

%f\n"

y);

A)0.000000 

B)0.250000 

C)0.500000 

D)1.000000

(23)有如下程序:

{intn=9;

while(n>

6){n--;

%d"

n);

A)987 

B)876 

C)8765 

D)9876

(24)在下列选项中,没有构成死循环的是

A)inti=100;

while

(1)

{i=i%100+1;

if(i>

100)break;

B)for(;

;

);

C)intk=10000;

do{k++;

}while(k>

10000);

D)ints=36;

while(s)--s;

(25)设intx=1,y=1;

表达式(!

x||y--)的值是

A)0 

B)1 

C)2 

D)-1

(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是

A)函数调用可以作为独立的语句存在 

B)函数调用可以作为一个函数的实参

C)函数调用可以出现在表达式中 

D)函数调用可以作为一个函数的形参

(27)有以下程序

floatfun(intx,inty)

{return(x+y);

{inta=2,b=5,c=8;

%3.0f\n"

fun((int)fun(a+c,b),a-c));

程序运行后的输出结果是

A)编译出错 

B)9 

C)21 

D)9.0

(28)若有以下调用语句,则不正确的fun函数的首部是

{…

inta[50],n;

fun(n,&

a[9]);

A)voidfun(intm,intx[]) 

B)voidfun(ints,inth[41])

C)voidfun(intp,int*s) 

D)voidfun(intn,inta)

(29)fseek函数的正确调用形式是

A)fseek(文件指针,起始点,位移量) 

B)fseek(文件指针,位移量,起始点)

C)fseek(位移量,起始点,文件指针) 

D)fseek(起始点,位移量,文件指针)

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

A)EOF 

B)-1 

C)1 

D)NULL

(31)若有说明语句:

charc='

\72'

则变量c

A)包含1个字符 

B)包含2个字符 

C)包含3个字符 

D)说明不合法,c的值不确定

(32)若有说明inta[3][4];

则a数组元素的非法引用是

A)a[0][2*1] 

B)a[1][3] 

C)a[4-2][0] 

D)a[0][4]

(33)设有以下说明语句

structstu

{inta;

floatb;

}stutype;

则下面的叙述不正确的是

A)struct是结构体类型的关键字 

B)structstu是用户定义的结构体类型

C)stutype是用户定义的结构体类型名 

D)a和b都是结构体成员名

(34)在C语言中,引用数组元素时,其数组下标的数据类型允许是

A)整型常量 

B)整型表达式

C)整型常量或整型表达式 

D)任何类型的表达式

(35)若运行时给变量x输入12,则以下程序的运行结果是

{intx,y;

scanf("

&

x);

y=x>

12?

x+10:

x-12;

%d\n"

B)22 

C)12 

D)10

(36)以下说法正确的是

A)C语言程序总是从第一个的函数开始执行

B)在C语言程序中,要调用函数必须在main()函数中定义

C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

(37)表达式0x13^0x17的值是

A)0x04 

B)0x13 

C)0xE8 

D)0x17

(38)有以下程序

#defineF(X,Y)(X)*(Y)

{inta=3,b=4;

F(a++,b++));

}

程序运行后的输出结果是

A)12 

B)15 

C)16 

D)20

(39)下列程序执行后的输出结果是

voidfunc(int*a,intb[])

{b[0]=*a+6;

{inta,b[5];

a=0;

b[0]=3;

func(&

a,b);

b[0]);

A)6 

B)7 

C)8 

D)9

(40)若有下面的程序段:

chars[]="

china"

char*p;

p=s;

则下列叙述正确的是

A)s和p完全相同 

B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等 

D)*p与s[0]相等

(41)以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序

voidsort(inta[],intn)

{inti,j,t;

for(i=0;

i<

n-1;

for(j=i+1;

j<

n;

j++)

if(a[i]<

a[j]){t=a[i];

a[i]=a[j];

a[j]=t;

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

sort(&

aa[3],5);

10;

i++)printf("

%d,"

aa[i]);

\n"

A)1,2,3,4,5,6,7,8,9,10, 

B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10, 

D)1,2,10,9,8,7,6,5,4,3,

(42)以下程序的运行结果是

#include"

stdio.h"

{structdate

{intyear,month,day;

}today;

sizeof(structdate));

B)8 

C)10 

D)12

(43)若有语句int*point,a=4;

和point=&

a;

下面均代表地址的一组选项是

A)a,point,*&

B)&

*a,&

a,*point

C)*&

point,*point,&

D)&

*point,point

(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是

A)地址传递 

B)单向值传递

C)由实参传形参,再由形参传实参 

D)传递方式由用户指定

(45)已定义以下函数

fun(char*p2,char*p1)

while((*p2=*p1)!

='

\0'

){p1++;

p2++;

函数的功能是

A)将p1所指字符串复制到p2所指内存空间 

B)将p1所指字符串的地址赋给指针p2

C)对p1和p2两个指针所指字符串进行比较 

D)检查p1和p2两个指针所指字符串中是否有'

(46)若执行下述程序时,若从键盘输入6和8时,结果为

{inta,b,s;

%d%d"

b);

s=a

if(a<

b)

s=b;

s*=s;

s);

A)36 

B)64 

C)48 

D)以上都不对 

(47)fscanf函数的正确调用形式是 

A)fscanf(fp,格式字符串,输出表列);

B)fscanf(格式字符串,输出表列,fp);

C)fscanf(格式字符串,文件指针,输出表列);

D)fscanf(文件指针,格式字符串,输入表列);

(48)下列关于C语言数据文件的叙述中正确的是 

A)文件由ASCII码字符序列组成,C语言只能读写文本文件 

B)文件由二进制数据序列组成,C语言只能读写二进制文件 

C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

(49)有以下程序 

voidss(char*s,chart) 

{while(*s) 

{if(*s==t)*s=t-'

a'

+'

A'

s++;

main() 

{charstr1[100]="

abcddfefdbd"

c='

d'

ss(str1,c);

%s\n"

str1);

程序运行后的输出结果是 

A)ABCDDEFEDBD 

B)abcDDfefDbD 

CabcAAfefAbA 

D)Abcddfefdbd 

(50)若以下定义:

structlink 

{intdata;

structlink*next;

}a,b,c,*p,*q;

且变量a和b之间已有如下图所示的链表结构:

指针p指向变量a,q指向变量c。

则能够把c插入到a和b之间并形成新的链表的语句组是:

A)a.next=c;

c.next=b;

B)p.next=q;

q.next=p.next;

C)p->

next=&

c;

q->

next=p->

next;

D)(*p).next=q;

(*q).next=&

b;

二、填空题

(6)设y是int型,请写出y为奇数的关系表达式【6】。

答案(y%2)==1

(7)设inta=5,b=6,表达式(++a==b--)?

++a:

--b的值是【7】 

解析:

此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。

请注意前缀++,--和后缀++,--的区别。

(8)下列程序的输出结果是【8】。

maim 

()

{charb[]="

Helloyou"

b[5]=0;

printf("

b);

语句b[5]=0;

相当于语句b[5]=′\0′,且′\0′为字符串结束标志,输出时遇到′\0′就停止输出。

(9)当调用函数时,实参是一个数组名,则向函数传递的是【9】。

在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传递数组的首地址来实现。

(10)以下程序的输出结果是【10】。

inta=1234;

%2d\n"

,a);

在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。

(11)用高级语言编写的程序称为【11】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。

用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序有两种方式:

一种是通过解释程序,对源程序逐句解释执行;

另一种是先让编译程序将源程序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制代码程序),然后执行目标程序。

(12)以下程序的输出结果是【12】。

main()

{inta=0;

a+=(a=8);

printf("

a);

赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进行求解:

a+=(a=8)此时,a的值由于赋值为8,而不是0

a+=8

a=a+8

a=16

(13)函数voidfun(float*sn,intn)的功能是:

根据以下公式计算S,计算结果通过形参指针sn传回;

n通过形参传入,n的值大于等于0。

请填空。

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti=0;

for(i=0;

i<

=n;

i++)

{f=【13】*f;

w=f/(2*i+1);

s+=w;

【14】=s;

C语言中实参变量和形参变量的数据传递是单向的“值传递”方式。

指针变量作函数也要遵循这一规则。

调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。

(14)函数fun的功能是:

根据以下公式求p的值,结果由函数值返回。

m与n为两个正数且要求m>

n。

例如:

m=12,n=8时,运行结果应该是495.000000。

请在题目的空白处填写适当的程序语句,将该程序补充完整。

#include<

conio.h>

stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;

=m;

【15】;

【16】;

=m-n;

i++)p=p/i;

returnp;

main()

{clrscr();

p=%f\n"

fun(12,8));

本题中,欲求p的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。

(15)该程序运行的结果是【17】。

#include<

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

if(i%7==0||i%11==0)

a[j++]=i;

*n=j;

{intaa[M],n,k;

clrscr();

fun(10,aa,&

n);

for(k=0;

k<

k++)

if((k+1)%20==0)printf("

elseprintf("

%4d"

aa[k]);

解答本题的关键是要读懂程序,试题要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“||”运算符,若要找能同时被7和11整除的所有整数则在if()中应用“&

”运算符。

当然,如果m的值输入50,即表达式fun(10,aa,&

为fun(50,aa,&

时输入结果为:

11 

14 

21 

22 

28 

33 

35 

42 

44 

49。

(16)下列程序的功能是:

求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符1,则输出3,请填空。

#defineM81

intfun(char*ss,charc)

{inti=0;

for(;

【18】;

ss++)

if(*ss==c)i++;

returni;

{chara[M],ch;

\nPleaseenterastring:

"

gets(a);

\nPleaseenterachar:

ch=getchar();

\nThenumberofthecharis:

%d\n"

fun(a,ch));

从字符串ss中找出子字

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

当前位置:首页 > 高中教育 > 初中教育

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

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