安徽建筑大学C语言程序设计及答案_第1页
安徽建筑大学C语言程序设计及答案_第2页
安徽建筑大学C语言程序设计及答案_第3页
安徽建筑大学C语言程序设计及答案_第4页
安徽建筑大学C语言程序设计及答案_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

2/2C语言程序设计(总分100分,考试时长90分钟)一、单项选择题(每小题2分,共40分)1、对于存储同样一组数据元素而言,________。 A、顺序结构比链接结构多占存储空间 B、顺序结构与链接结构相比,更有利于对元素的插入、删除运算 C、顺序结构比链接结构易于扩充空间 D、顺序结构占用整块空间而链接结构不要求整块空间【答案】D【解析】顺序结构的存储空间就是存放数据信息的空间,不需要附加空间,而链接结构节点(即元素)的存储空间包括两部分:一部分存放数据信息,一部分存放指针信息,因此A选项是错误的:在顺序结构中,要插入、删除元素需移动其他元素;而在链接结构中,插入、删除元素不需要移动其他元素。因此,选择项B是错误的;顺序结构中,存储空间必须事先定义,在运算过程中难以扩充:链接结构中,元素之间通过指针链接,空间易于扩充。因此选择项C也是错误的;顺序结构中,元素之间的关系通过存储单元的邻接关系来表示,其存储空间必须占用整块空间:链接结构中,节点之间的关系通过指针来表示,不要求整块空间。因此,D是正确答案。2、是不正确的c语言赋值语句。 A、x=1,y=2 B、x++ C、x=y=5 D、y=int(x);【答案】D3、分析下列程序:

#include<stdio.h>

main()

{

int*p1,*p2,*p;

inta=6,b=9;

p1=&a;

p2=&b;

if(a<b)

{

p=p1;

p1=p2;

p2=p;

}

printf("%d,%d",*p1,*p2);

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

}

程序的输出结果为________。 A、9,66,9 B、6,99,6 C、6,96,9 D、9,69,6【答案】A【解析】通过p1=&a,p2=&b分别将a、b的地址赋给指针p1、p2,接着执行if语句,发现a<b成立,则通过交换p1、p2的值,即交换a、b所在存储单元的地址,但是a、b的值并没有发生变化。4、执行循环语句后,i变量的值是________i=4;while(i--);printf("%d",i); A、0 B、-1 C、1 D、有错误【答案】B5、调用函数f(27)的输出结果是________。

voidf(intn)

{

if(n<5)printf("%d",n);

else

{

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

f(n/5);

}

} A、102 B、201 C、21 D、20【答案】B6、c语言中,错误的int类型的常数是________。 A、1E5 B、0 C、037 D、0xaf【答案】A7、下述对c语言字符数组的描述中错误的是________。 A、字符数组可以存放字符串. B、字符数组中的字符串可以整体输入、输出. C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值. D、不可以用关系运算符对字符数组中的字符串进行比较.【答案】C8、下面实现换行功能的格式符为________。 A、\t B、\n C、\a D、\k【答案】B9、下列选项中,表示字符串末尾的结束标志是________。 A、'\n' B、'\r' C、'\0' D、NULL【答案】C【解析】字符串末尾结束标志为'\0'10、以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能

#defineMIN-2147463647

intfindmax(intx[],intn)

{

inti,max;

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

{

max=MIN;

if(max<x[i])max=x[i];

}

returnmax;

}

造成错误的原因是________。 A、定义语句inti,max中max未赋值 B、赋值语句max=MIN;中,不应该给max赋MIN值 C、语句if(max<x[i])max=x[i];中判断条件设置错误 D、赋值语句max=MIN;放错了位置【答案】D11、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 A、地址传递 B、单向值传递 C、由实参传给形参,再由形参传回实参 D、传递方式由用户指定【答案】B12、关于c语言中数的表示,以下叙述中正确的是________。 A、只有整型数在允许范围内能精确无误地表示,实型数会有误差 B、只要在允许范围内整型数和实型数都能精确地表示 C、只有实型数在允许范围内能精确无误地表示,整形数会有误差 D、只有用八进制表示的数才不会有误差【答案】A13、在c语言中,以作为字符串结束标志 A、’\n’ B、’’ C、’0’ D、’\0’【答案】D14、以下选项中不能正确把cl定义成结构体变量的是________。 A、typedefstruct

{

intred;

intgreen;

intblue;

}COLOR;

COLORcl; B、structcolorcl

{

intred;

intgreen;

intblue;

}; C、structcolor

{

intred;

intgreen;

intblue;

}cl; D、struct

{

intred;

intgreen;

intblue;

}cl;【答案】B15、有以下程序

main()

{

chara[]={'a','b','c','d','e','f','g','h','\0'};

inti,j;

i=sizeof(a);

j=strlen(a);

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

}

