C语言程序设计A卷.docx
- 文档编号:10513670
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:15
- 大小:30.42KB
C语言程序设计A卷.docx
《C语言程序设计A卷.docx》由会员分享,可在线阅读,更多相关《C语言程序设计A卷.docx(15页珍藏版)》请在冰豆网上搜索。
C语言程序设计A卷
哈尔滨工业大学(威海)2007/2008学年秋季学期
C语言程序设计笔试试题(A卷)
题号
一
二
三
四
五
六
笔试(70%)
综合
(30%)
总分
分数
号
学
名
姓
试卷说明:
1.笔试卷面总分100分,取卷面成绩的70%计入总分;
2.综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%;
3.答题时禁止拆开试卷钉,试卷背面即为草稿纸;
4.答题时间120分钟。
一、单项选择题。
请把答案填入下面框中,
不允许出框线。
(本题16分,每小题2分)
题号
1
2
3
4
5
6
7
8
答案
注意行为规范
遵守考试纪律
1.以下选项中合法的C语言用户标识符是()。
A)longB)_2TestC)3DmaxD)A.dat
2.有以下程序
main()
{
inta=0,b=0,c=0,d=0;
if(a=2)b=2;c=4;
elsed=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
则程序输出()。
A)0,1,2,0B)0,0,0,3
C)1,1,2,0D)编译有错
教研室主任签字:
3.用语句scanf(“%c%c%c”,&c1,&c2,&c3);输入”a,b,c”时,变量c1、c2、c3的值分别为()。
A)‘a′,′b′,′c′B)′a′,′b′,′′
C)′a′,′,′,′b′D)′a′,′′,′c′
4.有以下程序段
main()
{
intk=0;
while(k=1)k++;
}
则while循环执行的次数是()。
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
5.有以下程序:
#include
#include
main()
{
char*p=”abc\101\0fghijk\0”;
printf(“%d”,strlen(p));
}
执行后的输出结果为()。
A)6B)4C)12D)14
6.设有说明语句:
inta=1,b=2,c=3,d=4,m=2,n=2;则执行(m=a>b)&&(n=c>d)后n的值为()。
A)1B)2C)3D)4
7.表达式0x13&0x17和0x13|0x17的值分别是()。
A)19,23B)23,19C)248,232D)236,200
8.设有以下语句
typedefstructTT{
charc;
inta[4];
}CIN;
则下面叙述中正确的是()。
A)可以用TT定义结构体变量B)TT是struct类型的变量
C)可以用CIN定义结构体变量D)CIN是structTT类型的变量
二、填空题。
请按序号把答案填入下面框中,
不允许出框线。
(本题20分,每空1分)
题号
答案
题号
答案
1
11
2
12
3
13
4
14
5
15
6
16
7
17
8
18
9
19
10
20
1.下面程序的功能是输出二维数组的所有元素值,请完成程序。
main()
{inta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
int*p;
for(【1】;p<【2】;p++)
printf("%d\t",*p);
}
2.有以下函数
intfun(char*s){
char*t=s;
while(*t++);
return(t-s-1);
}
该函数的功能是【3】。
3.读入三个浮点数,取出其小数部分分别输出,完成下列程序。
voidsplitfloat(floatx,float*fracpart)
{
intintpart=【4】x;
*fracpart=x-【5】;
}
main()
{
inti;
floatx,temp;
printf("Enter3floatpointnumbers:
\n");
for(i=0;i<3;i++)
{
scanf("%f",&x);
splitfloat(x,【6】);
printf("FractionPart=%5.4f\n",temp);
}
}
4.下列程序段为链表结点类型定义,请填空。
【7】student{
intnum;
charname[20];
intscore;
【8】next;
};
5.如下图所示,设指针p指向的结点已经申请空间,并进行了赋值,写出将结点p插入头节点h之前的C程序语句。
【9】;
【10】;
6.如下图所示,设指针q指向要删除的结点,写出删除该结点的语句。
h
data
next
data
NULL
·····
q
data
next
【11】;
【12】;
7.下面程序的运行结果为【13】。
main()
{
enumweekday
{sun,mon,tue,wed,thu,fri,sat}a,b,c;
a=sun;b=tue;c=sat;
printf("%d%d%d",a,b,c);
}
8.在C语言中,对于文件的操作主要是通过调用包含在头文件”stdio.h”的标准库函数来实现的。
因此,在对文件操作的C程序中,必须添加包含此头文件的预处理指令,该指令为【14】。
假设在C盘根目录下有一文本文件hit.txt,现在要以读写方式打开此文件并在打开后立即关闭。
请完成下面的C程序语句:
【15】fp;
fp=fopen(【16】,“rw”);
【17】;
9.若有定义语句:
inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是【18】;
10.以下函数的功能是:
输出三个变量中的最小值,请完成该函数。
intGetMin(intx1,intx2,intx3)
{
intt1=【19】;
intt2=【20】;
return(t1>t2?
t2:
t1);
}
三、请把下列程序运行结果填入答案框中,不允
许出框线,用“↙”表示回车。
(本题24分,每小题3分)
题号
1
2
3
4
5
6
7
8
答案
1.#include
main()
{
intp=30;
printf("%d\n",(p/3>0?
p/10:
p%3));
}
2.#include
main()
{
charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(↙代表回车换行):
1357↙24↙
请把输出结果填入答案框中。
3.#include
main()
{
inta=1,b;
for(b=1;b<=10;b++)
{
if(a>=8)break;
if(a%2==1){
a+=5;
continue;
}
a-=3;
}
printf("%d\n",b);
}
4.#include
main()
{
inta[]={1,2,3,4,5,6},*p=a;
*(p+3)+=2;
printf("%d,%d",*p,*(p+3));
}
5.#include
char*fun(char*str)
{
returnstr="fun";
}
main()
{
char*str="ction";
printf("%s,%c\n",fun(str)+1,*fun(str)+1);
}
6.#include
main()
{
char*s[]={"two","three","four","five"};
char*p=s[1];
char*q=s[3];
q+=2;
printf("%s,%s",(++p),(q--));
}
7.#include
structst
{
intx;
int*y;
}*p;
intdt[4]={10,20,30,40};
structststMatrix[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{
p=stMatrix;
printf("%d,%d",++(p->x),*((p+2)->y));
}
8.#include
main()
{
inta=0,b=2,c=3;
switch(a)
{
case0:
switch(b==2)
{
case1:
printf("&");break;
case2:
printf("%");break;
}
case1:
switch(c)
{
case1:
printf("$");
case2:
printf("*");break;
default:
printf("#");
}
}
}
四、根据功能描述改正程序中的错误。
不得增行或删行,不得更改程序结构。
(本题10分)
1.要求以下程序的功能是计算1+1/2+1/3+……+1/10的和。
(本小题4分)
#include
main()
{
intn;
floats;
for(n=10;n>1;n--)
s+=1/n;
printf("%6.4f\n",s);
}
2.下面函数Squeez()的功能是删除字符串s中所出现的与变量c相同的字符。
(本小题6分)
voidSqueez(chars[],charc);
{
inti,j;
for(i=0,j=0;s[i]!
='\0';i++)
{
if(s[i]!
=‘c’)
{
s[j]=s[i];
j++;
}
s[i]='\0';
}
}
五、请用标准程序流程图描述下列问题的算法
1.依次从键盘输入10个不同的整型数据,请查找出这些数据中的最大值和最小值,并指出它们分别是第几次输入的。
2.某人身上有人民币50张,面值分别为20元、10元、5元和1元。
请分别统计出这些不同面值人民币的张数并计算出这50张人民币的总面值来。
(本题10分,每小题5分)
六、编程题(本题20分)
1.请从键盘输入一个长度为29的字符串,要求分别统计出该字符串中所包含的英文字符、数字字符、空格字符以及其他字符的个数。
请写出解决该问题的完整C程序。
(本小题6分)
2.输入任意长度的字符串str1和子字符串str2(str2的长度要小于str1的长度),请统计出str1中包含有几个子字符串str2,并计算str1中出现最后一个子串str2之前已有多少个字符出现。
(本小题
8分)
3.某数理化三项竞赛训练组有4个人,其中有且仅有一个人的一项成绩不及格(小于60),请找到此人并输出其所有成绩。
要求使用指针函数,完成下列程序。
(本小题6分)
#include
int*seek(int)
{
inti,*pnt_col;/*定义一个(列)指针变量pnt_col*/
pnt_col=;
for(i=0;i<3;i++)
if()
{
}
return(pnt_col);
}
main()
{
intgrade[4][3]={{65,65,75},{65,45,85},{75,80,90},{77,75,95}};
inti,j,*pointer;
for(i=0;i<4;i++)
{
pointer=seek(grade+i);
if(pointer==*(grade+i))
{
printf("No.%dgradelist:
",i+1);
for(j=0;j<3;j++)
printf("%d",*(pointer+j));
printf("\n");
break;
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计