西华大学C语言程序设计复习题.docx

上传人:b****7 文档编号:9837912 上传时间:2023-02-06 格式:DOCX 页数:17 大小:27.83KB
下载 相关 举报
西华大学C语言程序设计复习题.docx_第1页
第1页 / 共17页
西华大学C语言程序设计复习题.docx_第2页
第2页 / 共17页
西华大学C语言程序设计复习题.docx_第3页
第3页 / 共17页
西华大学C语言程序设计复习题.docx_第4页
第4页 / 共17页
西华大学C语言程序设计复习题.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

西华大学C语言程序设计复习题.docx

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

西华大学C语言程序设计复习题.docx

西华大学C语言程序设计复习题

《C语言程序设计》考试题型示例&复习例程

一、单项选择题

1.以下四组变量标识符均为合法的是(B)。

A)cosx_Value、CASE、sin(x)B)Sum_Value、x01_value、xxx

C)a_b_c_01、FILE、x_01_yD)Num#、abc_01、X_value_A

2.设有二维数组定义:

floata[3][3];假设&a[0][0]==2001H,则&a[2][2]==(C)。

A)2010HB)2036HC)2021HD)2024H

3.设有整型变量x和y,且x=y=10;则计算表达式x=(x++,y++),x+y;后x的值为(D)

A)11B)20C)22D)10

4.如果要使用一维数组,其正确的定义是(D)

A)intarray[];B)constn=10,array[n];

C)intn,array[n];cin>>n;D)intn=5,*array=newint[n];

5.下述函数myfun的功能是(C)

intmyfun(chars[],chart[])(A)将字符串t复制到字符串s

{char*ps=s,*pt=t;(B)将串s连接到串t的尾部

while(*ps)ps++;(C)将串t连接到串s的尾部

whie(*pt)*ps++=*pt++;(D)将字符串s复制到字符串t

*ps='\0';

}

6.下面的程序运行后的输出结果是(A)

voidswap(int**x,int**y)main()

{int*t;{inta=111,b=333;

t=*x;*x=*y;*y=t;swap(&pa,&pb);

}cout<

333333)111(D111(C)111B(A)111333()333

A)7.下面的程序运行后的输出结果是(

main()x=100;int

intx=100;{voidmyfun()

myfun();{inti;

cout<

}}

D)随机值0(C(B)110()100(A);

”,str2[10]=”Hello!

8.程序段charstr1[10]=”Hello”B));的输出结果是(““if(strcmp(str1,str2))puts(Yes”);elseputs(No”)无输出结果D)语法错误))ANoBYesC)B.下面的程序段的输出结果是(9.

inta[3][3]={11,22,33,44,55,66,77,88,99};

int*p=a[0]+1;

cout<<*p<<'\t'<<*(*(a+1)+1))<

A)1113B)2255C)1111D)1211

10.函数调用:

strstr(strcat(str1,str2),str3)的功能是(C)

A)将串str1复制到串str2中后再连接到串str3之后

B)将串str1连接到串str2之后,再在str1中定位串str3

C)将串str2复制到串str1中后再将串str3连接到串str1之后

D)将串str2连接到串str1之后,再在str1中定位str3

11.设有结构体类型stuNode的定义如下,则sizeof(stuNode)的大小是(B)个字节:

typedefstructstudent{

intnum;A)16

charname[8];B)20

floatscore;C)24

structstudent*next;D)17

}stuNode;

12.关于C语言,以下叙述中正确的是(D)。

A)构成C程序的基本单位是文件

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其它函数之前

D)除main()以外的函数也可以调用自身

13.程序设计的三个层次由低到高的顺序是(A)

A)机器语言程序设计—汇编语言程序设计—高级语言程序设计

B)汇编语言程序设计—机器语言程序设计—高级语言程序设计

C)高级语言程序设计—汇编语言程序设计—机器语言程序设计

D)机器语言程序设计—高级语言程序设计—汇编语言程序设计

14.下面的程序段执行后,x、sum的值是(D)

intx=1,sum=0;

while(x++){if(sum>=10)break;if(x%2)continue;sum=sum+x;}

A)6,10B)6,12C)7,10D)7,12

15.关于以下函数的功能,正确的描述是(C)

voidfun(inta[][C],intR)

{inti,j;A)输出矩阵全部元素

for(i=0;i

{for(j=0;j

{if(j>i)continue;cout<

cout<

}

}

)16.在函数调用时,以下叙述中正确的是(A

实参与其对应形参各占独立的存储单元A)

参与其对应形参共占同一个存储单元B)实有实参与其对应形参同名时才共占同一存储单元C)只参是一种虚拟的参数,不占存储单元D)形).若用数组名作为函数调用的实参,则实际传递给形参的是(A17)数组元素个数)数组全部元素DCA)数组首地址B)数组首元素)B18.C语言中,函数形式参数的默认存储类别是(static)registerDB)autoC)A)extern

