哈工大C语言03秋EMK.docx

上传人:b****2 文档编号:24399471 上传时间:2023-05-27 格式:DOCX 页数:13 大小:22.79KB
下载 相关 举报
哈工大C语言03秋EMK.docx_第1页
第1页 / 共13页
哈工大C语言03秋EMK.docx_第2页
第2页 / 共13页
哈工大C语言03秋EMK.docx_第3页
第3页 / 共13页
哈工大C语言03秋EMK.docx_第4页
第4页 / 共13页
哈工大C语言03秋EMK.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

哈工大C语言03秋EMK.docx

《哈工大C语言03秋EMK.docx》由会员分享,可在线阅读,更多相关《哈工大C语言03秋EMK.docx(13页珍藏版)》请在冰豆网上搜索。

哈工大C语言03秋EMK.docx

哈工大C语言03秋EMK

哈工大2003年秋季学期

班号

姓名

高级语言程序设计试题

题号

总分

分数

(说明:

卷面总分85,另有8分选做题。

平时成绩15分)

一、判断(5分)

(1)自动变量和外部变量都是局部变量。

()

(2)在函数调用过程中,不能通过改变形参的值而使实参的值也改变;但可以通过改变指针形参的值而使指针实参的值也改变。

()

(3)数组可以在定义时整体赋初值,但不能在赋值语句中整体赋值。

()

(4)对于printf()函数,通过字符数组名或者字符指针变量做参数可以输出一个字符串,而对一个数值型数组是不能用数组名做参数输出它的全部元素的。

()

(5)实参和形参(均为变量)各占独立的存储空间。

()

二、解释下列语句含义(10分)

(1)int*p();语句含义:

____________________________________________________

(2)int(*p)();语句含义:

__________________________________________________

(3)int(*p)[3];语句含义:

_________________________________________________

(4)int*p[4];语句含义:

___________________________________________________

(5)int**p;语句含义:

______________________________________________________

三、单选题(13分)

(1)下列哪种说法是正确的?

()

A.程序编译时的警告(warning)可以全不在乎

B.编译通过,程序就是没有问题的

C.程序在一台计算机运行无误,而在另一台计算机按同样步骤运行,却可能出错

D.程序发生编译错误(error),仍可以运行

(2)下列说法正确的是()

A.一个int类型的变量占两个字节

B.一个结构体变量占的字节数,是每个成员变量字节数的总和

C.任何类型的指针变量占的字节数,与其指向的类型所占字节数相等

D.一个long类型变量可能与一个int类型变量占用相同大小的内存

(3)下列关于程序调试的说法,错误的是()

A.可以一条语句一条语句地执行

B.调试过程中如果修改了源代码,不需要重新编译就能继续运行

C.可以随时查看变量值

D.可以跟踪进入自己编写的函数内部

(4)下面这些名词,没有“地址”的是:

()

A.变量B.函数C.宏D.指针

(5)在C语言中()

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

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

C.函数的定义和函数的调用均不可以嵌套

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

(6)阅读程序选择正确答案填空

程序功能:

检查给定字符串s是否满足下列两条件:

