浙江理工2007-2008学年第2学期《C程序设计》期末考试试卷_第1页
浙江理工2007-2008学年第2学期《C程序设计》期末考试试卷_第2页
浙江理工2007-2008学年第2学期《C程序设计》期末考试试卷_第3页
浙江理工2007-2008学年第2学期《C程序设计》期末考试试卷_第4页
浙江理工2007-2008学年第2学期《C程序设计》期末考试试卷_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

PAGE2007/2008学年第2学期《C程序设计》期末考试试卷说明: (1)考生应将答案填写在答卷上,否则作无效处理;(2)考试时间为120分钟。试题一、判断题(每小题2分,共20分)说明:在以下提供的若干陈述中,逐一判断其正确与否,用A表示正确,用B表示错误。(1)一个C语言程序可以有一个或多个函数组成。(2)流程图是描述算法的最常用的方法之一。(3)在C语言中,符号A与a可以用来表示同一个变量。(4)在C语言中,‘1’和1表示同一个常量。(5)当复合语句多于一条时,要用一对括号括起来。(6)if语句只能用逻辑表达式作为其控制条件。(7)(8)如果定义了chara[10],则数组a可以能够容纳的最长字符串长度为10。(9)语句a<<=2执行后,a的值将变为原来的4倍。(10)结构体成员的类型可以是另外一种结构体类型。试题二、单选题(每小题2分,共20分)(11)下列语句或命令中,不符合C语言程序书写规则的是________。[A]inta; [B]a=6;[C]inta、b; [D]#include“stdio.h”(12)以下说法正确的是________。[A]C语言程序是从第一个定义的函数开始执行的。[B]C语言程序中要调用的函数必须在main()函数中定义。[C]C语言程序是从main()函数开始执行的。[D]C语言程序的main()函数必须放在程序的开始部分。(13)当c=0时,在下列选项中能正确将c的值赋给变量a、b的是______[A]c=b=a; [B](a=c)‖(b=c);[C](a=c)&&(b=c); [D]a=c=b;(14)下列说法中正确的是________。[A]break语句用在switch语句中,而continue语句有在循环语句中。[B]break语句用在循环语句中,而continue语句有在switch语句中[C]break语句与continue语句均可以用在循环语句中。[D]break语句与continue语句均可以用在switch语句中。(15)以下C语言语句中,正确的是________。[A]unsignedinta[2*3]; [B]chars[N+1];[C]doublef[]; [D]floatb[4]={1,2,3,4,5};(16)以下叙述不正确的是________。[A]在不同的函数中可以使用相同名字的局部变量。[B]函数中的形式参数实际上是一个局部变量。[C]在一个函数内定义的局部变量只有在本函数范围内有效。[D]在一个函数内定义的静态变量实际上是一个全局变量。(17)假设有以下定义:inta[5]={1,2,3,4,5},i=3,*p=a,*q=a;则不能正确执行的语句是________。[A]i=*p+*q; [B]a=i;[C]*p=*(a+i); [D]i=*p**(q+2);(18)若以数组名作为函数的实参,则实参向形参传送的是______。[A]数组第一个元素的值 [B]数组元素的值[C]数组的首地址 [D]数组名(19)以下有关宏定义的叙述,正确的是________。[A]宏名必须用大写字母表示 [B]带参数的宏就是一个函数[C]宏名不具有类型 [D]宏定义和其它C语句,其末尾要加分号(20)假设有以下定义:inta=0xAA,b=0x55,则a&b的值为:________。[A]0x0 [B]0xff[C]0x01 [D]0xAA试题三、程序填空题(每空2分,共20分,)说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。程序1【程序说明】从一个n行m列的矩阵中找出矩阵中最小数及它所在的行与列,并输出它们。矩阵的行n与列m及矩阵的元素由键盘输入。【程序】#include"stdio.h"#defineN100#defineM100voidmain(){floata[N][M],min;inti,j,n,m,col,row;scanf("%d,%d",&n,&m);for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%f",(21));min=a[0][0];for(i=0;i<n;i++)for(j=0;(22);j++){if((23))min=a[i][j];col=j;(24)}printf("最小的元素为:a[%d][%d]=%f",row,col,(25));}【选项】(21) [A]&a[i][j] [B]a[i][j][C]&a[j][i] [D]*(a[i]+j)(22) [A]j<=m [B]J<m [C]j<m [D]j==m(23) [A]a[i][j]>min [B]a[i][j]!=min [C]min>a[j][i] [D]a[i][j]<min(24) [A]i=row; [B]row=col; [C]row=i; [D]row=a[i][j];(25) [A]a[i][j] [B]min [C]a[row]+col [D]a[col][row]程序2【程序说明】从键盘输入一个字符串,将其中的大写字母按出现的顺序连续放入另个一字符数组,形成另外一个字符串,并输出之。【程序】#include<stdio.h>#defineN80voidmain(){charstr1[N+1],str2[N+1],*p=str1;inti=0;scanf("%s",str1);for(;(26);p++){if((27)){str2[i]=*p;(28)}}str2[i]='\0';puts(str2);}【选项】(26) [A]p!='\0' [B]*p<>'\0' [C]*p=!'\0' [D]*p!='\0'(27) [A]*p>='A'||*p<='Z' [B]*p>='A'&*p<='Z' [C]*p>='A'&&*p<='Z' [D]p>='A'&&p<='Z'(28) [A]i++; [B]&i++; [C]p++; [D]i=*p;程序3【程序说明】从键盘输入一百分制成绩,若用户输入错误时,重新让其输入,当成绩小于60分时,输出“fail!”,当成绩大等于60分时,输出“pass!”【程序】#include<stdio.h>voidmain(){floatscore;do{printf("pleaseinputthescore:\n");scanf("%f",&score);}(29)switch((int)score/10){case6:case7:case8:case9:case10:printf("pass!");break;(30)printf("fail!");break;}}【选项】(29) [A]while(score>100||score<0); [B]while(score>100&&score<0); [C]while(score>100||score>0); [D]while(score<=100||score>0);(30) [A]case5: [B]case0-5: [C]if(score<60) [D]default:

