精品文档哈尔滨工业大学(威海)2008/2009秋季学期笔试试题(A 卷)C语言程序设计
计入总分;70%试卷说明:1. 卷面总分100分,取卷面成绩的 2. 选择
题、填空题与写运行结果题必须在答题卡内答题; 3. 答题时禁止拆开试卷钉,背面即为草稿纸;
分钟。4. 答题时间105
2分)一、单项选择题(本题16分,每小题
注的文编译程序编译连接之后生成一个后缀为______1. C语言源程序文件经过C意件。行D) .cpp C) .exe B) .obj A) .c 为。!(x>0||y>0) 等价于_____2. 表达式规D) !(x>0)&&!(y>0) B) !(x>0)||!(y>0) C)!x>0&&!y>0
A) !x>0||!y>0 范其中buffer代表的3. 已知函数的调用形式:fread(buffer, size, count, fp);
)。是(
A) 一个整型变量,代表要读入的数据项总数遵B) 一个文件指针,指向要读入的文件守一个指针,指向要存放读入数据的地址C) 考一个存储区,存放要读入的数据项D) 试以下不能正确定义二维数组的选项是4. 纪
a[][2]={1,2,3,4};
B) int }; A) int 律4}}; D) int a[2][2]={{1},2,3}; C) int
5. 以下程序的输出结果是_____。
main()
{
char ch[3][5]={AAAA,BBB,CC};
教研室主任签字:printf(\\%s\\
,ch[1]);
}
A) \AAAA\ B) \BBB\ C) BBB D) AAAA
精品文档.
精品文档
6. 对y在[3,23]和[100,200]范围内为真的确表达式为_____。
A) (y>=3)&&(y<=23)&&(y>=100)&&(y<=200)
B) (y>=3)||(y<=23)||(y>=100)||(y<=200)
C) (y>=3)&&(y<=23)||(y>=100)&&(y<=200)
D) (y>=3)||(y<=23)&&(y>=100)||(y<=200)
7. 设有如下结构定义:
struct addr
{
char name[30]; char street[40];
char city[20]; char office[30];
char phone[10]; int age;
} stud;
若用printf(“%s\n”,…)访问该结构中name值的正确方法是____。
A) stud->name B) &https://www.sodocs.net/doc/cb9689396.html, C) stud.&name D) https://www.sodocs.net/doc/cb9689396.html,
8. 若变量已正确定义并赋值,表达式______不符合C语言语法。
A) a*b/c; B) 3.14%2 C) 2, b D) a/b/c
分)二、填空题(本题20分,每小题21. 设变量定义为:int s[ ]=hello\nworld\n;,则数组s中有______个元素。
2. 设变量定义为:int a[2]={1,3}, *p=&a[0]+1;,则*p的值是_____。
3. 表达式!!8的值是______。
4. 下列程序段的输出结果是_____。
#define MIN(x,y) (x)<(y)?(x) : (y)
printf(%d,10*MIN(10,15));
5. 设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是_____。
6. 下列程序的输出结果是_____。
#include
main()
{
printf(%d,8>7?6:5>4?3:2);
}
7. 下列程序段的输出结果是_____。
char *st[ ]={abcd,efgh,ijkl,mnop};
printf(%s, *(st+1)+1);
8. 下列程序段的输出结果是_____。
int *p, *q, k = 1, j=10 ;
p=&j; q = &k ; p = q ; (*p)++;
printf(%d,*q);
9. 下列程序的输出结果是_____。
#include
main()
{ int c=35;
printf(%d\n,c&(c+1));
}
10. 下列程序的输出结果是_____。
精品文档.
精品文档
#include
main()
{ int a[2][3],(*p)[3];
int k=0,j;
p=a;
for(;k<2;k++)
for(j=0;j<3;j++)
*(p[k]+j)=(k+1)*(j+1);
printf(%d\n,*(p[1]+2));
}
三、请写出下列程序运行的输出结果。分)分,每小题
3用“□”表示空格(本题24#include
main()
{
int x,y=1,z=10;
x=1;
if(z<0)
if(y>0) x=3;
else x=5;
牰湩晴尨?搥屜屮砬?
if(z=y<0) x=3;
else if(y==0) x=5;
else x=7;
牰湩晴尨?搥屜屮砬?
printf(z=%d\n,z);
}
#include
int f(int m)
{
static int k=0;
int s=0;
for(;k<=m;k++)
s++;
return s;
}
精品文档.
精品文档
main( )
{
int s1, s2;
s1=f(5);
s2=f(5);
printf(%d %d\n, s1, s2);
}
3.#include
long fun( int n)
{
long s;
if(n==1||n==2)
s=2;
else
s=n-fun(n-1);
return s;
}
main()
{
printf(%ld\n, fun(3));
}
4. #include
int i=5;
main()
{
int i=3;
{
int i=10;
i++;
printf(%d\n,i);
}
f1();
i+=1;
printf(%d\n,i);
}
精品文档.
精品文档
int f1(void)
{
i=i+1;
return(i);
}
5. #include
#include
main()
{
char st[20]= hello\0\t\\c;
printf(%d %d\n,strlen(st),sizeof(st)); }
6. #include
main()
{
char *s[]={one,wo,hree},*p;
p=s[1];
printf(%c,%s\n,*(p+1),s[1]);
}
7. #include
main( )
{
char s[20]=I like it,t[20]=Are you?; int i=0;
while(s[++i]!='\0')
t[i]=s[i];
t[i]='\0';
printf(%s\n,s);
printf(%s\n,t);
}
#include
main( )
{
int a,b,s=0;
for(a=1,b=1;a<=100;a++)
{
精品文档.
精品文档
if(b>=20) break;
if(b%3==1)
{
b+=3; continue;
}
b-=5;
}
printf(a=%d\nb=%d\n,a,b);
}
四、请阅读下列给出的程序,并根据程序的功能
12分)改正程序中的错误(本题注意:不得增行或删行,不得更改程序结构。
请修改以下的简单计算器程序,使得:
(1)能进行浮点数的算术运算;
(2)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示:
Do you want to continue(Y/N or y/n)?
如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。
#include
#include
main()
{
int data1, data2; */float 将int 修改为/* char op,reply;
do
{
printf(Please enter the expression:\n);
scanf(%f%c%f, &data1,&op,&data2);
switch (op)
{
case +: */'+'应为/*
printf(%f+%f=%f\n,data1,data2,data1+data2);
break;
case -: */应为'-'/*
printf(%f-%f=%f\n,data1,data2,data1-data2);
break;
case *: */'*'/*应为精品文档.
精品文档