A)19.下面的程序运行后的输出结果是(

main()intx=100;

{

voidmyfun(int*p)

myfun(&x);{inti,x=*p;

cout<

}}

)随机值0(D)100(B)110(C(A)).设有结构体数组及指针的定义如下,其下列引用非法的是(D20structstudent

intnum;{

floatscore;

3,75}},*p=stu;

A)(p++)->num;B)(p+1)->score;C)(*p).num

D)p=&stu.score

二、程序填空题

1.函数DecTo2816(intd,intr)的功能是将十进制整数d转换为r进制数的形式,实现方法是辗转除取余,将每次取得的余数转换为字符存入字符数组trans[]后反向输出。

voidDecTo2816(intd,intr)

{intres,i=0;chartrans[33]={'\0'};

while(d)

{res=d%r;//取余数

if(res<=9)trans[i++]=‘0'+res【1】;//余数<=9,如何存入字符?

else‘0'+res_x0010_【2】;//若r=16,10~15的余数如何转换?

d=d/r;

}

反向输出;//【3】while(i>=0)putchar(trans[i--])

中的字符trans[]}

归并到LB=(2,6,8,9,11,15,20).本程序功能是将两个递增整数表LA=(3,5,8,11)和2。

整数表均采用单向链表存储。

新的整数表LC=(2,3,5,6,8,8,9,11,11,15,20)#include

的定义//链表结点类型intNodetypedefstructelem

数据域,存储整数//{intv;

指针域structelem*next;//

}intNode;

intNode*CreateList(intNode*Head,intn)个整数的链表:

创建能存储n//函数为辅助指针intNode*pnew,*pend;inti;//pnew用于创建新结点,pend{

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

pnew=newintNode;{

cin>>pnew->v;

;【4】if(Head==NULL)Head==pnew若当前头指针为空,//

应赋什么值新结点接入当前尾部结点之后elsepend->next=pnew;//更新,当前尾结点指针域赋空pend=pnew;pend->next=NULL;//pend}

返回链表头指针return(Head);//

}

LC

到、LB//以下MergeList()函数,归并LAintNode*MergeList(intNode*LA,intNode*LB,intNode*LC)

intNode*pa=LA,*pb=LB,*pnew,*pend;{

pb不为空时)//当pa与【5】while(pa&&pb

{pnew=(intNode*)malloc(sizeof(intNode));//为LC创建新结点

if(pa->v<=pb->v)//若结点pa的v值小于或等于pb结点的v值

{pnew->v=pa->v;值vpa结点的的新结点的//LCv赋值为pa=pa->next;//当前结点处理完毕,pa指针下移

}

else

{pnew->v=pb->v【6】;pb=pb->next

【7】;}

if(LC==NULL)LC=pnew;//当前LC链表还为空

elsepend->next=pnew;

pend=pnew;

pend->next=NULL;

}

while(pa!

=NULL)//如果LA比LB长,将剩余部分接入LC

{pnew=newintNode;

pnew->v=pa->v;pa=pa->next;

pend->next=pnew;pend=pnew;pend->next=NULL;

}

while(pb!

=NULL)//如果LB比LA长,将剩余部分接入LC

{pnew=newintNode;

Pnew->v=pb->v【8】;pb=pb->next【9】;

pend->next=pnew;pend=pnew;pend->next=NULL;

}

ReturnLC【10】;//此函数应返回什么值

}

voidmain(void)

{//以LA=(3,5,8,11)和LB=(2,6,8,9,11,15,20)为实例数据

intNode*LA=NULL,*LB=NULL,*LC=NULL;

LA=CreateList(la4)【11】;//创建链表LA

LB=CreateList(LB7)【12】;//创建链表LB

LC=MergeL

ist(LA,LB,LC);//归并LA和LB到LC

}

3.以下函数功能是使用对分法在递增排序的整型数组a[]中查找指定元素SearchNum,算法思想是:

取数组的中点下标c,若a[c]==SearchNum则找到,若SearchNum>a[c],则查找范围缩小为右半,否则缩小为左半,依此循环直到查找范围不能再缩小为止。

voidBisectSearch(inta[],intn)//n为数组长度,即元素个数