试题四、程序阅读题(每小题5分,共20分)程序1、阅读下列程序,写出程序运行结果。#include<stdio.h>#defineF(x,y)x*x+y*yvoidmain(){inta=8,b=6;printf("%d\n",F(a,b));printf("%d",F(a,b+a));}程序2、阅读下列程序,写出程序运行结果。voidf1(intx,inty){intt;t=x;x=y;y=t;}voidf2(int*x,int*y){intt;t=*x;*x=*y;*y=t;}voidf3(int*x,int*y){int*t;t=x;x=y;y=t;}voidf4(intx,inty,int*x1,int*y1){*x1=y;*y1=x;}voidmain(){inta=-1,b=1;printf("(%d,%d)\n",a,b);f1(a,b);printf("(%d,%d)\n",a,b);f2(&a,&b);printf("(%d,%d)\n",a,b);f3(&a,&b);printf("(%d,%d)\n",a,b);f4(a,b,&a,&b);printf("(%d,%d)\n",a,b);}程序3、阅读下列程序,写出程序运行结果。#include<stdio.h>#defineN3structstudent{intnum;charname[20];intscore;};voidfunc1(structstudent*stud,intn){inti,j,k;structstudenttemp;for(i=0;i<n-1;++i){k=i;for(j=i+1;j<n;j++)if(stud[j].score<stud[k].score)k=j;temp=stud[k];stud[k]=stud[i];stud[i]=temp;}}voidfunc2(structstudent*stud){printf("%d%s%d\n",stud->num,stud->name,stud->score);}voidfunc3(structstudent*stud,intn){inti;for(i=0;i<n;i++){func2(&stud[i]);}}voidmain(){inti,j;structstudentstud[N]={{1,"Tom",90},{2,"Jake",78},{3,"Rose",99}};func3(&stud[0],N);func1(&stud[0],N);func3(&stud[0],N);}程序4、阅读下列程序,写出程序运行结果。voidmain(){intk=10;dok=k-1;while(k=0);printf("k=%d",k);}试题五、程序设计题(第1小题4分,第2、3小题各8分)编写程序,要求从键盘上输入一个数给x,计算并输出分段函数y的值。-xx<=01/x0<x<10-xx<=01/x0<x<10x2x>=10y=从键盘输入一个正整数n,编写程序计算1!-2!+3!-4!+...+(-1)n-1*n!的值并输出结果,要求定义和调用函数fact(n)计算n的阶乘。已知华氏温度与摄氏温度的转换公式为:c=(5/9)(f-32),设计程序将f∈(30,40)的每一华氏温度转换为摄氏温度,并将以对照表的形式写入文件e:\data.txt中,即在文件中有两列数据,左边一列为华氏温度,右边一列是左边列对应的摄氏温度,两列中间用空格隔开,每一华氏温度和与之对应的摄氏温度占据一行。《C程序设计》考试答案与评分标准一、判断题(每小题2分,满分20分)(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)AABBBBABAA二、单选题(每小题2分,满分20分)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)CCBCADBCCA三、程序填空题(每小题2分,满分20分)(21)(22)(23)(24)(25)(26)(27)(28)(29)(30)ACDCBDCABd四、程序阅读题(每小题5分,满分20分)程序1程序2100126格式错扣1分,错一个数字扣2分。(-1,1)(-1,1)(1,-1)(1,-1)(-1,1)每行1分,格式错扣1分。程序3程序41Tom902Jake783Rose992Jake781Tom903Rose99格式错扣1分k=0*格式错扣1分五、程序设计题(每小题10分,满分20分)评分标准:include语句:0.5分评分标准:include语句:0.5分主函数定义:0.5分变量定义:0.5分scanf语句:0.5分判断结构1.5分printf语句:0.5分#include<stdio.h>voidmain(){ floatx,y; scanf("%f",&x); if(x<=0)y=-x; elseif(x<10)y=1/x; elsey=x*x; printf("y=%f",y);}fact函数评分标准:函数定义:0.5分变量定义及正确初始化:0.5分fact函数评分标准:函数定义:0.5分变量定义及正确初始化:0.5分循环结构:1分返回语句:0.5分主函数评分标准:include语句:0.5分主函数定义:0.5分变量定义及正确初始化:1分函数声明:0.5分scanf输入:0.5分循环结构:2分printf输出:0.5分#include<stdio.h

温馨提示

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

评论

0/150

提交评论