2008年下半年全国自考(高级语言程序设计)真题试卷
一、1.单项选择题
0. 在一个C语言程序中( )
A.主函数只能有一个
B.主函数可以有多个
C.非主函数只能有一个
D.主函数和非主函数都可以有多个
1. 正确定义无符号整型变量m的语句是( )
A.int m;
B.unsigned int m;
C.signed int m;
D.unsigned signed m;
2. 不属于字符型常量的是( )
A."s"
B."8"
C."A"
D."
"
3. 设intx=2,y=4;,值为非0的表达式是( )
A.1/x*y
B.1/(x*y)
C.1.0/x/y
D.1/x/(double)y
4. 设int a=2,b=5;,结果为0的表达式是( )
A.a%b
B.a&b
C.a=b
D.a!=b
5. 设int a=0;,错误的语句是( )
A.++a;
B.a++;
C.a=-a;
D.(-a)++;
6. 设int a=1,b=2,c=3,d=4,f;,执行语句f=(a!=b)?c++:d++;后f的值是( )
A.2
B.3
C.4
D.5
7. 设int m=5;,语句while(m==0)printf("%d",m-=2);的循环体执行的次数是( )
A.0
B.1
C.2
D.无限
8. 下列运算符优先级最高的是( )
A.+=
B.,
C.!
D.?:
9. 定义二维数组并初始化,正确的是( )
A.int a[3][]={{1,2,3},{4,5,6 }};
B.int a[][3]={{1,2,3},{4,5,6}};
C.int a[3][3]=[{1,2,3},{4,5,6}];
D.int a[][]={1,2,3,4,5,6};
10. 有关变量的叙述,正确的是( )
A.形式参数是全局变量
B.a和A在C语言中是同一个变量
C.函数体内定义的变量为全局变量
D.在所有函数之外定义的变量为全局变量
11. 若定义的函数为float*fun(){……},则函数的返回值是( )
A.float型数据
B.void型数据
C.float型指针
D.void型指针
12. 设int a[10],*p=a;,数组元素a[4]的正确引用是( )
A.*(p+4)
B.p+4
C.*p+4
D.a+4
13. 合法的用户标识符是( )
A.default
B.#define
C.a+b
D.book
14. 使用系统函数sqrt()时,应在程序开头写上的编译预处理命令是( )
A.#include<stdio,h>
B.#include<string,h>
C.#include<math.h>
D.#include<stdlib.h>
二、2.填空题
0. 赋值运算符的结合性是______。
1. 设char ch;,判断ch为数学字符的逻辑表达式是______。
2. 设typedef float REAL;REAL x=1;,表达式x/2的值是______。
3. 转义字符" "的含义是______。
4. 设int a=12;,语句printf("%d ",(a/3,a%3,a/10>0));的输出结果是______。
5. 函数中未指定存储类型的局部变量,其隐含的存储类型是______。
6. 若全局整型变量未初始化,则默认的初始值是______。
7. 设int a,*p=&a;,通过指针变量p为a输入值的scanf语句是______。
8. 设char*s="abc";,语句for(;*s!=" ";s++)printf("W");的输出结果是______。
9. 设struct student
{
char name [20];
char sex;
}stu;
语句printf("%d
",sizeof(stu));的输出结果是______。
三、3.解答题
0. #include<stdio.h>
void main()
{
int i=11,j;
j=i%3;
switch(j)
{case 1:
case 2:printf("%d
",j);break;
default:printf("%d
",i);
}
}
1. #include<stdio.h>
int fx(int n)
{
int s;
if(n==0)s=0:
else s=n+fx(n-2);
return s:
}
void main()
}
printf("%d
",fx(8));
}
2. #include<stdio.h>
#include<string.h>
void main()
{
char*pa,a[20]="Beijing2008";
for(pa=a+7;*pa!=" ";pa++)putchar(*pa);
putchar("
"):
}
3. #include<stdio.h>
#define N 6
void main()
int a[N]={2,5,-6,4,-9,10},i;
for(i=0;i<N;i++)
{
if(a[i]<0)continue;
printf("%3d",a[i]);
}
printf("
"):
}
四、4.算法阅读题
0. 输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。
#include<stdio.h>
#define N 100
void main()
{
int i,month;
int birth[13]={0};/*birth[1]~birth[12]分别保存1~12月过生日的学生数*/
for(i=1;i<=N;i++)
{
scanf("%d",______); /*第一空*/
if(month>=1&&month<=12)birth[month]++;
}
for(i=1;______;i++) /*第二空*/
printf("%d month______
",i,birth[i]); /*第三空*/
}
1. 输入n(n≥1),计算1+(1+2)+(1+2+3)+……+(1+2+……+n)的值。
void main()
{
int i,n;
long sum=0;long cal(int);
scanf("%d",&n);
for(i=1;i<=n;i++)sum=sum+cal(______); /*第一空*/
printf("1+(1+2)+…+(1+2+…+n)=%1d
",sum);
}
long cal(______) /*第二空*/
{
static long s=0;
s=s+m:
______;/*第三空*/
}
2. 将文件data1.txt的内容复制到文件data2.txt中。
#include<stdio.h>
void main()
{
char ch;
FILE*f1,*f2;
f1=fopen("data1.txt","______"); /*第一空*/
f2=fopen("data2.txt","w");
do
{
______=fgetc(f1); /*第二空*/
fputc(ch,______); /*第三空*/
}while(!feof(f1));
fclose(f1);fclose(f2);
}
五、5.算法设计题
0. 输入x的值,按下列公式计算并输出y的值(保留两个小数)。
1. 输入10个整数到数组a中并输出,将数组各元素依次向后循环移动一个位置(如下图),输出移动后的数组a。
延伸阅读
- 考前自救指南:希赛自考题库快速提分
- 自考专属刷题工具,刷题即提分!
- 最后9天,自考历年真题应该怎么刷?
- 自考备考一站式服务:希赛自考题库APP
- 0基础逆袭秘籍:希赛全套自考学习包(含智能题库)
- 避开备考误区!用希赛自考APP快速提分!
自考微信公众号
扫码添加
自考备考资料免费领取
去领取
扫描二维码