哈工大C语言03秋EMK.docx
- 文档编号:10661709
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:13
- 大小:22.79KB
哈工大C语言03秋EMK.docx
《哈工大C语言03秋EMK.docx》由会员分享,可在线阅读,更多相关《哈工大C语言03秋EMK.docx(13页珍藏版)》请在冰点文库上搜索。
哈工大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; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 语言 03 EMK