期末复习级软件系网络系和游戏系答案和说明.docx
- 文档编号:4311553
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:15
- 大小:42.92KB
期末复习级软件系网络系和游戏系答案和说明.docx
《期末复习级软件系网络系和游戏系答案和说明.docx》由会员分享,可在线阅读,更多相关《期末复习级软件系网络系和游戏系答案和说明.docx(15页珍藏版)》请在冰豆网上搜索。
期末复习级软件系网络系和游戏系答案和说明
期末复习
一、题型:
共有5大题:
1、单项选择题(每小题1.5分,小计30分)
2、填空题(每空2分,小计20分)
3、写出下列程序的运行结果(每小题5分,小计20分)
4、程序填空(每空2分,小计10分)
5、程序设计题(有3小题,其中:
第1、2小题各6分,
第3小题8分,小计20分)
二、考试形式、时间、涉及内容
考试形式为闭卷,时间为90分钟
涉及内容:
各讲内容均有涉及
三、样题(与考题无必然联系,仅供参考)
(1)单选题:
1、C语言中,运算对象必须是整型的运算符是【】
A./B.%C.++D.!
2、下列标识符中,不合法的是【】
A.x2B.sizeofC._123D.char2
3、若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为【】
A.4B.16C.32D.52
(i=4,j=16,k=32)为逗号表达式,从左到右依次计算每一个部分后,取最后的部分作为整个表达式的结果
4、设有数组定义:
chara[]="China";则数组a所占的空间为【】字节
A.4B.5C.6D.7
注意:
字符串后会自动加入字符串结束符'\0'
5、设d是double型变量,若要从键盘输入数据给d,正确的语句是【】
A.scanf(d);B.scanf("%f",d) ;
C.scanf("%f",&d) ;D.scanf("%lf",&d) ;
6、以下程序段的输出结果是【】
intx=3;
do
{
printf("%d",x-=2);
}while(!
(--x));
A.1-2B.30C.1D.无输出第一次循环到while时,x为1,--x的值为0,!
0为1,因此需要继续循环。
这时x的值为0。
第二次循环时到while时,x为-2,--x为-3,!
(-3)的值为0,退出循环
7、下列程序段执行之后,输出的结果是【】
doublex=4,y;
if(x<0)
y=0;
elseif(x<10)
y=1.0/x;
else
y=1;
printf("%.2f\n",y);
A.0.25B.0.50C.0.75D.1.00
8、若已定义:
inta[]={0,11,22,33,44,55,66,77,88,99},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是【】
A.p[i]B.*(&a[i])C.a[10]D.a[p-a]
注意:
数组a的元素个数为10,最大可用下标为9
9、现有定义:
int*p[3];下列关于标识符p的描述中,正确的是【】
A.定义不合法B.是一个指向整型变量的指针
C. 是一个指针,它指向一个具有3个元素的一维数组
D.是一个指针数组名,每个元素是一个指向整型变量的指针
int(*p)[3]是数组指针,只定义一个指针,int*p[3]是指针数组,定义了3个指针
10、若有如下定义,则对ex中的a成员的正确引用是【】
structsk{inta;floatb;}ex,*p=&ex;
A.(*p).ex.aB.p->aC.p->ex.aD.p.ex.a
11、判断字符串s1和s2是否相等的表达式是【】
A.s1=s2B.s1==s2C.strcpy(s1,s2)==0D.strcmp(s1,s2)==0
12、数字11与13进行“位或”运算(即11|13)的结果是【】
A.1B.11C.13D.15
(2)填空题
1、一个C语言程序的执行是从main函数开始的。
注意大小写
2、结构化程序的三种基本结构是:
顺序结构、选择结构和循环结构。
3、在VC++2008环境下,C语言源程序的扩展名是_c____,经过编译、链接后得到的可执行文件的扩展名是_____exe_____。
4、C语言中字符串的结束标志符是___'\0'_____;转义字符__'\n'_____具有换行功能。
5、指针就是地址,指针变量就是用来存储地址的变量。
6、若a=5,b=3,则表达式a>b?
a+b:
a-b的结果是8____。
7、数学式:
0 8、一个函数的原型是voidfunc(int),现要求定义一个函数指针p指向该函数,那么p的正确定义格式是____void(*p)(int);p=func;_______________。 (3)写出下列程序的运行结果 1、 #include intmain() { charc1,c2; c1='A'+'8'-'5'; c2='A'+'8'-'4'; printf("%c,%d\n",c1,c2); return0; } 已知字母A的ASCII码为65,程序运行后的输出结果是D,69 2、 #include inta=5; voidfun(intb) { inta=10; a+=b; printf("%d,",a); } intmain() { intc=20; fun(c); a+=c; printf("%d\n",a); return0; } 程序运行后的输出结果是30,25 3. #include voidbubbsort(inta[],intn) { inti,j,temp; for(i=0;i { for(j=0;j if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } intmain() { intarray[]={3,15,9,6,12}; bubbsort(array,5); for(inti=0;i<5;i++) printf("%d",array[i]); printf("\n"); return0; } 程序运行后的输出结果是3691215 注意标点符号和空格。 (4)程序填空 1、以下程序的功能是: 从键盘输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入的是负数时结束输入。 #include intmain() { floatx,max,min; printf("请输入学生成绩: "); scanf("%f",&x); max=min=x; while( (1))//x>=0 { if( (2))max=x;//x>max if(x scanf("%f",&x); } printf("max=%f,min=%f\n",max,min); return0; } 2、以下程序的功能是: 先从键盘输入一个文件名,然后将输入的字符以文本方式依次存放到该文件中,用#作为输入的结束标志。 #include #include intmain() { FILE*fp; charch,fname[30]; printf("请输入文件名: \n"); gets(fname); if((fp=(3))==NULL)//fopen(fname,"w") { printf("不能打开文件! \n"); exit(0); } printf("请输入数据: \n"); while((ch=getchar())! =(4))//‘#’ fputc((5),fp);//ch fclose(fp); return0; } (5)编程题: 1、课件第3讲例3输入三角形的三边长,求其面积 #include #include intmain() { floata,b,c,s,area; printf("请输入三角形的三边长度: "); scanf("%f%f%f",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("三角形的三边长度: a=%f,b=%f,c=%f\n",a,b,c); printf("三角形的面积: area=%f\n",area); return0; } 2、课件第6讲循环结 (2)例1 #include intmain() { intsign=-1; doubles=0,PI; inti; for(i=1;1.0/i>=1e-7;i=i+2) { sign=-sign; s=s+1.0/i*sign; } PI=s*4; printf("i=%d\n",i-2); printf("PI=%10.8f\n\n",PI); return0; } 3、课件第6讲循环结 (2) 例2: 输入一批学生成绩,输出其中的最高分、最低分 #include intmain() { intscore,min,max; printf("请输入成绩(0--100),其它成绩结束: "); scanf("%d",&score); max=min=score;//min、max赋初值 while((score>=0)&&(score<=100)) { if(score>max) max=score; if(score min=score; printf("请输入成绩(0--100),其它成绩结束: "); scanf("%d",&score); } printf("max=%d,min=%d\n",max,min); return0; } 4、课件第7讲数组 例5: 已知一个int型数组,数据元素分别为{9,8,5,4,2,0}。 要求按由小到大的顺序,重新排列数组元素(本例用选择排序法,也可以用冒泡排序法) #include intmain() { inta[6],i,j,t; printf("input6numbers: \n"); for(i=0;i<6;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<5;j++) for(i=j+1;i<6;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[]; a[i+1]=t; } printf("thesortednumbers: \n"); for(i=0;i<6;i++) printf("%d",a[i]); printf("\n"); return0; } 5、课件第8讲数组 例6选择排序 #include #include constintM=5;//定义常量,下同 constintN=30; voidSelectSort(charstr[M][N])//对字符串进行选择排序函数 { inti,j,k; chartemp[N];//用于字符串交换时当作中间存放空间 for(i=0;i { k=i;//给k赋初值 for(j=i+1;j if(strcmp(str[k],str[j])>0)//进行字符串比较 k=j;//记录较小值的位置 //利用字符串拷贝函数交换str[i]与str[k]的值 if(i! =k) { strcpy(temp,str[i]); strcpy(str[i],str[k]); strcpy(str[k],temp); } } } intmain() { chars[M][N];//定义二维字符数组 inti; printf("请输入%d个字符串: \n"); for(i=0;i gets(s[i]); SelectSort(s);//调用函数进行选择排序 printf("\n排序后字符串: \n"); for(i=0;i puts(s[i]); printf("\n"); return0; } 6、实验_12 第2题: 请参考教材P226-229图示,请说明下列函数中,哪些能实现主函数的实参数据交换功能,哪些不能实现或程序存在问题,为什么? (最好上机验证) (1) voidswap1(int*p1,int*p2) { inttemp;//临时变量的类型与要交换的值的类型一致 temp=*p1; *p1=*p2; *p2=temp; } (2) voidswap2(int*p1,int*p2) { int*temp; *temp=*p1; *p1=*p2; *p2=*temp; } (3) voidswap3(intx,inty) { inttemp; temp=x;x=y;y=temp; } (4) voidswap4(int*p1,int*p2) { int*p; p=p1; p1=p2; p2=p; } 7、实验_82、输入一个字符串,请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。 如下图所示: (提示: 在教材的p385-386中有字符和字符串函数,可以直接引用。 如isalpha()判断字母函数、isdigit()判断数字函数、isspace()判断空格函数、ispunct()判断标点函数等) #include #include intmain() { charstr[201]; printf("请输入一个长度不超过的字符串: \n"); gets(str); intn1,n2,n3,n4; n1=n2=n3=n4=0; for(inti=0;str[i];i++) { if(isalpha(str[i])) n1++; elseif(isdigit(str[i])) n2++; elseif(isspace(str[i])) n3++; elseif(ispunct(str[i])) n4++; } printf("该字符串的字母个数: %d,数字个数: %d,空格个数: %d,标点个数: %d\n\n",n1,n2,n3,n4); return0; } 8、实验_101、编程计算数组各元素的平方和,要求如下: (1)voidarray_input(intarray[],intn)的功能是: 输入整型数组array的各元素值,参数n是数组元素的个数; (2)intsquare_sum(intarray[],intn)的功能是: 对整型数组array的各元素的平方求和,参数n是数组元素的个数; (3)主函数的功能: 定义一个是长度为6的整型数组,通过调用array_input()输入各元素的值,再调用square_sum()得到各元素平方和,最后输出结果; (4)主函数在前,上述两个函数在后面定义。 程序运行如下图所示: #include intmain() { voidarray_input(intarray[],intn); intsquare_sum(intarrya[],intn); inta[6]; array_input(a,6); intarray_square_sum=square_sum(a,6); printf("数组a的各元素平方和: %d\n\n",array_square_sum); return0; } voidarray_input(intarray[],intn)//输入数组元素的函数 { printf("请输入整型数组的%d个元素: \n",n); for(inti=0;i scanf("%d",&array[i]); } intsquare_sum(intarray[],intn)//计算数组元素平方和函数 { inti; intsum=0; for(i=0;i sum=sum+array[i]*array[i]; returnsum; } 9、实验_11结构体、共用体和枚举类型 3、学生有三门课程: A、B、C,3名学生的成绩如下表所示: 姓名 A B C 平均分 张三 78 84 67 李四 88 90 95 王五 66 79 80 请先定义一个结构体Student,其成员包括: name(姓名)、A、B、C、aver(平均分),再定义一个Student类型的数组stud[3]来存放学生资料。 现欲先输入学生三门课程成绩,再计算平均分,最后输出学生信息,要求用“模块化程序设计”方法来设计程序。 请根据题意、注释在代码段1-代码段5中填写程序所缺代码。 #include //定义结构体Student,学生姓名不超过10个字符 //三门课程成绩均为百分制,只取整数;平均分带小数 structStudent { //代码段1 }; intmain() { //定义结构体数组stud[3] //对input()、average()、print()三个函数进行声明 //调用input()、average()、print()三个函数 //代码段2 return0; } //定义输入n名学生的姓名、三门课程成绩的函数。 voidinput(Students[],intn) { //代码段3 printf("\n"); } 输入某一学生成绩的界面如下: //定义计算n名学生三门课程平均分的函数 voidaverage(Students[],intn) { //代码段4 } //定义输出n名学生的姓名、三门课程成绩、平均分的函数。 学生信息输出如下图所示 voidprint(Students[],intn) { //代码段5 printf("\n"); } 输出结果界面如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 期末 复习 软件 网络 游戏 答案 说明