高级语言程序设计(一)00342,历年真题,试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国2001年10月自考高级语言程序设计(一)试题
课程代码:00342
第一部分选择题
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要
求的,请将正确选项前的字母填在题后的括号内。
1.C语言程序编译时,程序中的注释部分
A.参加编译,并会出现在目标程序中
B.参加编译,但不会出现在目标程序中
C.不参加编译,但会出现在目标程序中
D.不参加编译,也不会出现在目标程序中
2.下列表达式的值为0的是()
A.3%5
B.3/5.0
C.3/5
D.3<5
3.正确的C语言用户自定义标识符是()
A.print
B.float
C.when?
D.random%2
4.设int a=3;则表达式a<1&&--a>1的运算结果和a的值分别是()
A.0和2
B.0和3
C.1和2
D.1和3
5.下列叙述中,正确的是()
A.引用带参的宏时,实际参数的类型应与宏定义时的形式参数类型相一致
B.宏名必须用大写字母表示
C.宏替换不占用运行时间,只占编译时间
D.在程序的一行上可以出现多个有效的宏定义
6.下列保留字中用于构成循环结构的是()
A.if
B.while
C.switch
D.default
7.与语句if(a>b)if(c>d)x=1;else x=2;等价的是()
A.if(a>b){if(c>d)x=1;else x=2;}
B.if(a>b){if(c>d)x=1;}else x=2;
C.if((a>b)&&(c>d))x=1;else x=2;
D.if(a<=b)x=2;else if(c>d) x=1;
8.设char x='a';则printf("x=%c,y=%c\n",x,97);的输出是
A.x=a,y=97
B.x=97,y=a
C.x=97,y=97
D.x=a,y=a
9.设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是()
A.2
B.3
C.4
D.无确定值
10.执行下列程序
int a[3][3]={{1},{2},{3}};
int b[3][3]={1,2,3};
main()
{printf("%d\n”,a[1][0]+b[0][0]);}
后输出的结果是
A.0
B.1
C.2
D.3
11.设char str[100];int i=5;则引用数组元素的错误形式是()
A.str[i+10]
B.*(str+i)
C.*(str+i-1)
D.*((str++)+i)
12.设int x[]={1,2,3,4,5,6},*p=x;则值为3的表达式是()
13.在函数内,定义变量时存储类型符可省略的是()
A.auto
B.static
C.extern
D.register
14.执行下列程序()
int a=3,b=4;
void fun(int x1,int x2)
{printf("%d,%d\n",x1+x2,b);}
main()
{int a=5,b=6;fun(a,b);}
后输出的结果是
A.3,4
B.11,1
C.11,4
D.11,6
15.设有定义语句
struct
{int a;float b;} d[3]={{1,4},{2,5},{6,7}};
则printf("%3.1f\n",d[2].a*d[2].b/d[1].b);的输出是()
A.2.5
B.2.0
C.8.0
D.8.4
16.设有定义语句:enum t1 {a1,a2=7,a3,a4=15}time; ( )
则枚举常量a2和a3的值分别为
A.1和2
B.2和3
C.7和2
D.7和8
17.将一个整数10002存到磁盘上,以ASCII码形式存储和以二进制形式存储,占用的字节数分别是()
A.2和2
B.2和5
C.5和2
D.5和5
18.在文件使用方式中,字符串"rb"表示()
A.打开一个已存在的二进制文件,只能读取数据
B.打开一个文本文件,只能写入数据
C.打开一个已存在的文本文件,只能读取数据
D.打开一个二进制文件,只能写入数据
19.执行下列程序()
# define F(y) 15>>y
#define PRINT(a) printf("%d",a)
main()
{
PRINT(F(2));
}
后输出的结果是
A.3
B.3.5
C.14
D.7.5
20.main()函数可以带两个形参,一般分为argc和argv,其中argv可以定义为()
A.int argv
B.char * argv[];
C.char argv[];
D.char **argv[];
第二部分非选择题
二、填空题(本大题共10小题,每小题2分,共20分)
21.初始化值是0.618的双精度变量a的定义形式为____________。
22.表达式!10!=1的值是____________。
23.“20<x≤30”的C语言表达式是____________。
24.表达式a=1,a+=1,a+1,a++的值是____________。
25.设int i = 5;则循环语句while(i>=1)i--;执行后,i的值为____________。
26.被调函数在执行结束时,这个函数中定义的____________类型的变量不被释放。
27.设
{
int no;
char name[12];
float score[3];
}s1,*p=&s1;
用指针法给s1的成员no赋值1234的语句是____________。
28.C语言程序中对文本文件的存取是以____________为单位进行的。
29.设char string[]="This_is_a_book!";则数组的长度应是____________。
30.设int a[2][3]={{2},{3}};则数组元素____________的值为3。
三、程序分析题(本大题共5小题,每小题5分,共25分)阅读下列程序,将输出结果写到各题右侧的空白处
31.int a=200;
main()
{int i;
for(i=1;i<=5;i++)
{a++;
printf("%d,",a);
s();
}
}
s()
{static int a=20;
a++;
printf(%d\n",a);
}
32.# include "stdio.h"
main()
{char c;
c=getchar();
if(c>='a'&&c<='w'||c>='A'&&c<='W')c=c+3;
else if(c>='x'&&c<='z')||c>='X'&&c<='Z')c=c-23;
printf("%\n",c);
}
设从键盘上输入Next ↙
33.# define N 7
main()
{int i,j,temp,a[N]={1,2,3,4,5,6,7};
for(i=0;i<N/2;i++)
{j=N-1-i;
temp=a[i];a[i]=a[j];a[j]=temp;
}
for(i=0;i<N;i++)printf("%5d",a[i]);
}
34.struct porb
{char *name;
int count;
}x[]={"Li ning",19,"Lang ping",21,"Zhu jian hua",20};
{int i;
for(i=0;i<3;i++)
printf("%s:%d\n",x[i].name,x[i].count);
}
35.main()
{union
{short a;char ch;
}M;
M.a=100;M.ch='A';
printf("%d,%d,%c\n",sizeof(M),M.a,M.ch);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)给出下列程序,将横线处缺少的部分补上,使其能正确运
行。
36.以下程序的功能是用选择法对数组a中的整数由小到大进行排序。
void sort (int b[],int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(__;i<n;i++)
if(b[i]___b[j])
{t=b[i];_________;b[j]=t;}
}
main()
{ int a[]={5,8,6,2,7,4,1,3};
int i;
sort(a,8);
for(i=0;i<8;i++)
printf("%5d",a[i]);
printf("\n");
}
37.输入一字符串(换行为结束标志)统计其中数字(0,1,2,…,9不单独统计)、空白和其它字符出现的次数。
# include“stdio.h"
main()
{ char c;
int_____________;
while((c=getchar())!='\n')
{
if(________________)digit++;
else if(c==''||c=='\t')++blank;
else____________;
}
printf("digit=%d,blank=%d,other=%d\n",digit,blank,other);
}
38.先为数组a输满数据,再为x输入一个数据,在数组a中找出第一个与x相等的元素并将其下标输出,若不存在
这样的元素,则输出“Not found!”标志。
main()
{ int i,x,a[10];
scanf("%d",&x);printf("%d",x);
for(i=0;i<10;i++)if(____________)break;
if(i___10) printf(“position:%d\n”,i);
else printf(" Not found! \n",x);
}
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)。
39.求出10至1000之内能同时被2、3、7整除的数,并输出。
40.求1到100之间的奇数之和及偶数之和,并将二者输出。
41.输入一字符串,检查是否回文(回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。
全国2001年10月自考高级语言程序设计(一)答案
课程代码:00342
一、单项选择题(本大题共20小题,每小题1分,共20分)
1.D
2.C
3.A
4.B
5.C
6.B
7.A
8.D
9.B 10.D
11.D 12.B 13.A 14.C 15.D
16.D 17.C 18.A 19.A 20.B
二、填空题(本大题共10小题,每小题2分,共20分)
21.double a=0.618
22.1
23.x>20&&x<=30或者(x>20)&&(x<=30)
24.2
25.0
26.静态存储,或者static
27.p->no=1234;或者(*p).no=1234;
28.字节
29.16
30。
a[1][0]
三、程序分析题(本大题共5小题,每小题5分,共25分)
31.201,21
202,22
203,23
204,24
205,25
32.Q(若结果为Qhaw,只得3分)
33.7 6 5 4 3 2 1
34.Li ning:19
Lang ping:21
Zhu jian hua:20
35.2,65,A
四、程序填充题(本大题共3小题,每小题6分,共18分)
36.(1)j=i+1
(2)>
(3)b[i]=b[j]
37.(1)digit=0,blank=0,other=0
(2)c>='0'&&c<='9'
(3)++other或者other++
38.(1)&a[i]或者a+i
(2)x==a[i]
(3)<
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)
39.main()
{ int i;
for(i=10;i<=1000;i++)
if((i%2==0)&&(i%3==0)&&(i%7==0))
printf("i=%d\n",i);
}
40.main()
{ int a=0,b=0,i;
for(i=2;i<=100;i+=2)
{a+=i;b+=i-1;}
printf("Sum of even number=%d\n",a);
printf("Sum of odd number=%d\n",b);
}
41.# include "string.h"
main ()
{ int i,n;static char str[80];
gets(str);n=strlen(str);
for(i=0;i<n/2;i++)
if(str[i]!=str[n-1-i])
{ printf("No!\n");break;}
if(i==n/2)printf("Yes!\n");
}
浙江省2002年1月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题
1分,共15分)
1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( )
A.连接、编译
B.编译、连接
C.连接、运行
D.运行
2.常数的书写格式决定了常数的类型和值,0x1011是( )
A.8进制整型常量
B.字符常量
C.16进制整型常数
D.2进制整型常数
3.C语句“x*=y+2;”还可以写作( )
A. x=x*y+2;
B. x=2+y*x;
C. x=x*(y+2);
D. x=y+2*x;
4.下列格式符中,可以用于以8进制形式输出整数的是( )
A. %d
B. %8d
C. %o
D. %1d
5.下列各语句中,能够且仅输出整型变量a、b中最大值的是( )
A. if(a>b) printf(″%d\n″,a);printf(″%d\n″,b);
B. printf(″%d\n″,b);if(a>b) printf(″%d\n″,a);
C. if(a>b) printf(″%d\n″,a);else printf(″%d\n″,b);
D. if(a<b) printf(″%d\n″,a);printf(″%d\n″,b);
6.执行语句“for(s=0,i=1;i<=10;i=i+3) s+=i;”后,变量s、i的当前值是( )
A. 22,13
B. 12,10
C. 22,10
D. 12,13
7.下列各语句定义了数组,其中一个不正确的是( )
A. static int a[5],b[2][3];
B. char no[30],rec[30,6];
C. int x[]={2,4,6,8,10};
D. int x[10]={1,2,3,4,5};
8.宏定义“#define p(x,y,z) x=y*z;”的宏替换“p(a,x+5,y-3.1)”应为( )
A. a=x+5*y-3.1
B. a=(x+5)*(y-3.1);
C. a=x+5*y-3.1
D. a=(x+5)*(y-3.1)
9.下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的( )
A. float d,*p=d;
B. float d,*p=&d;
C. float d,p=d;
D. float *p=&d,d;
10.执行语句“for(i=0;i<10;++i,++a)scanf(″%d″,a);”试图为int类型数组a[10]输入数据,是错误的。
错误的原
因是( )
A.指针变量不能做自增运算
B.数组首地址不可改变
C.++i应写作i++
D.++a应写作a++
11.定义函数时,缺省函数的类型声明,则函数类型取缺省类型( )
A. void
B. char
C. float
D. int
12.执行语句“k=5|3;”后,变量k的当前值是( )
A. 1
B. 8
C. 7
D. 2
13.执行语句“k=5∧3;”后,变量k的当前值是( )
A. 15
B. 125
C. 8
D. 6
14.以“只读”方式打开文本文件a:\aa.dat,下列语句中哪一个是正确的( )
A. fp=fopen(″a:\\aa.dat″,″ab″);
B. fp=fopen(″a:\aa.dat″,″a″);
C. fp=fopen(″a:\aa.dat″,″wb″);
D. fp=fopen(″a:\\aa.dat″,″r″);
15.写字符到磁盘文件的fpuc函数,其函数原型(头)正确的是( )
A. FILE* fputc(char)
B. int fputc(FILE *)
C. int fpuc(char,FILE *)
D. int fputc(FILE *,char)
二、填空题(每空1分,共15分)
1.设int a=5,b=2;float c=3
2.8;,表达式b*(int)c%a的值为______。
2.计算a、b中最小值的条件表达式为______。
3.计算x、y之和的立方根,表达式应写作______。
4.判断变量a、b、c的值是否是等差数列中连续的三项,写作C的表达式为______。
5.判断变量a、b的值均不为0的C表达式为______。
6.执行语句“a=5+(c=6);”后,变量a、c的值依次为______。
7.整型变量x的值为23,语句“printf(″%o\\n″,x);”的输出结果为______。
8.执行语句“n=1;if(n=5) n++;"后,变量n值为______。
9.执行语句“s=0;n=5;while(--n) s+=n;”后,变量s、n值依次为______。
10.执行语句“for(s=0,i=1;i<11;i++) {if(i==6)continue;s+=i;}"后,s值为______。
11.若声明“char a[]=″windows″,b[]=″9x″;”,
执行语句“printf(″%s″,strcat(a,b));”的输出结果为______。
12.若声明“char a[15]=″Windows-9x″;”,语句“printf(″%s″,a+8);”的输出结果为______。
13.程序中使用了字符串函数(如strlen),则必须包含的头文件名为______。
14.访问结构体数组元素a[k]的成员b,写作______。
15.a、b都是结构体变量,语句“a=b;”能够执行的条件是______。
三、程序阅读题,读下列程序,在程序旁的划线处写出程序的输出结果。
每行2分,共24分)
1.#include <stdio.h>
void main() 输出结果:______
{ int i; ______
for (i=1;i<5;i++) printf(″%d\t%c\n″,i,'A'+i); ______
} ______
2.#include <stdio.h>
void main()
{ int i,j,a[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++) a[i][j]=1+i-j;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) 输出结果:______
if(a[i][j]>0) printf(″%3d″,a[i][j]); ______
putchar('\n');______
} ______
}
void f(float a,float b,float* c)
{ static float x;float y;
x=(y=a>b?a:b)>x?y:x;
*c=x;
}
void main()
{ float a[5]={2.5,-1.5,7.5,4.5,6.5},x;
for(int i=0;i<4;i++) { 输出结果:______
f(a[i],a[i+1],&x); ______
printf(″%.1f\n″,x); ______
} ______
}
四、根据下列各编程题题意填空(每空2分,共24分)
1.输入2个整数,输出它们的最小公倍数和最大公约数。
#include <stdio.h>
void main()
{ int m,n,gbs,gys; scanf ((1) );
gbs=m;
while((2) ) gbs=gbs+m;
gys=(3) ;
(4) ;
}
2.下列函数sum的返回值为一个整数m的所有因子之和。
(1)
{ int s=1;i;
for((2) ;i<=m/2;i++)
if((3) ) s=s+i;
(4) ;
}
3.下列函数用于将链表中tabdata类型的、成员num值与形参n相等的结点删除。
struct tabdata *de1(tabdata *h,int n)
{ struct tabdata *p1,*p2;
if(h==NULL) {printf(″\nlist null!\n″); (1) ;}
p1=h;
while(n!=p1->num && (2) ){p2=p1;p1=p1->next;}
if((3) ) {
if(p1==h) h=p1->next;else (4) ;
printf(″delete:%1d\n″,n);
}
else
printf(″%1d not been found!\n″,n);
return h;
}
五、编程题(第1小题6分,其他小题各8分,共22分)
1.编程,先输入n,再输入n个实数并分别统计正数的和、负数的和,然后输出统计结果。
2.编程,输入a1、a2、...、a15 后,计算下列表达式的值并输出。
1111111231415
+++
+⋅⋅⋅
++a a a a
3.把文本文件x1.dat 复制到文本文件x2.dat 中,要求仅复制x1.dat 中的非空格字符。
浙江省2002年1月高等教育自学考试
高级语言程序设计(一)试题参考答案
课程代码:00342
一、单项选择题(每小题1分,共15分)
1.B
2.C
3.C
4.C
5.C
6.A
7.B
8.A
9.B 10.B 11.D 12.C 13.D 14.D 15.C 二、填空题(每空1分,共15分)
1. 4
2. a<b? a:b
3. pow(x+y,1.0/3)
4. a -b==b -c
5. a*b!=0 或 a*b
6. 11,6
7. 27\n
8. 6
9. 10 10. 49
11. windows 9x 12. 9x
13. string.h
14. a [k ].b 或 (a+k)->b
15. a 、b 为同类型的结构体变量 三、程序阅读题(每行2分,共24分)
1.1 B
2.1
3. 2.5 2 C 2 1 7.5 3 D 3 2 1 7.5 4 E 4 3 2 1 7.5 四、根据下列各编程题题意填空(每空2分,共24分)
1.(1)″%d%d ″,&m,&n (2)gbs%n!=0 (3)m*n/gbs
(4)printf(″%d %d \n ″,gbs,gys); 2.(1)int sum(int m) (2)i=2
(3)m%i==0
(4)return s
3.(1)return h
(2)p1->next!=NULL
(3)n==p1->num
(4)p2->next=p1->next
五、编程题(第1小题6分,其他小题各8分,共22分)
1.#include <stdio.h>
void main()
{ int i,n;float x,s1=0;s2=0;
scanf(″%d″,&n);
for(i=1;i<=n;i++) {scanf(″%f″,&x);if(x>0) s1++;if(x<0) s2++;}
printf(″%f %f\n″,s1,s2,);
}
2.#include <stdio.h>
void main()
{ float a[15],y; int i;
for(i=0;i<15;i++) scanf(″%f″,a+i);
y=a[14];for(i=13;i>=0;i--) y=1+a[i]/(1+y);
printf(″%f\n″,y);
}
3.#include <stdio.h>
void main()
{ char ch;FILE *fp1,*fp2;
fp1=fopen(″x1.dat″,″r″);fp2=fopen(″x2.dat″,″w″);
while(!feof(fp1)) {
ch=fgetc(fp1);
if(ch!=' ') fputc(ch,fp2);
}
fclose(fp1);fclose(fp2);
}
全国2003年10月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
第一部分选择题(共20分)
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.组成C语言程序的是()
A.过程
B.函数
C.子程序
D.主程序和子程序
2.编译程序的功能是()
A.将汇编语言程序转换为目标程序
B.将汇编语言程序转换为高级语言程序
C.将高级语言程序转换为目标程序
D.将高级语言程序转换为汇编语言程序
3.C语言中定义某个内部变量时,如果省略了存储类型符,则系统将默认该变量是()
A.自动型
B.寄存器型
C.静态型
D.外部参照型
4.不用第三个变量,将变量a和b的值进行互换的操作是()
A.a+=b;b-=a;a-=b;
B.a+=b;b=a-b;a-=b;
C.b-=a;a-=b;a-=b;
D.b-=a;a=b-a;a+=b;
5.自动型变量分配在()
A.内存的数据区中
B.CPU的通用寄存器中
C.内存的程序区中
D.内存的堆栈区中
6.下列程序段运行后,x的值是()
a=1;b=2;x=0;
if(!(--a))x--;
if(!b)x=7;else ++x;
A.0
B.3
C.6
D.7
7.对do-whie语言错误
..的说法是()
A.可构成多重循环结构
B.循环次数不可能为0
C.循环次数可能为0
D.先执行后判断
8.设int x=1,a=9,b=6,c=7,d=8;则执行语句:
if(a>b) if(c>d)x=2;else x=3;
后,x的值是()
A.1
B.2
C.3
D.不确定
9.设char str1[10]=″ABCDE″,str2[10]=″XYZ″;则执行语句:
printf(″%d″,strlen(strcpy(str1,str2)));
后的输出是()
A.3
B.5
C.8
D.9
10.初始化一维数组a正确的语句是()
A.int a[10]=(0,0,0,0,0);
B.int a[10]={ };
C.int a[ ]={10} ;
D.int a[10]={[10*1]};
11.语句int (*p)( );的含义是()
A.p是一个指向函数的指针变量,该函数的返回值是一个整型数据
B.p是指针变量,指向一个整型数据
C.p是一个指向一维数据的指针变量
D.p是指针函数
12.设int a[10],*p=a;
则对数组元素的正确引用是()
A.a[p]
B.p[a]
C.*(p+2)
D.p+2
13.对于程序段float f1(int a)
{int b;……}
main( )
{int m,n;
m=f1(n);……}
char f2(int x,int y)
{int a;……}
变量m,n的作用范围是()
A.整个程序段
B.main函数
C.main函数和f2函数
D.mian函数和f1函数
14.若函数中局部变量的值经函数调用后仍保留,则该局部变量定义为()A.自动变量 B.内部变量
C.外部变量
D.静态变量
15.在下列运算符中,优先级最低的是()
A.!
B.·
C.( )
D.[ ]
16.对于如下定义的枚举型
enum list1
{x1,x2,x3,x4=6,x5,x6};
枚举常数x2和x6的值分别是()
A.1,6
B.1,8
C.2,6
D.2,8
17.对于文件操作方式″rb+″,准确的说法是()
A.可读写文本文件
B.只读二进制文件
C.只读文本文件
D.可读写二进制文件
18.数据-324在二进制文件和文本文件中所占的字节数分别是()
A.2,2
B.2,4
C.4,2
D.4,4
经过表达式(c=a!=b)&&(a= =b)&&(c=b)运算后,a、b和c的值分别是()A.1,2,0 B.1,2,1
C.1,2,2
D.1,2,3
20.下列程序的运行结果是()
#define EVEN(x)x%2= =0?1:0
main( )
{
if(EVEN(9+1)) printf(″is even″);
else printf(″is odd″);
}
A.is even
B.出错
C.无结果
D.is odd
第二部分非选择题(共80分)
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
21.设char a,b;则表达式a/b-′c′的值的类型为。
22.设int k=-1;执行printf(″%u″,k);后输出的值是。
23.设for(k=0;k<0;k++)++k;则该循环共执行次。
24.设int a =1,b=2;经表达式a=a∧b,b=a∧b,a=a∧b运算后a,b的值分别是。
25.表示空类型的保留字是。
26.已知程序段:
char *p=″abcdefgh″;p+=4;
printf(″%c\n″,*p++);
运行结果为。
27.设
struct student
{ int no;char name[12];
char sex;float score[4];
}stu1;
在程序执行时,系统为stu1分配个字节的内存空间。
28.写出“n是小于整数m的偶数”的表达式。
29.字符串″ABCD\t\\\123″的长度是。
30.设union
{ int b;char a[9];float x;}un;
则变量un所占的字节数是。
三、程序分析题(本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处
31.sum(int n)
{
else return n+sum(n-1);
}
main( )
{
printf(″%d\n″,sum(10));
}
32.设从键盘输入282
sub(int n)
{int s=1;
do
{ s*=n%10;n/=10;}
while(n);
return s;
}
main( )
{ int n;
scanf (″%d″,&n);
n=sub(n);
printf(″%d\n″,n);
}
33.#define N 7
#define PRINT for(i=0;i<N;i++)printf(″%5d″,a[i]);printf(″\n″);
main( )
{int i,j,temp,a[N]={1,2,3,4,5,6,7};
PRINT
for(i=0,i<N/2,i++)
{j=N-1-i;temp=a[i];a[i]=a[j];a[j]=temp;}
PRINT
}
34.int x=30;y=50;
sub(x,y)
{ y=x>y?x:y;
return y;
}
main( )
{
{int x=100;
printf(″%d\n″,sub(x,y));
}
printf(″%d,%d\n″,x,y);
}
35.设文件file1.c的内容为COMPUTER
main( )
{ FILE *fp;
char ch;
if((fp=fopen(″file1.c″,″r″))= =NULL)
{ printf(″Cannot open file \n″);
exit(0);
}
while(!feof(fp))
{
ch=fgetc(fp);if(ch>=′A′&&ch<=′Z′)fputc(ch+32,stdout);
}
fclose(fp);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36.将一个十进制整数n转变为二进制数。
main( )
{ int i=0,j,n,num[20];
scanf(″%d″, ); /*第一空*/
while(n!=0)
{ num[i++]= ; /*第二空*/
n= ; /*第三空*/
}
for(j=i-1;j>=0;j--)printf(″%d″,num [j]);
}
37.一个一维数组和一个二维数组同处一个共用型,将数据输入一维数组后,在二维数组中输出。
main( )
{union data
{ int a[10];
int b ;/*第一空*/
};
union data ab;
int i,j;
for(i=0;i<10,i++)
scanf(″%d″, ); /*第二空*/
for(i=0;i<2;i++)
for(j=0;j<5;j++)
printf(″%5d″, );/*第三空*/
}
38.用指针法输出二维数组,每行三个数。
main( )
{int i,j,a[3][3]={1,2,3,4,5,6,7,8,9},(*p)[3];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++) printf(″%5d″, ); /*第二空*/
;/*第三空*/
}
}
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)
39.输出100之内所有个位数字为6且能被3整除的自然数。
(如:36,66,96……)40.键入一串字符(换行符结束),用循环语句将其中的大小写英文字母互换后输出。
41.设int a[3][4];先为数组输满数据,再将该数组周边的元素输出(元素输出次序不限)。
高级语言程序设计(一)答案2003年10月
全国2005年10月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1. 下列不.属于..C 语言保留字的是( ) A. char B. while C. typedef
D. look
2. 下列关于C 语言的叙述错误..的是( ) A. 英文字母大小写不加以区分
B. 不同类型的变量可以出现在同一个表达式中
C. 在赋值表达式中赋值号两边的类型可以不同
D. 某些运算符在不同的场合可以有不同的含义 3. 下列转义字符中错误..
的是( ) A. ′\000′ B. ′\14′ C. ′\x111′ D. ′\2′ 4. 执行语句printf(″%x ″, -1);后输出结果是( ) A. -1 B. -ffff C. 1 D. ffff
5. 设float a=2, b=4, c=3;,以下C 语言表达式与代数式2
1
(a+b)c 计算结果不一致...的是( ) A. (a+b)*c/2 B. (1/2)*(a+b)*c C. (a+b)*c*1/2 D. c/2*(a+b)
6. 设int a=10, b=20, c=30;条件表达式a<b? a=5∶c 的值是( ) A. 5 B. 10 C. 20 D. 30
7. 设int a=9, b=6, c;,执行语句c=a/b+0. 8;后c 的值是( ) A. 1 B. 1. 8 C. 2 D. 2. 3
8. 执行语句for(i=1;i++<4);后i 的值是( ) A. 3 B. 4 C. 5 D. 不确定
9. 在位运算中,操作数左移一位,其结果相当于操作数( ) A. 乘以2 B. 除以2 C. 乘以4 D. 除以4
10. 使用语句scanf(″a=%f, b=%f″, &a, &b);输入变量a、b的值(□代表空格),正确的是
( ) A. 1.25,2.4 B. 1.25□2.4
C. a=1.25, b=2.4
D. a=1.25□b=2.4
11. 下列说法中错误
..的是( )
A. C语言中循环嵌套的层数没有限定
B. C语言中的内部函数只能在本文件中被调用
C. 用typedef语句定义的数据类型名称必须是大写字母
D. C语言中的continue语句,可以通过改变程序的结构而省略
12. 设char s[10], *p=s;, 下列语句中错误
..的是( )
A. p=s+5;
B. s=P+s;
C. s[2]=p[4];
D. *p=s[0];
13. 设enum week {sun, mon, tue, wed, thu, fri, sat}day;,正确的赋值语句是( )
A. sun=0;
B. sun=day;
C. mon=sun+1;
D. day=sun;
14. 若用数组名作为函数调用时的实参,则实际上传递给形参的是( )
A. 数组的第一个元素值
B. 数组元素的个数
C. 数组中全部元素的值
D. 数组首地址
15. 下列错误
..的是( )
A. char s[]=″China″;
B. char s[10]={″China″};
C. char s[10]; s=″China″;
D. char s[10]={′C′, ′h′, ′i′,;′n′, ′a′};
16. 在C语言中,有值函数的数据类型是指( )
A. 函数形式参数的数据类型
B. 函数返回值的数据类型
C. 调用该函数时的实参的数据类型
D. 任意指定的数据类型
17. 设
struct
{ short a;
char b;
float c;
}cs;
则sizeof(cs)的值是( )
A. 4
B. 5
C. 6
D. 7
18. 设
int x[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p=x, k;
且0≤k<10, 则对数组元素x[k]的错误引用是( )
A. p+k
B. *(x+k)
C. x[p-x+k]
D. *(&x[k])
19. 设
#define N 3
#define Y(n) ((N+1)*n)
则表达式2*(N+Y(5+1))的值是( )
A. 42
B. 48
C. 54
D. 出错
20. 关于主函数的形式参数,下列说法正确的是( )
A. 可以有两个
B. 类型可以是实型
C. 不可以由用户自己定义名字
D. 是在程序编译时获得实际值
二、填空题(本大题共10小题,每小题2分,共20分)
21. 可以将被调函数中获得的值返回给主调函数的语句是__________。
22. 设int x=2, y=1;则表达式x+++y的值是__________。
23. 若未指定局部变量的存储类型,则其隐含的存储类型是__________。
24. 在执行循环结构或switch结构时,能够立即退出该结构的语句是__________。
25. 设int a=-3, b=7, c=-1;则执行(a==0)&&(a=a%b<b/c);后变量a的值是__________。
26. 设int a, b, c;则执行a=(b=3, c=5, b=10);后变量a的值是__________。
27. 设int a=100, *pl=&a, **p2=&p1;, 则表达式**p2的值是__________。
28. 静态型外部变量的作用域是__________。
29. 设
int a[2][3]={1, 2, 3, 4, 5, 6};
则数组元素a[1][0]的值是__________。
30. 函数调用时,若形参是一个变量,而对应的实参是一个有确定值的表达式,则函数参数的传递方式是__________传递。
三、程序分析题(本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处。
31. mian( )
{ int i;
for(i=1;i<3;i++)f(i);
}
f(int j)
{ static int a=100;
++k;
printf(″%d\n″, j+a+k);
a-=2;
}
32. #include <stdio. h>
long fun(int n)
{ long s;
if(n<=2)s=2;
else s=n+fun(n-1);
printf(″%d\t″, s);
return s;
}
main( )
{
fun(5);
printf(″\n″);
}
33. struct porb
{ char *name;
int age;
} s[]={″LiHua″, 18, ″WangXin″, 25, ″LiuGuo″, 21};
#define N (sizeof(s)/sizeof (s[0]))
void f (struct porb a[], int n);
main( )
{
f (s, N);
}
void f (struct porb a[], int n)
{
int i;
for (i=0;i<n;i++)
printf (″%s:%d\n″, a[i]. name, a[i]. age);
}
34. void LE(int*a, int b)
{
*a=b;b=x;
}
main( )
{
int x=10, y=25;
LE(&x, y);
printf(″%d\t%d\n″, x, y);
}
35. /*设从键盘输入:420<回车> */
#include <stdio. h>
main( )
{ char c;
while ((c=getchar( ) )!=′\n′)
switch(c-′0′)
{ case 0:
case 1:putchar(c+2);
case 2:putchar(c+3);break;
case 3:putchar(c+4);
default:putchar(c+1);break;
}
printf(″\n″);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36. 一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33), 找出所有的这种数。
main( )
{
int n, a, b, c;/*n、a、b和c分别为三位数自身及其个位、十位和百位*/
for(c=1;c<=9;c++)
for (b=0; b<=9;b++)
for(______;a++) /*第一空*/
{
n=_________; /*第二空*/
}
}
37. 输入一个数字(范围在0~9之间,若不在此范围内显示输入错),输出对应的英文单词(Zero, One, Two, ……,Nine)。
main( )
{
int i;
char *digit[10]={″Zero″, ″One″, ″Two″, ″Three″, ″Four″,
″Five″, ″Six″, ″Seven″, ″Eight″, ″Nine″};
scanf(″%d″, _________); /*第一空*/
printf(″%d→″, i);
if(____________) /*第二空*/
printf(″%s\n″, digit[_________]); /*第三空*/
else printf(″Input error! \n″);
}
38. 将一个文本文件(ma. dat)拷贝到另一个文本文件(niu. dat)中。
#include<stdio. h>
main( )
{
FILE *ma, *niu;
ma=fopen(″ma. dat″, ______); /*第一空*/
miu=fopen(″niu. dat″, ″w″);
while(! feof(ma)) fputc(fgetc(ma), ________); /*第二空*/
fclose(niu);__________; /*第三空*/
}
五、程序设计题(本大题共3小题,第39小题5分,第40、41小题各6分,共17分)
39. 输入某学生的数学(math)、英语(english)和C语言(C)的成绩,输出该学生这三门课的成绩、总成绩(sum)和平均成绩(aver)。
40. 按下列要求分别写出两个函数(不用写主函数)
(1)计算n!
计算公式:n!=1×2×3×……×n
函数首部为log fac(int n)
(2)调用上述函数计算k
m
C cmk
计算公式:
!m C k=
函数首部为long cmk(int m, int k)
41. 在一个二维数组(定义为int a[5][5];)中形成并按下列形式输出矩阵各元素的值。
1 0 0 0 0
2 1 0 0 0
3 2 1 0 0
4 3 2 1 0
5 4 3 2 1
2005年10月自考高级语言程序设计(一)试卷参考答案
一、l.D 2.A 3.C 4.D 5.B 6.A 7.A 8.C 9.A l0.C ll.C l2.B l3.D l4.D l5.C l6.B 17.D l8.A l9.B 20.A
二、21.return或返回语句
22.3
23.auto型或自动型
24.break
25.一3
26.10
27.100
28.本文件
29.4
30.值
三、31.103 102
32.2 5 9 14
33.LiHUfl:18
WangXin:25
LiuGu0:21
34.10 25
25 25
35.5523
37.第一空:&n
第二空;i>=0&&i<=9
第三空:i
40.(1)long fac(int n)
全国2010年10月高级语言程序设计(一)试题
课程代码:00342
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未
选均无分。
1.用户自定义标识符正确的是( )
A.3ab
B.int
C.fa2_a
D.sin(x)
2.关于C语言程序描述正确的是( )
A.函数必须要有return语句
B.主函数必须位于程序的开头
C.程序中每行只能写一条语句
D.一个程序中只能有一个主函数
3.设int i=8,a,b;double x=1.42,y=5.2;,正确的表达式是( )
A.a+=(b=4)*(a=3)
B.a=a*3=2
C.x%(-3)+y* *3
D.y=float(i)
4.设int a[][2]={1,2,3,4,5,6,7};,其中缺省的行长度的最小值是( )
A.2
B.3
C.4
D.5
5.设char c=′A′;int i=1,j;,执行语句j=!c&&i++;后,i和j的值分别是( )
A.0和1
B.1和0
C.1和65
D.2和66
6.设typedef char STRING[255];STRING*s;,则s是( )
A.字符数组
B.字符变量
C.字符指针数组
D.字符指针变量
7.设int x=6;,执行语句X+=X-=X*X;后,x的值是( )
A.-60
B.0
C.6
D.36
8.设int i=3,j=3;,表达式i+++j的值是( )
A.6
B.7
C.8
D.9
9.下列为C语言保留字的是( )
A.real
B.long
C.pointer
D.integer
10.设int a=2,b=6,c=8;,表达式(a,b),(c,10)的值是( )
A.2
B.6
C.8
D.10
11.变量定义并初始化正确的是( )
A.int a=l,*p=a;
B.int a=2,p=*a;
C.int a=3,p=&a;
D.int a=4,*p=&a;
12.使用递归函数计算n!(n=0,1,2,,3,....)的是( )
A. fac(int n)
B. fac(int n)
{int i,f=- 1; {
if(n==0) return 1; if(n==0‖n==1) return 1;
else for(i=1 ;i<=n;i++) f*=i; else return n*fac(n-1);
}
C. fac(int n)
D. fac(int n)
{int i=l,f=l; {int i=1,f=1;
if(n==0) return l; if(n==0) return 1;
else while(i<=n) f*=i++; else do { f*=i;}while (i++<n)
return f; return f;
} }
13.设struct{int age;int num;}stu,*p=&stu;
对结构型变量stu的成员age引用错误
..的是( )
A.stu.age
B.p->age
C.*p.age
D.(*p).age
14.设int a[2]={1,2},*p=a;,则*p是( )
A.元素a[0]的值
B.元素a[0]的地址
C.元素a[1]的值
D.元素a[1]的地址
15.设int a[10];,对数组元素引用正确的是( )
A.a[10]
B.a[′0′]
C.a(6)
D.a[10-10]
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
16.执行语句printf("%d\n",strlen("a\n\x41"));后,输出结果是_______。
17.设int a,b,c;,表达式a=2,b=5,b++,a+b的值是__________。
18.设int a=1,b=2,m=2,n=2;,执行表达式(m=a<b)||++n后,n的值是_______。
19.设int x=4,y=2;,表达式x<y?y:x++的值是_______。
20.执行下列程序段后,输出结果是____________。
int x=3;
do{ptintf("%5d",x-=2);}while(!(--x));
21.执行语句for(i=10;i>0;i--,);后,变量i的值是___________。
22.设int x,y;,循环语句for(x=0,y=0;(y!=10)&&(x<5);x++);执行的次数是______。
23.若函数内定义变量的存储类别是static,该变量被称为___________静态变量。
24.设int x=3;,执行语句printf((x%2)?("**%d\n"):("##%d\n"),x);后,输出结果是__________。
25.设char s[3]="AB",*p=s;,则*(p+2)的值是_______。
三、程序分析题(本大题共4小题,每小题4分,共16分)
阅读下列程序,将输出结果写到各题右侧的空白处。
26.
void main( )
{
int i=0,j =0,k=0;
while (i< 10) i++;
while (j++<l 0);
while (++k<l 0);
printf ("i=%d,j=%d,k=%d\n",i,j,k);
}
27.
fun(int i)
{
a+=2*i;
return a;
}
void main( )
{
int a=10;
printf("%d,%d\n",fun(a),a);
}
28.
void main( )
(
int a=0, b=0, d=0;
char *s="xcbc3abcd";
for(; *s!= ′\0′; s++)
switch(*s)
{
case ′a′: a++; break;
case ′b′: b++; break;
default: d++;
}
printf("a=%d,b=%d,d=%d\n",a,b,d);
}
29.
#define M 2<3 ? 5:6
void main( )
{
int i=3, j, k;
j=i+M;
k=i+(M);
printf ("%d, %d\n", j, k);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。
void main( )
{
int i,j;
int a[3][4],max, min, sum=0;
for(i=0;i<3 ;i++)
for(j =0 ;j <4 ;j ++) scanf("%d",_______); /*第一空*/
max=min=a[0][0];
for(i=0;i<3 ;i++)
for(j =0 ;j <4 ;j ++)
{
if(a[i] [j]>max) max=a[i] [j]; if(a[i] [j]<min) min=a[i][j];
}
printf("max=%d ,min=%d ,sum=%d\n",______);/*第三空*/ }
31.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt 中。
#include"stdio.h" void main( ) {
char_____;/*第一空*/ FILE *fp ;
fp=fopen("vo.txt","w");
for(ch=′a ′;ch<=′z ′;ch++)
if(______________)fputc(ch,fp);/*第二空*/ _________;/*第三空*/ } 32.根据迭代公式)(210
01x a
x x +=
,求a 的平方根(精度要求01x x -<10-6)。
#define EPS 1E-6
#include_____ /*第一空*/ void main( ) {
float a,x0,x1=1.0; scanf("%f",&a); do {
x0=x1;
x1=_______;/*第二空*/
}while(fabs(x1-x0)>=_____);/*第三空*/ printf("sqrt=%.6f \n",x1); }
五、程序设计题(本大题共2小题,每小题8分,共16分)
33.从键盘输入三条边a 、b 和c ,若能构成三角形则输出其面积,否则输出不能构成三 角形的提示信息“No triangle”。
三角形面积计算公式))()((c s b s a s s area ---=其中:s =(a +b +c )/2。
34.(1)编写一个函数change( )实现两个实型变量的值交换;
(2)写出主函数,从键盘上输入两个数,然后调用函数change()交换两个实型数的值并输出。
2010年10月自考高级语言程序设计(一)参考答案
全国2011年10月自学考试高级语言程序设计(一) 试题
课程代码:00342
一、单项选择题(本大题共1 5小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.自定义标识符由字母、数字或下划线组成,且第一个字符必须是( )
A.数字
B.字母或数字
C.数字或下划线
D.字母或下划线
2.运算符优先级符合由高到低排列的一组是( )
A.+、!=、&&、=
B.&&、!=、+、=
C.!=、+、=、&&
D.&&、=、!=、+
3.转义字符中正确的是( )
A.'\'
B. '\xyz'
C.'\\'
D. '\820'
14.下列程序段执行后x、y和z的值分别是( )
int x=10,y=20,z=30;
if(x>y)z=x;x=y;y=z;
A.10,20,30
B.20,30,30
C.20,30,10
D.20,30,20
5.下列程序段执行后的输出结果是( )
int k=-4,a=3,b=2,c=l;
printf("%d/n",k<a?k:c<b?c:a);
A.1
B.2
C.3
D.4
6.关于for(表达式1;表达式2;表达式3),叙述正确的是( )
A.表达式1不可以缺省
B.表达式2不可以缺省
C.表达式3不可以缺省
D.三个表达式都可以缺省
7.设int*p[4];,则标识符p是( )
A.整型数组名
B.指针数组名
C.指针函数名
D.指向整型变量的指针
8.在循环结构中,continue语句的作用是( )
A.继续执行本次循环
B.提前退出多重循环
C.提前结束本次循环
D.提前退出本重循环。