程序运行后的输出结果是______。 A、9,9 B、8,9 C、1,8 D、9,8【答案】D16、下面程序的运行结果是________。

#include<stdio.h>

main(){

inta=1,b=10;

do

{

b-=a;

a++;

}

while(b--<0);

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

} A、a=3,b=11 B、a=2,b=8 C、a=1,b=-1 D、a=4,b=9【答案】B【解析】本题考查两个知识点:自加自减运算符和do-while循环语句。do-while循环条件是b--<0,所以循环体语句只执行一次。17、有以下定义和语句

structworkers

{

intnum;

charname[20];

charc;

srruct

{

intday;

intmonth;

intyear;

}

s;

};

structworkersw,*pw;

pw=&w能给w中year成员赋1980的语句是________。 A、*pw.year=1980; B、w.year=1980; C、pw->year=1980; D、w.s.year=1980;【答案】D18、设有如下定义:intx=10,y=4,z;

4则语句:printf(''%d\n'',z=(x%y,x/y));

的输出结果是________。 A、1 B、0 C、2 D、3【答案】C19、若有说明inta[3][4];则a数组元素的非法引用是________。 A、a[0][2*1] B、a[1][3] C、a[4-2][0] D、a[0][4]【答案】D【解析】此题考查的是数组元素的引用。对于已定义的数组a[M][N],数组元素的正确引用必须满足行下标小于M,列下标小于N且为正整数。此题中,选项D)中列下标值出现溢出。20、设有如下定义

structss

{

charname[10];

intage;

charsex;

}std[3],*p=std;

下面各输入语句中错误的是________。 A、scanf("%d",&(*p).age); B、scanf("%s",&); C、sean("%c",&std[0].sex); D、scanf("%c",&(p->sex));【答案】B【解析】本题考核的知识点是结构型数组的应用。选项A中“&(*p).age”代表的是std[0]age的地址,是正确的,选项C也是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正确的,选项B中的“"是错误的引用,因为std是数组名,代表的是数组的首地址,地址没有成员“name”。所以B选项为所选。二、填空题(每小题2分,共20分)1、c语言中free(p)的作用是释放由________所指向的内存区间。【答案】p2、若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值是________。【答案】13、C语言源程序经过编译后,生成文件的后缀名是___。【答案】.c4、c语言规定,不能使用c语言中的________做标识符。【答案】关键字5、c语言程序的三种基本结构是顺序结构、选择结构和________。【答案】['循环结构']6、下列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:l,1,2,3,5,8,13,21,…例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

longfun(intg)(

switch(g);

{

case0:

return0;

case1:case2:return1;

}

return(fun(g-1)+fun(g-2));)

voidmain()

{

longfib;

intn;

printf("inputn:");

scanf("%d",&n);

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

fib=fun(n);

printf("fib=%d\nkn",fib);

}【答案】(1)错误:switch(g);

正确:switch(g)(2)错误:casel:case2:returnl;

正确:casel;

case2:returnl;7、在c语言中,将字符串中大写字母转换成小写字母的函数是_____________。【答案】strlwr#strlwr()#strlwr(字符串)8、从文件读入一行,读取字符包括空格,使用函数________。【答案】gets()9、输入一个字符,如果它是大写字母,则把它变成小写字母,如果它是一个小写字母,则把它变成大写字母,其它字符不变。请分析程序填空。

main()

{

charch;

scanf("%c",&ch);

if(【1】________)ch=ch+32;

elseif(ch>='a'&&ch<='z')【2】________;

printf("%c",ch);

}【答案】【1】ch>='a'&&ch<='z'【2】ch=ch-3210、有以下程序

#include<stdio.h>

main(){

inti,n[]={0,0,0,0,0};

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

{

n[i]=n[i-1]*3+1;

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

}

程序运行后的输出结果是________。【答案】['141340']三、编程题(每小题分,共40分)1、编写程序:打印出杨辉三角形(要求打印出10行)。

结构如下所示:

1

11

121

1331

14641

(本题10分)【答案】#include<stdio.h>

intmain()

{

inti,j;

inta[10][10];

printf("\n");

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

a[i][0]=1;

a[i][i]=1;

}

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

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

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

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

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

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

printf("\n");

}

}2、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数

例如:从键盘上输入2345,则程序运行的结果应当为:n=2345()(本题14分)【答案】#include"stdio.h"

main()

{

chars[10];

inti;

longintn=0;

scanf("%s",s);

for(i=0;i<strlen(s);i++)

n=n*10+s[i]-'0';

printf("n=%ld\n",n);

}3、编写程序:使用结构体,创建一个长度为n的链表。(本题16分)【答案】#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

typedefstructLNode{

intdata;

structLNode*next;

}LNode,*LinkList;

LinkListCreateList(intn);

voidprint(LinkListh);

intmain()

{

Li

温馨提示

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

评论

0/150

提交评论