来源 : 386802031 湖北自考教育网 : http://www.hbzkjy.com
2011年全国高级语言程序设计模拟试卷(十)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1. 以下能正确定义且赋初值的语句是()
A. int n1=n2=10;
B. char c=32;
C. float f=f+1.1;
D. double x=12.3E2.5;
答案:B
2. 若给定条件表达式:“(a)?(b++):(b--),”则与表达式 a 等价的表达式是()
A. a==0
B. a==1
C. a!=0
D. a!=1
答案:C
3. 函数调用语句“f(1,2+3,(4,5));”的实参数目是()
A. 1
B. 2
C. 3
D. 4
答案:C
4. 运行下列程序后,输出结果是()
int f(int a,int *b)
{ return(a+*b);}
main()
{ int x=1,y=2,z=3;
printf(″%d\n″,f(f(x,&y),&z));
}
A. 3
B. 5
C. 6
D. 7
答案:C
5. 设有下列数据定义语句,则表达式“sizeof(abc)”的值是()
struct { char a; short b; float c[2]; }abc;
A. 4
B. 7
C. 8
D. 11
答案:D
6. 设x和y均为int型变量,则执行下面的循环后,y的值为()
for(y=1;x=1;y<=50;y++)
if(x>=10) break;
A. 10
B. 9
C. 11
D. 8
答案:A
7. 函数调用“strcmp(″333″,″300″)”的返回值是 ()
A. 0
B. 1
C. 任意负整数
D. 任意正整数
答案:D
8. 下列程序的输出结果是()
struct abc
{int a,b,c;};
main()
{struct abc s[2]={{1,2,3},{4,5,6}};int t;
t=s[0].a+s[1].b;
printf(″%d\n″,t);
}
A. 5
B. 6
C. 7
D. 8
答案:B
9. 如果打开文件时,选用的文件操作方式为″wb+″,则下列说法中错误的是()
A. 要打开的文件必须存在
B. 要打开的文件可以不存在
C. 打开文件后可以读取数据
D. 要打开的文件是二进制文件
答案:A
10. 若已定义:int a[9],*p=a,并在以后的语句中未改变 p 的值,不能表示 a[1]地址的表达式是()
A. p+1
B. a+1
C. a++
D. ++p
答案:C
11. 以下程序的输出结果是()
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf(″%d %d″,x--,y);
}
A. 10192
B. 9876
C. 10990
D. 101091
答案:D
12. 能正确定义一个用来向打开文件的文件型指针变量 fp 的语句是()
A. file fp
B. file *fp
C. FILE fp
D. FILE *fp
答案:D
13. 下列程序段的输出结果是 ()
char s[10];s=″abcd″;printf(″%s\n″,s);
A. abcd
B. a
C. abcd\0
D. 语法有错误
答案:D
解析:语法有错误
14. 存储整数-12345时,在二进制文件和文本文件中占用的字节数分别是 ()
A. 2和2
B. 2和6
C. 6和6
D. 6和2
答案:B
解析:2和6
15. 设有定义“ int x=8;”, 则表达式 “x+++1/3”的值是()
A. 0
B. 2
C. 3
D. 8
答案:D
解析:8
16. 设有条件表达式“(x)?1∶2”,则和表达式“(x)”作用相同的表达式是 ()
A. (x==0)
B. (x!=0)
C. (x==1)
D. (x!=1)
答案:B
解析:(x!=0)
17. 设有定义“short x[5]={1,2,3};”,则数组x占用的内存字节数是()
A. 10
B. 6
C. 5
D. 3
答案:
解析:10
18. 设有整型变量x值为1,表达式x+++x+(++x)的值是 ()
A. 3
B. 4
C. 5
D. 6
答案:B
解析:6
19. 设整型变量m的值为0,表达式!!!++m的值是()
A. -1
B. 0
C. 1
D. 2
答案:
解析:0
20. 若有以下定义,则数值为4的表达式是()
int w[3][4]={{0,1},{2,4}{5,8}},(*p)[4]=w;
A. *w[1]+1
B. p++,*(p+1)
C. w[2][2]
D. p[1][1]
答案:D
解析:p[1][1]
二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填,不填均无分。
1. 若使用fopen函数打开一个新的二进制文件,对该文件进行读写操作,则文件使用方式字符 串应该是___。答案:″wb+″
2. 设m是整型变量,能表示“m是奇数”的C语言表达式是___。
答案:if (m%2==1)
printf("m是奇数")
else printf("m是偶数")
3. 若有定义:char c=′\010′;则变量 c 中包含的字符个数为___。
答案:1个
4. 设 int a[2][3]={{2},{3}};则数组元素___的值为3。
答案:a[1][0]
5. 若 a 是 int 型变量,则执行a=25/3%3后 a 的值为___。
答案:2
6. 在C语言中,如果某个逻辑表达式为假,则该逻辑表达式的值是___。
答案:0
7. C语言中的标识符只能由三种字符组成,它们是字母、数字和。_________
答案:下划线
8. 设有下列数据定义语句,则表达式“++p->b”的值是_________。
struct AB { int a; float b; } ab[2]={{4,3},{2,1}},*p=ab;答案:40
9. 设int i=5;则循环语句while(i>=1)i--;执行后,i的值为______
答案:0
10. 执行语句“if (x=0) x=1;”后,变量x的值是______
答案:0
三、程序分析题(本大题共5小题,每小题5分,共25分)阅读下列程序,将输出结果写到各题右侧的空白处。
1. # include
main()
{int s=0,k;
for(k=7;k>=0;k--)
{ switch(k)
{case1:
case 4:
case 7:s++;break;
case 2:
case 3:
case 6:break;
case 0:
case 5:s+=2;break;
}
}
printf(″s=%d\n″,s);
}
输出结果为?
答案:s=7
2. #include ″string.h″
main()
{ int n,i,j;
char s[]={″1,2,3,4,5,6,7″},temp;
n=strlen(s);
for (i=0;i
{ j=n-1-i;
temp=s[i];s[i]=s[j];s[j]=temp;
}
printf(″%s″,s);
}
输出结果为?
答案:7,6,5,4,3,2,1
3. main()
{char *a[6]={″AB″,″CD″,″EF″,″GH″,″IJ″,″KL″};
int i;
for (i=0;i<4;i++) printf(″%s″,a[i]);
printf(″\n″);
}
答案:ABCDEFGH
4. # include
main( )
{ int s,i,sum;
for(i=1,i<=10;i++)s=sum(i);
printf(″s=%d\n″,s);
}
sum(int k){static int x=0;return(x+=k);}
答案:s=55
5. main()
{ int a[]={1,2,3,4,5,6};
int *p;
int i;
p=a;
*(p+3)+=2;
printf(″%d,%d\n″,*p,*(p+3));
}
答案:1,6
四、程序填充题(本大题共3小题,每小题6分,共18分)给出下列程序,将横线处缺少的部分补上,使其能正确运行。
1. 图中空白处答案应为:___,___,___。
答案:j=i+1
2. 下面程序的功能是根据以下公式求π的近似值(精度为10-6)。
π2=1+13+13×25+13×25×37+13×25×37×49+…
main()
{ double s=0.0,t=______;
int n;
for (n=2;t>=1E-6;n++)
{ s+=t;
;
}
printf(″%f\n″,);
}
答案:10
t=t*(n-1)/(2*(n-1)+1)
2*s
3. 下面程序输出两个字符串对应位置相等的字符。
# include ″stdio.h″
main( )
{ char a[___]=″programming″,b[___]=″fortran″;
int i=0;
while(a[i]!=′\0′&&)
if(a[i]==b[i])printf(″%c″,);
else;
}
答案:
五、程序设计题(第1小题5分,第2、3小题各6分,共17分)
1.
答案:# include
# define N 50
main()
{ int i,s[N][3];
float s0=0,s1=0,s2=0;
for(i=0;i
{ scanf(″%d,%d,%d″,&s[i][0],&s[i][1],&s[i][2]);
s0=s0+s[i][0];s1=s1+s[i][1];s2=s2+s[i][2];
}
s0=s0/N;s1=s1/N;s2=s2/N;
printf(″%f,%f,%f″,s0,s1,s2);
}
2. 编一个程序,将两个字符串连接起来,不要用 strcat 函数。
答案:# include
main()
{
char s1[80],s2[40];
int i=0,j=0;
printf(″\n input string1:″);
scanf(″%s″,s1);
printf(″\n input string2:″);
scanf(″%s″,s2);
while(s1[i]!=′\0′)
i++;
while(s2[j]!=′\0′)
s1[i++]=s2[j++];
s1[i]=′\0′;
printf(″\n new string:%s″,s1);
}
3. 从文件r.exe中读10个浮点数并存入数组b中。
答案:# include ″stdio.h″
FILE *fp;/*定义文件型指针变量*/
main()
{ float b[10];
clrscr();/*清屏*/
if(! (fp=fopen(″r.exe″,″rb″)))/*文件打开失败*/
{ printf(″cannot open file\n″);
exit(1);/*退出*/
}
if((fread(b,sizeof(float),10,fp))==10)/*从 fp 指向的文件读10个数据成功*/if(! feof(fp))printf(″premature end of file″);/*文件没读完*/else printf(″file read end″);
getch();
fclose(fp);/*关闭文件*/
}