02600C语言程序设计基础自考历年真题试题试卷电子版及复习资料:https://www.ddwk123.cn/archives/69299
2008年1月高等教育自学考试全国统一命题考试
C语言程序设计 试卷
(课程代码 2600)
一、填空题(本大题共10空,每空1分,共10分)
请在每小题的空格中填上正确答案。错填、不填均无分。
- 若使用流程图表示算法,则矩形符号表示__________框。
2.在C语言中构造数据类型包括数组类型、__________类型和共用体类型。
3.设C为char变量,f为float变量,则c+f的运算结果为____________型数据。
4.设x为int变量,执行x=1/3+1/3+1/3;语句后,x的值为___________。
5.以下程序运行后的输出结果是_____________。
main()
{int a[10]={l,2,3,4,5,6,7,8,9,10},*p=&n[3], *q=p+2;
printf(”%d\n”,*p+*q);
}
6.以下程序运行后的输出结果是_________。
main()
{double d=3.2;int x,y;
x=1.2;y=(x+3.8)/5.0;
printf(”%d\n”,d*y);
}
7.设int x=l,y=l;表达式(!x||y–)的值是__________。
8.以下程序段的输出结果是__________。
Char s[]I=”\1238\080abc”;
printf(”%d\n”,strlen(s));
9.以下程序的输出结果是___________。
main()
{int m=0256,n=256;
printf(”%0 %0\n”,m,n);
}
lO.以下程序段的输出结果是——。
union node
{int a;
float b;
Char C[10];};
printf(”%d”,sizeof(union node));
二、单项选择题(本大题共25小题,第11-30小题每题1分,第31-35小题每题2分,共30分)
在每小题列出的四个备选项中只有一个符合题且要求,请将其代码填写在题后的括号内。错选、多选或未选均无分。
11.以下不合法的用户标识符是 【 】
A.j2_KEY B.Double C.4d D._8_
12.以下不合法的数值常量是 【 】
A 011 B.1e1 C.OxabCd D.8.OE0.5
13.表达式3.6-5/2+1.2+5%2的值是 【 】
A.3.3 B.3.8 C.4.3 D.4.8
14.以下能正确定义字符申的语句是 【 】
A.Char str[]={’\064’}; B.Char str=”kx43”;
C.Char str=”; D.Char str[]=”\0”;
15.以下数组定义中错误的是 【 】
A.int x[][3]={0};
B.int x[2][3]={{l,2},{3,4},{5,6}};
C.int x[][3]={{l,2,3},{4,5,6}};
D.int x[2][3]={l,2,3,4,5,6I};
16.若要求从键盘读入含有空格字符的字符串,应使用的函数是 【 】
A.gets() B.getc() C.getchar() D.scanf()
17.以下四个程序中,完全正确的是 【 】
A.#include<stdio.h> B.#include<stdio.h>
main(); main()
{/*programming*/ {/*/programming/*/
printf(”programming!\n”);} printf(”programming!\n”);}
C.#include<stdio.h> D.include<stdio.h>
main() main()
{/*/* programming *f*/*/ {/*programming*/
printf(“programming!\n”);} printf(”programming!w);}
18.若有定义:float x=1.5;int a=l,b=3,C=2;则正确的switch语句是 【 】
- switCh(x) B.switCh((int)x);
{Case1.O:printf(”*\n”); {Case1:printf (”*\n”);
Case 2.O:printf (”**\n”);} Case2:printf (”**\n”);
C.switch(a+b) D.switch(a+b)
{Case1:printf(”*\n”); {Case1:printf(”*\n”);
Case2+1:printf(” **\n”);} Case C: printf (”**\n”);}
19.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是 【 】
A.(!E==O) B.(E>0 || E<O) C.(E==0) D.(E!=0)
20.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是【 】
A.while((ch=getchar())!=’N’)printf(”%c”,Ch);
B.while(ch=getchar()!=’N’) printf (”%c”,Ch);
C.while(ch=getchar()==’N’) printf (”%c”,Ch);
D.while((ch=getchar())==’N’) printf (”%c”,Ch);
21.已定义以下函数
Int fun(int *p)
{return *p;}
则fun函数返回值是 【 】
A.不确定的值 B.一个整数 C.形参P中存放的值 D.形参P的地址值
22.若有说明语句:
Double *p,a;
则能通过scanf语句正确给输入项读人数据的程序段是 【 】
A.*p=&a;scanf(”%if”,p); B.*p=&a;scanf(”%f”,p);
C.p=&a;scanf(”%if”,*p); D.p=&a;scanf(”%if”,p);
23.有以下程序段
struct st
{int x;int *y,*pt;
int a[]={l,2},b[]={3,4};
strct st c[2]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是 【 】
A.*pt→y B.pt→x C.++pt→x D.(pt++)→x
24.有以下程序
main()
{int y=10;
while(y–);printf(”y=%d\n”,y);
}
程序执行后的输出结果是 【 】
A.y=0 B.y=-l C.y=1 D.while构成无限循环
25.有以下程序
main()
{int a=O,b=O,C=0,d=0;
if(a=1)b=l;C=2;
else d=3:
printf(“%d,%d,%d,%d\n”,a,b,C,d);
}
程序执行后的输出结果是 【 】
A.0,O,O,3 B.O,1,2,0 C.1,1,2,0 D.编译有错
26.有以下程序
main()
{int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=O;i<3;i++)
printf(“%d”,t[2-i][i]);
}
程序执行后的输出结果是 【 】
A.753 B.357 C.369 D.751
27.以下叙述中错误的是 【 】
A.C语言源程序经编译后生成后缀为.obj的目标程序
B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
28.以下叙述中错误的是 【 】
A.算法正确的程序最终一定会结束
B.算法正确的程序可以有零个输出
C.算法正确的程序可以有零个输入
D.算法正确的程序对于相同的输A-定有相同的结果
29.以下叙述中错误的是 【 】
A.C程序必须由—个或—个以上的函数组成
B.函数调用可以作为—个独立的语句存在
C.若函数有返回值,必须通过return语句返回
D.函数形参的值也可以传回给对应的实参
30.以下叙述中错误的是 【 】
- 可以通过typedef增加新的类型
B.可以用typedef将已存在的类型用—个新的名字来代表
C.用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名
3l.有以下程序
#include<stdio.h>
main()
{char C1,C2:C3,C4,C5,C6;
scanf(“%C%C%C%C”,&Cl,&C2,&C3,&C4);
C5=getchar();C6=getchar();
Putchar(c1);putchar(c2);
printf(”%C%C\n”,C5,C6);
}
程序运行后,若从键盘输入(从第l列开始)
123<回车>
45678<回车>
则输出结果是 【 】
A.1245 B.1256 C.1267 D.1278
32.有以下程序
main()
{int i,j,x=O;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf(”x=%d\n”,x);
}
程序执行后的输出结果是 【 】
A.x=4 B.x=6 C.x=8 D.x=12
33.有以下程序
Int fun1(double a){return a*=a;}
Int fun2(double x,double y)
{double a=0,b=0;
a=funl(x);b=funl(y);return(int)(a+b);
}
main()
{double w;w=fun2(1.1,2.O);……}
程序执行后变量w中的值是 【 】
A.0.O B.5.0 C.5 n 5.2l
34.有以下程序
fun(Char p[][10])
{int n=O,i;
for(i=O;i<7;i++)
if(p[i][O]==’T’)n++;
return n;
}
main()
{Char str[][10]={”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”,”Sun”};
printf(”%d\n”,fun(str));
}
程序执行后的输出结果是 【 】
A.O B.1 C.2 D.3
35.有以下程序
void swap(Char *x,Char *y)
{Char t;
t=*x;*x=*y;*y=t;
}
main()
{Char *s1=”abc”,*s2=”123”;
swap(sl,s2);
printf(”%s,%s\n”,s1,s2);
}
程序执行后的输出结果是 【 】
A.abe,123 B.123,abc C.321,cba D.1bc,a23
三、认真阅读程序,并写出程序的运行结果(本大题共6题,每小题5分,共30分)
请在每小题的程序之后写出正确的运行结果。错写、不写均无分。
36.有以下程序:
#include<stdio.h>
void f(int a[],int i,int j)
{int t;
if(i<j)
{t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main()
{int t i,aa[5]={l,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++)
printf(”%d,”,aa[i]);
printf(”\n”);
}
程序的输出结果是
37.有以下程序:
#inelude<stdio.h>
struct STU
{ char name[10];
int num;
int Score;};
main()
{struct STU s[5]={{“YangSan”,20041,703},
{“LiSiGuo”,20042,580},
{“WangYin”,20043,680},
{“SunDan”,20044,550},
{“Penghua”,20045,537}},*p[5],*t;
Int i,j;
for(i=0;i<5;i++)p[i]=&s[i];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p[i]→Score>p[j]→score)
{t=p[i];p[i]=p[j];p[j]=t;}
printf(“%d%d\n”,s[1].score,p[1]→Score);
}
执行后输出的结果是
38.有以下程序
int a=2;
int f(int n)
{static int a=3;
Int t=O;
if(n%2)
{static int a=4;t+=a++;}
else
{static int a=5;t+=a++;}
return t+a++:
}
main()
{int s=a,i;
for(i=O;i<3;i++)s+=f(i);
printf(”s=%d\n”,s);
}
执行后输出的结果是
39.有以下程序
main()
{int x[]={l,3,5,7,2,4,6,0},i,j,k;
for(i=O;i<3;i++)
for(j=2;j>=i;j–)
if(x[j+1]>x[j])
{k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<3;i++)
for(j=4;<7-i,:j++)
if(x[j+1]>x[j])
{k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<3;i++)
for(j=4;j<7-I;j++)
if(x[j]>x[j+1])
{k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<8;i++)
printf(”%d”,x[i]);
printf(”\n”);
}
程序运行后的输出结果是
40.有以下程序
#include<stdio.h>
main()
{FILE *fpl;
Fp1=fopen(“fl.txt”,”W”);
Fprintf(fp1,”abc”);
Fclose(fp1);
}
若文本文件fl.txt中原有内容为:good,则运行以上程序后文件fl.txt中的内容为
41.有以下程序
#include<stdio.h>
main()
{int x=l,y=O,a=0,b=0;
switch(x)
{case 1:switch(y)
{case O:a++;break;
{case 1:b++;break
}
{case 2:a++; b++;break;
}
printf(”%d,%d\n”,a.b);
}
程序运行后的输出结果是
四、根据题意,编写程序(本大题共3题,每小题1O分,共30分)
42.编写一函数liststar输出n行由”*”组成的等腰三角形,要求在主函数main中输入n。
例如:若输入4,则输出如下图形:
43.编写一函数ins_sort,函数功能是在一个已排好序的敷组中插入一个数据使之保持有序。要求在主函数main中输入N-1(设N=10)个有序数据(如升序)和一个要新增的数据,并输出处理后的数据。
例如:输入有序数列l 2 3 5 6 7 8 9 10
输入新增数据4
则处理后数据1 2 3 4 5 6 7 8 9 1O
44.编写一函数reverse实现一个字符串按反序存放,要求在主函数main中输入字符串,并输出反序后的字符串。不能使用strlen库函数。
例如:输入string,则输出gnirts。
请先
!