{ints=0,e=n-1,c;/为中点c和e分别为查找范围的起点和终点下标,/sintflag=0,SearchNum;//flag作为是否找到的标志,SearchNum待查找

cin>>SearchNum;

if(a[0]==SearchNum)//判断数组首元素

{cout<

a[0]=<

if(a[n-1]==SearchNum)//判断数组尾元素

{cout<

a[<

while(el=(s+1)【13】)//e==s+1时,查找范围不能再缩小

{c=(s+e)/2;//取数组的中点下标

if(a[c]==SearchNum){flag=1【14】;break

}

;】15【.

elseif(a[c]

elsee=c【17】;//更新s还是e

}

if(flag==1)cout<

a[<

elsecout<

<

}

4.下列函数LocateSubString(char*s,char*t)的功能是在字符串s中定位字符串t并返回首次出现的位置(又称模式匹配,s称目标串,t称模式串)。

char*LocateSubString(char*s,char*t)

{ints_len=strlen(s),t_len=strlen(t);//求串s和t的长度

char*ps=s,*pt=t,*pa;为辅助指针的首字符,pas和t//ps和pt分别指向intflag=0;//标志变量,找到t为1,否则为0

while(ps<=s+s【18】)//ps指针最多只能移动到什么地方?

{pa=ps;pt=t;//为本轮匹配运算做准备工作

while(*pt!

='\0')//pt指针往下移动直到串尾

{if(*pa==*pt)//如果对应字符相等,如何处理?

{flag=1;pa++【19】;pt++【20】;}

else//对应字符不相等,也就是不匹配

{flag=0;break;}//不匹配,提前结束内层循环

}//while内层循环

if(flag==1)break;t说明找到了子串//上面的内层循环结束,flag=1elseps++;//本轮结束后,没找到子串t,ps下移一个字符

}//while外层循环

if(flag==1)returnps;//当前ps即子串t首次出现的位置

elsereturn\//返回空串

}

三、编制程序题

1.编写一个函数sort(inta[],intn),实现任意长度一维整型数组的元素排序,在main()中完成一维数组的定义和初始化,调用sort()函数后输出排序的结果。

2.编程实现:

求11~9999之间的m,使满足m、m2、m3均为回文数。

例如121、1221、43634等即为回文数。

要求将求得的m存储到一个动态数组之中并输出。

四、参考例程

1.简单的学生成绩管理演示程序

文件包含及命名空间的使用语句,此处省略//

//结点类型定义

typedefstructstudent

{intID;

charname[16];

floatscore;

structstudent*next;

}StuNode;

//存储文件的函数

voidSaveFile(StuNode*Head)

{intk=0;

if(Head==NULL)

{

潣瑵?

链表为空,无法存储文件!

<

system(pause);

return;

}

fstreamoutfile;

outfile.open(..\\Stu.dat,ios:

:

out);

StuNode*pt=Head;

while(pt)

{k++;

outfile.write((char*)pt,sizeof(StuNode));

pt=pt->next;

}

outfile.close();

潣瑵?

创建结点数=<

}

//读取文件的函数

StuNode*ReadFile()

{intk=0;

StuNode*Head=NULL,*pnew=NULL,*paid=NULL;

ifstreaminfile;

infile.open(..\\Stu.dat,ios:

:

in);

if(infile.fail())

{潣瑵?

文件不存在,打开失败!

<

system(pause);

returnHead;

}

while(!

infile.eof())

{pnew=newStuNode;

pnew->next=NULL;

infile.read((char*)pnew,sizeof(StuNode));

if(infile.tellg()<0)

{deletepnew;

break;

}

k++;

if(Head==NULL)

{Head=pnew;

paid=pnew;

paid->next=NULL;

}

else

{paid->next=pnew;

paid=pnew;

paid->next=NULL;

}

}//while,读文件结束

infile.close();

潣瑵?

读取结点数=<

returnHead;

}

//创建学生信息链表的函数

StuNode*CreateList(StuNode*Head)

{

StuNode*pnew,*paid,*ps,*pe;

潣瑵?

开始创建学生链表,输入学号为0或负则停止:

<

for(;;)

{pnew=newStuNode;

pnew->next=NULL;

潣瑵?

学号:

;

cin>>pnew->ID;

if(pnew->ID<=0)

{deletepnew;

break;

}

潣瑵?

姓名:

;

fflush(stdin);

cin.getline(pnew->name,15);

潣瑵?

成绩:

;

cin>>pnew->score;

if(Head==NULL)

{Head=pnew;

pnew->next=NULL;

paid=pnew;

}

else

{if(pnew->ID<=Head->ID)

{pnew->next=Head;

Head=pnew;

}

elseif(pnew->ID>=paid->ID)

{paid->next=pnew;

pnew->next=NULL;

paid=pnew;

}

else

{ps=Head;

pe=ps->next;

while(pnew->ID>=pe->ID)

{ps=ps->next;

pe=pe->next;

}

ps->next=pnew;

pnew->next=pe;

}

}

}

returnHead;

}

//输出链表的函数voidPrintList(StuNode*Head)(省略)

//主函数

voidmain()

StuNode*Head=NULL;

{

Head=CreateList(Head);

SaveFile(Head);

Head=ReadFile();

PrintList(Head);

system(pause);

}

一、选择题参考答案

1~5:

BCDDC

6~10:

AABBC

AABAD

11~15:

BDADC16~20二、程序填空题参考答案

【1】'0'+res【2】'A'+res_x0010_

【4】Head==pnew3【】putchar(trans[i--])

【6】pnew->v=pb->v】【5pa&&pb

【】pb=pb->next8】pnew->v=pb->v7【【9【】pb=pb->next10】returnLC

【12】LB=CreateList(LB,7)【11】CreateList(LA,4)

flag=1e!

=(s+1)】14】【13【s=c

【】break15】【16【17】e=c

【18】s+s_len-t_len

pt++】20【pa++】19【.

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

当前位置:首页 > 总结汇报 > 学习总结

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

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