2011年07月自学考试00342《高级语言程序设计(一)》试题
发布时间:2019-08-122011年高级语言程序设计模拟试卷(五)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1. 设有下列数据定义语句,则表达式值是字母M的是()
struct P {char name[10]; int age;};
struct P c[3]={ {″John″ ,17},{″Paul″,19},{″Mary″,18}};
A. *c[3].name
B. c[3].*name
C. c[2].name[0]
D. c+2->name[0]
答案:C
2. 设 char c[5]{′a′,′b′,′c′,′0′}则 printf(″%s″,c);的输出是()
A. ′a′ ′b′
B. ab
C. abc
D. ″ab\0c″
答案:C
3. 下面程序段的运行结果是()
char a[]=″language″,*p;
p=a;
while(*p!=′u′){printf(″%c″,*p-32);p++;}
A. LANGUAGE
B. language
C. LANG
D. langUAGE
答案:C
4. .执行下面的程序段后,变量 k 中的值为()
int k=3,s[2];
s[0]=k;k=s[1]*10;
A. 不定值
B. 33
C. 30
D. 10
答案:A
5. 以下给出的各个函数的函数头中,正确的是 ()
A. void f(int a,b)
B. int *f(int a,int b)
C. int f(int a;int b)
D. int f(int a,int b;)
答案:B
6. 设有下列数据定义语句,则能正确使用变量xyz1引用成员a的表达式是 ()
struct abc { char a; short b; float c[2]; } abc1;
struct xyz { int x;struct abc abc2; } xyz1;
A. xyz1.a
B. xyz1.abc1.a
C. xyz1.abc2.a
D. xyz1->abc2->a
答案:C
7. 设变量x为实型,不能正确表达数学公式xyz的表达式是 ()
A. x/y*z
B. x*(1/(y*z))
C. x/y*1/z
D. x/y/z
答案:A
8. 以下循环体的执行次数是()
main()
{int i,j;
for(i=0,j=1;i<=j+1;i+=2,j--)printf(″%d\n″,i);
}
A. 3
B. 2
C. 1
D. 0
答案:C
9. 下列程序的运行结果是()
# include
main()
{int a=2,c=5;
printf(″a=%d,b=%d\n″,a,c);}
A. a=%2,b=%5
B. a=2,b=5
C. a=d,b=d
D. a=%d,b=%d
答案:B
10. 下列程序执行后的输出结果是()
void func(int *a,int b[])
{b[0]=*a+6; }
main()
{int a,b[5];
a=0;b[0]=3;
func(&a,b);
printf(″%d\n″,b[0]);
}
A. 6
B. 7
C. 8
D. 9
答案:A
11. 字符串“chen jing”在存储单元中占几个字节()
A. 8
B. 9
C. 10
D. 11
答案:C
12. 设有定义:char s[12]={″string″};,则printf(″%d\n″,strlen(s));的输出是()
A. 6
B. 7
C. 11
D. 12
答案:A
13. 下列程序执行后的输出结果是()main( )
{ int x=′f′;printf(″% c\n″,′A′+(x-′a′+1));}
A. G
B. H
C. I
D. J
答案:A
解析:G
14. 设有定义语句“char s[3][20],(*p)[20]=s;”则下列语句中错误的是()
A. scanf(″%s″,s[2]);
B. gets(*(p+2));
C. scanf(″%s″,*(p+2+0));
D. gets(s[2][0]);
答案:D解析:gets(s[2][0]);
15. 已知:float x=1,y;则y=++x*++x的结果为()
A. y=9
B. y=6
C. y=1
D. 表达式是错误的
答案:B解析:y=6
16. 一个C语言程序是由()组成的。
A. 主程序
B. 子程序
C. 函数
D. 过程
答案:C解析:函数
17. 下列选项中,合法的用户标识符是()
A. long
B. 45
C. ab
D. -sub
答案:C
18. 设有定义语句″int x[]={1,3,5,7,9,11,13},p=x;″,则不能正确引用数组x的合法元素的表达式是()
A. (p--)
B. (-- p)
C. p(++)
D. (++ p)
答案:B
解析:(-- p)
19. 不属于C语言保留字的是()
A. break
B. else
C. If
D. while
答案:C解析:If
20. 设有定义语句()
struct
{ int a;float b;}d[3]={{1,4},{2,5},{6,7}};
则 printf(″%3.1f\n″,d[2].a);的输出是
A. 2.5
B. 2.0
C. 8.0
D. 6.0
答案:D
解析:6.0
二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填,不填均无分。
1. C语言的执行总是由___函数开始,并且在此函数中结束。
答案:主(或main)22.m%2
2. 使用 fopen(″abc″,″a+″)打开文件时,若 abc 文件不存在,则___。
答案:建立新文件
3. 设 int a=1,b=2,c=3,d;执行d=!(a+b+c)后,d 的结果是___。
答案:0
4. 设有“char s[10]=″ABCDEF″,*p=s; p=″123″;”,则“s[3]”的值是字符___。 答案:D
5. 如果要将表达式(2*5.3)强制转换成长整型,应该写成____________
答案:long(2*53)
6. 对于变量x,其地址可以写成;对于数组y[10],其首地址可以写成或_________
答案:&xy&y[0]
7. 在C语言中的实型变量分为两种类型,它们是_________和_________
答案:float型double型
8. 设有数据定义语句“char s1[10]=″123″,s2[]={″45678″};”,则表达式“strlen (strcpy(s1,s2))+strcmp(s1,s2)”的值是______答案:5
9. 已知字母a的ASCⅡ码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为______
10. 设有语句串“int x[4]={1,2,3},*p[2]; p[1]=x+1;”,则*p[1]的值是______答案:2
三、程序分析题(本大题共5小题,每小题5分,共25分)阅读下列程序,将输出结果写到各题右侧的空白处。
1. main()
{ struct
{ char *name; int age;
} p[]={″ZHAO″,19,″QIAN″,21,″SUN″,20};
int i,k=0;
for (i=1;i<3;i++)
if ((*(p+k)).age<(p+i)->age) k=i;
printf(″%s\n″,(p+k)->name);
}
输出结果为?
答案:QIAN
2. main()
{static int a[][3]={9,7,5,3,1,2,4,6,8};
int i,j,s1=0,s2=0;
for(i=0;i<3,i++)
{if(i==j)s1=s1+a[i][j];
if(i+j==2)s2=s2+a[i][j];
}
printf(″%d\n,%d\n″,s1,s2);
}
输出结果为?
答案:18
10
3. # include
main()
{int i,j;
for(i=4;i>1;i--)
{ printf(″*″);
for(j=1;j<4-i;j++)printf(″*″);
printf(″\n″);}
}
输出结果为?
* *
* * *
* * * *
4. f(int a)
{ int b=0;
static int c=3;
a=c++,b++;
return(a);
}
main()
{ int a=2,i;
for (i=0;i<2;i++)
printf(″%d,″,f(a++));}
答案:3,4
5. main()
{
char ss[10]=″a program″;
int num=4;
sub(ss,0,num-1);sub(ss,num,6);sub(ss,0,6);
printf(″%s\n″,ss);
}
sub(ss,num1,num2)
char *ss;int num1,num2;
{
char t, * p;
p=ss+num2;ss=ss+num1;
while(ss
答案:ogra pram
四、程序填充题(本大题共3小题,每小题6分,共18分)给出下列程序,将横线处缺少的部分补上,使其能正确运行。
1. 图中空白处答案应为:___,___,___。
答案:float *max, float *min
*p
*max=*(p+i*6+j)
2. 图中空白处答案应为:___,___,___。
答案:′\0′ ++ num
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;
}
答案:b[i]!=′\0′a[i++]i++
五、程序设计题(第1小题5分,第2、3小题各6分,共17分)
1. 用三种循环语句分别编写程序显示 1~100的平方值。
答案:# include
main()
{ int i;
for(i=1;i<=100;i++)printf(″%d″,i*i);printf(″\n″);i=1;while(i<=100){printf(″%d″,i*i);i++;}printf(″\n″);i=1;do{printf(″%d″,i*i);i++;}while(i<=100);
}
更多试卷请登陆九州考苑(http://www.wenkuxiazai.com)
2. 编一个程序,输入15个整数存入一维数组,按逆序重新存放后再输出。答案:# include
main()
{ int a[15],*p=a,i,j;
for(i=0;i<15;i++,p++)
scanf(″%d″,p);
p--;
for(i=0;i<7;i++,p--){j=*p;*p=*(p-14+2*i);*(p-14+2*i)=j;}for(i=0;i<15;i++)
printf(″%d\n″,a[i]);
}
3. 编函数,将短整数m转换成字符串存入指针变量p指向的字符型数组。答案:void f(short m,char *p)
{ char s[5];
int k=4;
if (m<0) { *p=′-′; p++; m=-m; }
while (m!=0)
{ s[k]=′0′+m%10; k--; m=m/10; }
for (k++,k<5;k++,p++)*p=s[k];
*p=′\0′;
return;
}