1、从字符串首字符起,在顺序检查s中的字符的过程中,遇到的右括号“)”的个数在任何时候均不超过所遇到的左括号“(”的个数;

2、字符串s中左括号“(”的个数与右括号“)”的个数相同。

若字符串s同时满足上述条件1和条件2,函数返回非0值,否则返回0值。

intcheck(

(1))()

{

intlp,rp;

lp=0;

rp=0;

while(

(2))()

{

if(*s=='(')

lp++;

elseif(*s==')')

{

rp++;

if((3))()

return0;

}

(4);()

}

return((lp!

=rp)?

0:

1);

}

(1)A.char*sB.chars[][]C.charsD.chars[]

(2)A.*sB.*s==0C.*s!

=0D.s

(3)A.rp>lpB.rp

=lp

(4)A.s++B.(*s)++C.++(*s)D.++s

四、阅读程序(22分)

(1)下面程序运行会出错吗?

如果会,请改正。

(4分)

#include

main()

{

charbuffer[128];

intc;

intpos=0;

while((c=getchar())!

=EOF)

{

buffer[pos++]=c;

}

printf("%s",buffer);

}

(2)对下面这个程序谈谈你的看法。

(3分)

#include

main()

{

inti,j;

for(i=1,j=1;i!

=0;j++)

i++;

}

(3)给下面程序找错。

请标注在程序上,并给予恰当的文字说明。

(6分)

#include

main()

{

intsize=10,i;

floatf[size];

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

scanf("%f",f[i]);

if(f[0]=f[10])

printf("您输入的第一个数和最后一个数相等\n");

}

 

(4)阅读程序,写出输出结果。

(4分)

#include

main()

{

inti,j,k,sum,temp;

sum=0;

temp=0;

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

{

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

{

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

temp=temp+k;

sum=sum+temp;

}

}

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

}

(5)阅读程序,写出输出结果。

(5分)

#include

main()

{

inta[20],*p[4];

inti,k=0;

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

a[i]=i;

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

p[i]=&a[i*(i+1)];

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

k+=*(p[i]+i);

printf("%d",k);

}

五、简答题(11分)

(1)请定义一个结构student,其成员包括姓名、学号、性别、出生年月日、籍贯、身高(单位:

米)、体重(单位:

公斤)。

(6分)

(2)请谈谈你对高级语言程序设计的看法。

(5分)

(注:

后面两道大题答在试卷的附页上)

六、程序设计。

请从下面5道题中任选3题,按题意要求编写程序。

(24分)

(1)编写一个函数intIsPrime(intdata),判断data是否为素数(除了1和其本身以外,不能被其他正整数整除的正整数),若是返回-1,否则返回0。

(2)一个函数voidfunc(void),现在想统计这个函数一共被调用了多少次,并在函数被调用的时候打印此数值。

请用两种方法实现,并推荐一种最好的方法,说明理由。

(3)用户输入若干个(不超过20个)小于100的正整数,编程求出这些数的最大值、最小值和平均值。

用户输入一个负数表示输入结束。

(4)输入一行字符(最多80个),统计其中的大写字母,小写字母,数字,空格及其它字符的个数。

(5)利用memcpy()函数实现char*my_strcpy(char*dst,char*src)函数,把字符串src拷贝到dst内,并返回dst。

注:

TurboC2.0对memcpy的联机帮助如下

memcpy:

copiesablockofnbytesfromsrctodest

void*memcpy(void*dest,constvoid*src,size_tn);

Prototypesinmem.h

Returnsdest

七、选做题。

此题分数不在试卷总分之内。

如作答,则此题得分额外加入总分,否则不加分(8分)

用户输入一行字符串,可能输入的字符个数不定,以回车作为结束标志。

统计用户的输入中一共有多少个单词。

单词之间以空格或者\t作为分隔。

KeytoPartVI

(1)

#include

intIsPrime(intdata)

{

inti;

intresult=0;

intlimit=(int)sqrt((double)data);

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

if(data%i==0)

{

i=-1;

break;

}

returnresult;

}

(2)

1、全局变量法

intinvoked=0;

voidfunc(void)

{

invoked++;

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

}

2、静态变量法

voidfunc(void)

{

staticintinvoked=0;

invoked++;

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

}

喜欢哪个看个人喜好……

(3)

/*这题……让输入正整数,负数表示结束,输入0咋整……*/

#include

main()

{

inti=0,temp;

intmax=0,min=100,sum=0;

intnum[20];

while(scanf(“%d”,temp)==1)

{

if(temp<=0)break;

if(temp>max)max=temp;

if(temp

sum+=temp;

num[i]=temp;

i++;

}

if(i==0)printf(“Noinput.\n”);

else

{

printf(“Max:

%d\n”,max);

printf(“Min:

%d\n”,min);

printf(“Average:

%lf\n”,sum/(double)i);

}

}

(4)

#include

#defineUCASE0

#defineLCASE1

#defineNUM2

#defineSPACE3

#defineOTHER4

main()

{

inti=0;

chartemp;

intletter[5]={0};

while(temp=getchar()!

=’\n’)

{

if(temp>=’A’&&temp<=’Z’)letter[UCASE]++;

elseif(temp>=’a’&&temp<=’z’)letter[LCASE]++;

elseif(temp>=’0’&&temp<=’9’)letter[NUM]++;

elseif(temp==’’)letter[SPACE]++;

elseletter[OTHER]++;

}

printf(“Uppercase:

%d\nLowercase:

%d\nNumber:

%d\n\Space:

%d\n\

Other:

%d\n”,letter[0],letter[1],letter[2],letter[3],letter[4]);

}

(5)

char*my_strcpy(char*dst,char*src)

{

inti=0;

while(*(src+(i++)));

return(char*)memcpy(dst,src,i);

}

KeytoPartVII

#include

#include

usingnamespacestd;

intmain()

{

intword=0;

stringinput;

getline(cin,input);

for(inti=0;i

{

if(input[i]==’’||input[i]==’\t’)word++;

}

if(input[input.size()-1]!

=’’||input[input.size()-1]!

=’\t’)word++;

cout<

return0;

}

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

当前位置:首页 > 农林牧渔 > 林学

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

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