(24) 下列程序段的输出结果是 。
A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 void fun(int *x, int *y)
{ printf(“%d %d”, *x, *y); *x=3; *y=4;} main()
{ int x=1,y=2; fun(&y,&x);
printf(“%d %d”,x, y); }
(25) 以下程序的输出结果是 。 void swap1(int c[]) { int t;
t=c[0];c[0]=c[1];c[1]=t; }
void swap2(int c0,int c1) { int t;
t=c0;c0=c1;c1=t; }
main( )
{ int a[2]={3,5},b[2]={3,5}; swap1(a); swap2(b[0],b[1]);
printf(\%d %d %d\\n\}
A)5 3 5 3 B) 5 3 3 5 C)3 5 3 5 D)3 5 5 3 (26) 有以下程序 #include
#define F(X,Y) (X)*(Y) main()
{ int a=3, b=4;
printf(\ }
程序运行后的输出结果是 。 A)12 B)15 C)16 D)20 (27) 以下程序的输出结果是 。 int a=2; int f(int *a)
{return (*a)++;} main( ) { int s=0; { int a=5; s+=f(&a); }
s+=f(&a);
printf(\}
35
A)10 B)9 C)7 D)8
(28) 以下程序的输出结果是 。 A)4 B)3 C)2 D)1 void sum(int *a) { a[0]=a[1];} main( )
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=2;i>=0;i--) sum(&aa[i]); printf(\}
(29) 下列程序执行后的输出结果是 。
A) hello B) hel C) hlo D) hlm void func1(int i); void func2(int i);
char st[]=\ void func1(int i) { printf(\ if(i<3){i+=2;func2(i);} }
void func2(int i) { printf(\ if(i<3){i+=2;func1(i);} }
main()
{ int i=0; func1(i); printf(\(30) )有以下程序 int *f(int *x,int *y) { if(*x<*y) return x; else return y; }
main()
{ int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=f(p,q);
printf(\}
执行后输出结果是 。 A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8
(31) 假定下列程序的可执行文件名为prg.exe,则在该程序所在的子目录下输入命令行: prg hello good<回车>后,程序的输出结果是 。
A) hello good B) hg C) hel D) hellogood main()(int argc, char *argv[]) { int i;
if(argc<=0) return;
36
for(i=1;i
(32) 下列程序执行后的输出结果是 。 #include
struct NODE *next; }; main( )
{ struct NODE *p,*q,*r; int sum=0;
p=(struct NODE *)malloc(sizeof(struct NODE)); q=(struct NODE *)malloc(sizeof(struct NODE)); r=(struct NODE *)malloc(sizeof(struct NODE)); p->num=1;q->num=2;r->num=3; p->next=q;q->next=r;r->next=NULL; sum+=q->next->num;sum+=p->num; printf(\}
A)3 B)4 C)5 D)6
第二卷
说明:(1)第二卷含二大题,均属填空题,每题各有5个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。 (2)每空栏填对得3分,两大题10个空栏,全填对得30分。
试题一
以下程序的功能是将用户输入的十进制整数转换成任意进制的数。
提示:采用相除取余法进行进制之间的转换,转换后的结果存储在一维数组中。其中,函数itc实现将数字转换成字符。 #include
char c;
if(n>=0&&n<=9)
c= ① ; else
c= ② ; return c; }
main() {
int i=0,base,n,j,num[20];
printf(\输入正十进制整数:\
37
scanf(\
printf(\输入要转换的进制:\ scanf(\ do {
i++;
num[i]= ③ ; n= ④ ; }while( ⑤ ); printf(\转换的结果:\ for(j=i;j>=1;j--)
printf(\ printf(\ }
试题二
以下程序的功能是采用冒泡排序方法对一个一维整数数组按增序排序。其中,函数bubble实现排序。 #include
void bubble(int *p,int n) {
int i,j,temp;
for(i=0;i for(j=0; ⑥ ;j++) if(*(p+j)>*(p+j+1)) { ⑦ ; ⑧ ; ⑨ ; } } main() { int a[]={0,3,9,2,5,4,8,7,6,1},n=10,i; printf(\排序前:\ for(i=0;i printf(\ printf(\ ⑩ ; printf(\排序后:\ for(i=0;i printf(\ printf(\} 38 全国高校联合计算机等级考试广西考区 非计算机专业学生计算机水平考试(二级C语言)样题6 (本试卷包括第一卷和第二卷,答卷时间总共120分钟) 第一卷 说明:(1)第一卷全部为选择题,每题可供选择的答案中,只有一个正确答案。 (2)答本卷的题目时,要在标准答题纸上编号对应的栏中,用铅笔将正确答案涂黑。在试题上直接勾画者不得分。 (3)本卷共70分,其中第1~26项每项2分,第27~32项每项3分。 第一部分:基础知识(20项,共40分) 1、一个C语言程序是由 组成的。 A、主程序 B、子程序 C、函数 D、过程 2、转换说明符%x的输出形式是 。 A、十进制数 B、八进制数 C、十六进制数 D、二进制数 3、若a、b均为int型变量,且a=100,则关于循环语句for(b=100; a! =b; ++a,++b)printf(\的正确说法是 。 A、循环体只执行一次 B、死循环 C、循环体一次也不执行 D、输出— — — — — — 4、若x、y、z均为int型变量,则执行下列语句后的z值为 。 x=1;y=2;x=3;z=(x>y)? z:y;z=(z A、1 B、4 C、2 D、3 5、下面的标识符中,合法的用户标识符为 。 A、P#Ad B、12a C、char D、_int 6、’A’+3的结果是 。 A、’A’ B、’D’的ASCⅡ码 C、65 D、3 7、语句char str[20];说明str是一个字符串最多能表示 。 A、20个字符 B、19个字符 C、18个字符 D、21个字符 8、将int型变量n转换成float型变量的方法是 。 A、float B、(float)n C、float(n) D、21个字符 9、以下不正确的描述是 。 A、使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成 B、while循环是先判断表达式,后执行判断表达式 C、do-while和for循环均是先执行循环体语句,后判断表达式 D、for、while、和do-while循环中的循环体均可以由空语句构成 10、在循环语句中使用break语句的功能是 。 A、使程序的执行跳出break所在的那一重循环 B、使程序结束 C、跳出包含此break语句的所有循环 D、终止本次循环,继续下次循环 11、下面是一个初始化指针的语句:int *px=&a;其中指针变量的名字应该是 。 A、*pz B、a C、px D、&a 12、若指针px为空指针,则 。 39