西安电子科技大学网络与继续教育学院
2023 学年上学期
《高级语言程序设计(C)》期末考试试题
(综合大作业)
一、选择题 (每小题 2 分, 共 40 分)
1、设 x 和 y 均为 int 型变量,则以下语句: x+=y;y=x-y;x-=y;的功能是
A.把 x 和 y 按从大到小排列 B.把 x 和 y 按从小到大排列
C.无确定结果 D.交换 x 和y 中的值
2、下面程序的输出是
void prtv(int *x)
{ printf("%d\n", ++(*x));}
main()
{ int a=25;
prtv(&a);}
A.23 B.24 C.25 D.26
3、int x=10, y=20, z=30; if(x>y) z=x; x=y; y=z; 以上语句执行后 x, y, z 的值是
A.x=10,y=20,z=30 B.x=20,y=30,z=30
C.x=20,y=30,z=10 D.x=20,y=30,z=20
4、设有以下宏定义:
#define N 3
#define Y(n) ((N+1)*n)
则执行语句: z=2 *(N+Y(5+1))后 ,z 的值为
A.出错 B.42 C.48 D.54
5、逻辑运算符两侧运算对象的数据类型是( )。
A.只能是 0 或 1 B.只能是 0 或非 0 正数 C.只能是整型或字符型数据 D.可以是任何类型的数据
6、当执行以下程序段时 x=-1;
do { x=x*x;}
while(!x);
A.循环体将执行一次 B.循环体将执行两次
C.循环体将执行无限次 D.系统将提示有语法错误
7、 int x=3; do
{ printf("%3d",x-=2);}
while(!(--x));
以上程序段的输出结果是
A.1 B.3 0 C.1-2 D.死循环
8、main()
{int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); }
以上程序段的输出结果是
A.k=11,k=12,k=11 B.k=11,k=13,k=13
C.k=11,k=013,k=0xb D.k=11,k=13,k=b
9、以下程序的输出结果是 main()
{ int num=0;
while(num<=2)
{ num++; printf(“%d\n”,num);}
}
A.1↙2↙3↙4↙ B.1↙2↙3↙ C.1↙2↙ D.1↙(注:↙表示回车换行)
10、表示关系 x≤y≤z 的 c 语言表达式为
A.(X<=Y)&&(Y<=Z) B.(X<=Y)AND(Y<=Z)
C.(X<=Y<=Z) D.(X<=Y)&(Y<=Z)
11、执行 x=((5>1+2)&&2 | |((2*4<4)-!0))后, x 的值为
A .-1 B .0 C .1 D . 5
12、有以下程序
main()
{
char a[]="programming", b[]="language";
char *p1,*p2;
int i;
p1=a; p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))
printf("%c",*(p1+i));
}
输出结果是
A.gm B.rg C.or D.ga
13、以下程序的输出结果是 # include <stdio.h> # include <string.h>
main()
{ char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A.6 B.7 C.11 D.12
14、运行以下程序后, 如果从键盘上输入 65 14<回车>,则输出结果为 main ( )
{
int m,n;
printf("Enter m,n:");
scanf("%d%d,&m,&n");
while(m!=n)
{
while(m>n) m-=n;
while(n>m) n-=m;
}
printf("m=%d\n",m);
}
A.m=3 B.m=2 C.m=1 D.m=0
15、char ch=’A’;
ch=(ch>=‘A’&&ch<=‘Z’)?(ch+’a’-‘A’):ch;
表达式运算后, ch 的值是
A .a B . ‘a’ C .A D . “a”
16、设 p1 和 p2 是指向同一个 int 型一维数组的指针变量,k 为 int 型变量,则不能 正确执行的语句是
A.k=*p1+*p2; B.p2=k; C.p1=p2; D.k=*p1*(*p2);
17、若有以下定义和语句: int u=010,v=0x10,w=10; printf(“%d,%d,%d\n”,u,v,w); 则输出结果是
A.8,16,10 B.10,10,10 C.8,8,10 D.8,10,10
18、能正确表示 a≥10 或 a≤0 的关系表达式是
A. a>=10 or a<=0 B. a>=10│a<=0 C. a>=10│ │a<=0 D. a>=10
│ │a<=0
19、
main( )
{ int x=1,a=0,b=0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
程序的输出结果是
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2
20、以下说法中正确的是
A.#define 和 printf 都是 C 语句 B.#define 是 C 语句, 而 printf 不是
C.printf 是 C 语句,但#define 不是 D.#define 和 printf 都不是 C 语句
二、填空题 (每空 1 分, 共 10 分)
1、为表示关系: x≤y≤z ,应使用的 C 语言表达式是_____________。
2、C 语言本身没有输入输出语句。其输入输出是由____________来完成。
3、有函数调用 fun1(x+y,(y,z),10,fun((x,y―1)));函数 fun1 有___个参数。
4、C 程序注释是由_________和________所界定的文字信息组成的。
5、表达式 x=x+1 表示成增量表达式为___________。
6、while 语句和 do-while 语句的区别是_______________________。
7、结构化程序设计中的三种基本结构是_________、__________、__________。
三、判断题 (每小题 1 分, 共 10 分)
1、在不得已的情况下(例如提高程序运行效率),才使用 goto 语句。( )
2、C 程序的注释只能是一行。( )
3、在有参函数中,形参在整个程序一开始执行时便分配内存单元。( )
4、C 语言不允许混合类型数据间进行运算。( )
5、实参和与其对应的形参共占用一个存储单元。( )
6、在 C 程序中对用到的所有数据都必须指定其数据类型。( )
7、函数的定义和函数的调用均不可以嵌套。( )
8、如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数 原型声明。( )
9、在不同函数中可以使用相同名字的变量。( )
10、if 语句中的表达式不限于逻辑表达式,可以是任意的数值类型。( )
四、程序分析题(用列表法列出关键变量在运行过程中的值) (20 分)
1、(每空 2 分,共 8 分)分析程序,给出 select 函数的功能,解释其形参的含义,
并给出 main 函数的输出结果。
#define N 3
#define M 3
select(int a[N][M],int *n)
{
int i,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n= row;
return ( a[row][colum]);
}
main()
{ int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}
形参 含义 功能
select a[N][M]
n
main 输出:
2、(每空 1 分,共 6 分)列表分析下面程序的运行步骤和中间结果,给出最后的输出结 果
#include <stdio.h>
main()
{ int i=5;
char c[6]="abcd";
do
{
c[i]=c[i―1];
} while ( ――i>0);
puts (c);
}
i 5 4 3 2 1 0
c[i]=c[i-1]赋 值前 C[i] 0 0 a
C[i-1] 0 d /
输出 aabcd
3、(每空 1 分, 共 6 分)列表分析下面程序的功能
main( )
{ int i,j;
for(i=1;i<=4;i++)
{ for(j=1;j<=4-i;j++) printf(" ");
for(j=1;j<=2*i-1;j++) printf("*");
printf("\n");
}
}
i 1 2 3 4
① for j 4 3 2 1
printf □□□ □□ □ /
② for j 2
printf *
注: □表示空格
五、编程题(每小题 10,共 20 分) 编程题要求:
(1)先给出伪代码,然后再写出源码,重要变量和语句要加注释;
(2)若有子函数,则要给出函数框架设计(函数名、形参、返回类型)。
1、编写一程序, 求 100 之内的素数。
2、我们需要一个小程序,输入两个整数,输出这两个数的平方和与平方差,要求:
(1)主函数负责接收这两个整数;
(2)将计算代码独立做成子函数math;
(3)在主函数中调用math 函数并输出结果到屏幕上。
2023 学年上学期
《高级语言程序设计(C)》期末考试试题
(综合大作业)
一、选择题 (每小题 2 分, 共 40 分)
1、设 x 和 y 均为 int 型变量,则以下语句: x+=y;y=x-y;x-=y;的功能是
A.把 x 和 y 按从大到小排列 B.把 x 和 y 按从小到大排列
C.无确定结果 D.交换 x 和y 中的值
2、下面程序的输出是
void prtv(int *x)
{ printf("%d\n", ++(*x));}
main()
{ int a=25;
prtv(&a);}
A.23 B.24 C.25 D.26
3、int x=10, y=20, z=30; if(x>y) z=x; x=y; y=z; 以上语句执行后 x, y, z 的值是
A.x=10,y=20,z=30 B.x=20,y=30,z=30
C.x=20,y=30,z=10 D.x=20,y=30,z=20
4、设有以下宏定义:
#define N 3
#define Y(n) ((N+1)*n)
则执行语句: z=2 *(N+Y(5+1))后 ,z 的值为
A.出错 B.42 C.48 D.54
5、逻辑运算符两侧运算对象的数据类型是( )。
A.只能是 0 或 1 B.只能是 0 或非 0 正数 C.只能是整型或字符型数据 D.可以是任何类型的数据
6、当执行以下程序段时 x=-1;
do { x=x*x;}
while(!x);
A.循环体将执行一次 B.循环体将执行两次
C.循环体将执行无限次 D.系统将提示有语法错误
7、 int x=3; do
{ printf("%3d",x-=2);}
while(!(--x));
以上程序段的输出结果是
A.1 B.3 0 C.1-2 D.死循环
8、main()
{int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); }
以上程序段的输出结果是
A.k=11,k=12,k=11 B.k=11,k=13,k=13
C.k=11,k=013,k=0xb D.k=11,k=13,k=b
9、以下程序的输出结果是 main()
{ int num=0;
while(num<=2)
{ num++; printf(“%d\n”,num);}
}
A.1↙2↙3↙4↙ B.1↙2↙3↙ C.1↙2↙ D.1↙(注:↙表示回车换行)
10、表示关系 x≤y≤z 的 c 语言表达式为
A.(X<=Y)&&(Y<=Z) B.(X<=Y)AND(Y<=Z)
C.(X<=Y<=Z) D.(X<=Y)&(Y<=Z)
11、执行 x=((5>1+2)&&2 | |((2*4<4)-!0))后, x 的值为
A .-1 B .0 C .1 D . 5
12、有以下程序
main()
{
char a[]="programming", b[]="language";
char *p1,*p2;
int i;
p1=a; p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))
printf("%c",*(p1+i));
}
输出结果是
A.gm B.rg C.or D.ga
13、以下程序的输出结果是 # include <stdio.h> # include <string.h>
main()
{ char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A.6 B.7 C.11 D.12
14、运行以下程序后, 如果从键盘上输入 65 14<回车>,则输出结果为 main ( )
{
int m,n;
printf("Enter m,n:");
scanf("%d%d,&m,&n");
while(m!=n)
{
while(m>n) m-=n;
while(n>m) n-=m;
}
printf("m=%d\n",m);
}
A.m=3 B.m=2 C.m=1 D.m=0
15、char ch=’A’;
ch=(ch>=‘A’&&ch<=‘Z’)?(ch+’a’-‘A’):ch;
表达式运算后, ch 的值是
A .a B . ‘a’ C .A D . “a”
16、设 p1 和 p2 是指向同一个 int 型一维数组的指针变量,k 为 int 型变量,则不能 正确执行的语句是
A.k=*p1+*p2; B.p2=k; C.p1=p2; D.k=*p1*(*p2);
17、若有以下定义和语句: int u=010,v=0x10,w=10; printf(“%d,%d,%d\n”,u,v,w); 则输出结果是
A.8,16,10 B.10,10,10 C.8,8,10 D.8,10,10
18、能正确表示 a≥10 或 a≤0 的关系表达式是
A. a>=10 or a<=0 B. a>=10│a<=0 C. a>=10│ │a<=0 D. a>=10
│ │a<=0
19、
main( )
{ int x=1,a=0,b=0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
程序的输出结果是
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2
20、以下说法中正确的是
A.#define 和 printf 都是 C 语句 B.#define 是 C 语句, 而 printf 不是
C.printf 是 C 语句,但#define 不是 D.#define 和 printf 都不是 C 语句
二、填空题 (每空 1 分, 共 10 分)
1、为表示关系: x≤y≤z ,应使用的 C 语言表达式是_____________。
2、C 语言本身没有输入输出语句。其输入输出是由____________来完成。
3、有函数调用 fun1(x+y,(y,z),10,fun((x,y―1)));函数 fun1 有___个参数。
4、C 程序注释是由_________和________所界定的文字信息组成的。
5、表达式 x=x+1 表示成增量表达式为___________。
6、while 语句和 do-while 语句的区别是_______________________。
7、结构化程序设计中的三种基本结构是_________、__________、__________。
三、判断题 (每小题 1 分, 共 10 分)
1、在不得已的情况下(例如提高程序运行效率),才使用 goto 语句。( )
2、C 程序的注释只能是一行。( )
3、在有参函数中,形参在整个程序一开始执行时便分配内存单元。( )
4、C 语言不允许混合类型数据间进行运算。( )
5、实参和与其对应的形参共占用一个存储单元。( )
6、在 C 程序中对用到的所有数据都必须指定其数据类型。( )
7、函数的定义和函数的调用均不可以嵌套。( )
8、如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数 原型声明。( )
9、在不同函数中可以使用相同名字的变量。( )
10、if 语句中的表达式不限于逻辑表达式,可以是任意的数值类型。( )
四、程序分析题(用列表法列出关键变量在运行过程中的值) (20 分)
1、(每空 2 分,共 8 分)分析程序,给出 select 函数的功能,解释其形参的含义,
并给出 main 函数的输出结果。
#define N 3
#define M 3
select(int a[N][M],int *n)
{
int i,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n= row;
return ( a[row][colum]);
}
main()
{ int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}
形参 含义 功能
select a[N][M]
n
main 输出:
2、(每空 1 分,共 6 分)列表分析下面程序的运行步骤和中间结果,给出最后的输出结 果
#include <stdio.h>
main()
{ int i=5;
char c[6]="abcd";
do
{
c[i]=c[i―1];
} while ( ――i>0);
puts (c);
}
i 5 4 3 2 1 0
c[i]=c[i-1]赋 值前 C[i] 0 0 a
C[i-1] 0 d /
输出 aabcd
3、(每空 1 分, 共 6 分)列表分析下面程序的功能
main( )
{ int i,j;
for(i=1;i<=4;i++)
{ for(j=1;j<=4-i;j++) printf(" ");
for(j=1;j<=2*i-1;j++) printf("*");
printf("\n");
}
}
i 1 2 3 4
① for j 4 3 2 1
printf □□□ □□ □ /
② for j 2
printf *
注: □表示空格
五、编程题(每小题 10,共 20 分) 编程题要求:
(1)先给出伪代码,然后再写出源码,重要变量和语句要加注释;
(2)若有子函数,则要给出函数框架设计(函数名、形参、返回类型)。
1、编写一程序, 求 100 之内的素数。
2、我们需要一个小程序,输入两个整数,输出这两个数的平方和与平方差,要求:
(1)主函数负责接收这两个整数;
(2)将计算代码独立做成子函数math;
(3)在主函数中调用math 函数并输出结果到屏幕上。