0


南京邮电大学通达学院《高级语言程序设计》测试题库参考答案

南京邮电大学通达学院《高级语言程序设计》测试题库参考答案

(答案详解过程后期不会持续更新…白嫖吧)

注:由于作者解答能力有限,所以答案仅供参考,难免有瑕疵错误之处,还请多多海涵!

题型

选择题(94道)

1、以下关于源程序与目标程序的关系,不正确的是( D )。
A、用机器语言编写的源程序就是目标程序
B、用汇编语言编写的源程序需要经过汇编程序汇编为目标程序
C、用C语言编写的源程序需要经过编译程序编译为目标程序
D、C语言与Pascal等其他高级语言的编译器是完全一样的

2、以下叙述不正确的是_____D_____。
A、一个 C 源程序可由一个或多个函数组成
B、一个 C 源程序必须包含一个 main 函数
C、C 程序的基本组成单位是函数
D、在 C 程序中,自定义函数的定义需要在主函数 main 体内定义

3、”程序存储思想“的提出者是( C )。
A、Dennis M. Ritchie B、Alan Turing
C、John Von Neumann D、Ken Thompson

4、 计算机直接能识别的是( A )的代码。
A、二进制 B、八进制 C、十进制 D、十六进制

5、 计算机存储的都是二进制信息,信息存储的最小单位是( B )。
A、字节(byte) B、二进制位(bit)
C、字(word) D、双字

6、若计算机有 32 根地址总线,则其存储器的最大存储容量可达( C )。
A、32MB B、32GB C、4GB D、8GB

7、下列数据表达的数值与十进制 77 不相等的是( B )。
A、0x4D B、0x4B C、0115 D、1001101

8、以下选项中不属于字符常量的是( B )。
A、’C’ B、”C” C、’\x0C’ D、’\072’

9、在 C 语言中,不同数据类型占用内存的字节长度是( D )。
A、相同的 B、由用户自己定义的 C、任意的 D、与编译环境有关的

10、C 语言中,”\x5d”在内存中占用的字节数是( A )。
A、2 B、5 C、4 D、1

11、C 语言 short 型数据占 2 个字节,则 unsigned short 型数据的取值范围是( B )。
A、2255 B、065535 C、-256255 D、-3276832767

12、下列哪个选项属于 C 语言中的合法字符串常量( B )。
A、how are you B、”china” C、’hello’ D、

    a
   
   
    b
   
   
    c
   
  
  
   abc
  
 
abc

13、以下哪一个可以作为正确的变量名( B )。
A、3*X B、_filename C、for D、 $X

14、有如下输入语句:scanf(“x=%d,y=%d”,&x,&y);为使变量 x 的值为 10,y 的值为 20,
从键盘输入数据的正确形式是( C )。
A、10 20<回车> B、10,20<回车> C、x=10,y=20<回车> D、x=10 y=20<回车>

15、如有下列程序,输入数据:12345 678< CR>后,程序输出的结果是( C )。

#include<stdio.h>intmain(){int x;double y;scanf(“%3d%f”,&x,&y);printf(“%d,%f\n”,x,y);return0;}
   A、12345,678.000000              B、123,45.000000
    C、123,不确定的随机数            D、345,678.000000

16、下列关于外部变量的说法,正确的是( C )。
A、外部变量是在函数外定义的变量,其作用域是整个程序
B、全局外部变量可以用于多个模块,但需用 extern 重新在各模块中再定义一次
C、全局外部变量可以用于多个模块,extern 只是声明而不是重新定义
D、静态外部变量只能作用于本模块,因此它没有什么实用价值

17、下列 4 组数据类型中,C 语言允许的一组是( B )。
A、整型、实型、逻辑型、双精度型
B、整型、实型、字符型、空类型
C、整型、双精度型、集合型、指针类型
D、整型、实型、复数型、结构体类型
18、下列哪一个是合法的实型常量( C)。
A、 8E3.1 B、E5 C、234. D、234

19、设有说明;char z;int w;float y;double x;则表达式 w-x+z-y 值的数据
类型为 __D __。
A、 float B、char C、 int D、 double

20、下列运算符中,优先级最高的是__A__。
A、() B、* C、== D、+=

21、设 a、b、c 都是 int 型变量,且 a=3,b=4,c=5,则下列表达式中值为 0 的是( D )。
A、 ‘a’&&‘b’ B、a<b C、a||b+c&&b-c D、!(a<b&&!c||1)

22、表达式(int)((double)7/2)-7%2 的值是( C )。
A、1 B、1.0 C、2 D、2.0

23、若 d 是 double 型变量,表达式”d=1,d=5,d++”的值是( C )。
A、1.0 B、2.0 C、5.0 D、6.0

24、以下程序的运行结果是__D__。

voidmain(){int k=4,a=3,b=2,c=1;printf(“\n%d\n”,k<a?k:c<b?c:a);}
   A、4       B、3       C、2       D、1

25、表达式 !(m>0&&n>0) 等价于__A__。
A、!(m>0)||!(n>0) B、!m>0||!n>0 C、!m>0&&!n>0 D、!(m>0)&&!(n>0)

26、语句 while(!E);中的表达式 !E 等价于____A_____。
A、E= =0 B、E!=1 C、E!=0 D、E= =1

27、关于 switch 语句,下列说法中不正确的是( A )。
A、case 语句必须以 break 结束 B、default 分支可以没有
C、switch 后面的表达式可以是整型或字符型 D、case 后面的常量值必须唯一

28、若要求在 if 后一对圆括号中表示 a 不等于 0 的关系,则能正确表示这一关系的表达式为
___D ___.
A、 a<>0 B、 !a C、 a=0 D、 a

29、以下程序的输出结果是____D____.

#include<stdio.h>voidmain(){int x=10,y=10;printf("%d %d\n",x--,--y);}
   A、10 10       B、 9 9       C、9 10       D、 10 9

30、设有如下定义:
int x=10,y=3,z;
则语句
printf("%d\n",z=(x%y,x/y));
的输出结果是____D____.
A、 1 B、 0 C、4 D、 3

31、为表示关系 x≥y≥z,应使用 C 语言表达式___A___.
A、 (x>=y)&&(y>=z) B、 (x>=y)AND(y>=z)
C、(x>=y>=z) D、 (x>=y) & (y>=z)

32、C 语言中非空的基本数据类型包括____B____.
A、 整型,实型,逻辑型 B、 整型,实型,字符型
C、 整型,字符型,逻辑型 D、 整型,实型,逻辑型,字符型

33、若 x 和 y 都是 int 型变量,x=100,y=200,且有下面的程序片段: printf("%d",(x,y));
上面程序片段的输出结果是___A___.
A、200 B、100
C、 100 200 D、 输出格式符不够,输出不确定的值

34、阅读下面的程序

#include<stdio.h>voidmain(){char ch;scanf("%3c",&ch);printf("%c",ch);}

如果从键盘上输入
abc<回车>
则程序的运行结果是___A___.
A) a B) b C) c D) 程序语法出错

35、阅读下面的程序

#include<stdio.h>voidmain(){int i,j;
    i=010;
    j=9;printf("%d,%d",i-j,i+j);}

则程序的运行结果是____D____.
A、 1,19 B、 -1,19 C、 1,17 D、 -1,17

36、阅读下面的程序

#include<stdio.h>voidmain(){int i,j,m,n;
    i=8;j=10;
    m=++i;
    n=j++;printf("%d,%d,%d,%d",i,j,m,n);}
   程序的运行结果是____**C**_____.
    A、 8,10,8,10       B、 9,11,8,10
    C、 9,11,9,10       D、 9,10,9,11

37、若已定义 int a,则表达式 a=10,a+10,a++的值是____B____.
A、 20 B、10 C、 21 D、 11
38、阅读下面的程序

#include<stdio.h>voidmain(){int i,j;scanf("%3d%2d",&i,&j);printf("i=%d,j=%d\n",i,j);}

如果从键盘上输入 1234567<回车>,则程序的运行结果是____D____ .
A、 i=123,j=4567 B、 i=1234,j=567
C、 i=1,j=2 D、 i=123,j=45
39、下面程序的输出结果是___D__.

#include<stdio.h>voidmain(){int a=-1, b=4, k;
    k=(++a<=0)&&(b--<=0);printf("%d,%d,%d\n",k,a,b);}
   A、 1,1,2              B、 1,0,3              C、 0,1,2              D、 0,0,3

40、C 语言中规定函数的返回值的类型是由_____D_____。
A、return 语句中的表达式类型所决定的
B、调用该函数时的主调用函数类型所决定的
C、调用该函数时系统临时决定的
D、在定义该函数时函数首部所指定的函数返回类型所决定的

41、对于 C 语言的函数,下列叙述中正确的是____A____。
A、函数的定义不能嵌套,但函数调用可以嵌套
B、函数的定义和调用都不能嵌套
C、函数的定义可以嵌套,但函数调用不能嵌套
D、函数的定义和调用都可以嵌套

42、若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是____C____。
A、函数的实参和其对应的形参共占用同一存储单元
B、形参只是形式上的存在,不占用具体存储单元
C、函数的形参和实参分别占用不同的存储单元
D、同名的实参和形参占用同一存储单元

43、下面关于静态局部变量的描述,不正确的是____B____。
A、静态局部变量只被初始化一次
B、静态局部变量作用域为整个程序
C、静态局部变量生命期为整个程序
D、静态局部变量作用域为当前函数或语句块

44、若主函数有变量定义:int x=1; double y=2.3; 且有合法的函数调用语句 f (y, x); 则下列
关于函数 f 的原型声明中一定错误的是____D____。
A、void f(double, int);
B、int f(int, int);
C、int f(double, double);
D、void f(double, int, int);

45、关于作用域的描述,下列哪一种说法是正确的____A____。
A、形式参数的作用域一定是它所在的整个函数
B、全局变量的作用域一定是整个程序
C、局部变量的作用域一定是整个函数
D、静态局部变量的作用域不仅限于本函数

46、以下一维数组定义语句中,错误的是_____D_____。
A、int a[]={1,2,3,4} ;
B、char a[5];
C、char str[6]= “test”;
D、int n=5,a[n];

47、若有说明:int a[10];则对 a 数组元素的正确引用是____D____。
A、a[10]
B、a[3.5]
C、a(5)
D、a[10-10]

48、以下不能对二维数组 a 进行正确初始化的语句是____C____。
A、int a[2][3]={0};
B、int a[][3]={{1,2}, {0}};
C、int a[2][3]={{1,2}, {3,4}, {5,6}};
D、int a[][3]={1,2,3,4,5,6};

49、以下对二维数组 a 定义正确的是____C____。
A、int a[3][];
B、float a(3,4);
C、double a[1][4];
D、float a(3)(4);

50、如下程序执行后输出为____B____。

#include<stdio.h>intmain(){staticint a[3][3];int i, j;for(i=0;i<3;i++)for(j=0;j<3;j++)
    a[i][j]=a[j][i]+i*j;printf("%d, %d", a[1][2], a[2][1]);return0;}
   A、2,2       B、2,4       C、4,2       D、不确定, 不确定

51、以下程序给数组所有元素输入数据,填入____A_____能完成该功能。

#include<stdio.h>int main (){int array [5], i=0;while(i<5)scanf("%d", __________ );return0;}
   A、&array[i++]              B、&array[i+1]              C、array+i              D、&array[++i]

52、若有函数原型:double f(int, double);,主函数中有变量定义:int x=1; double m=11.6,n;下
列主函数中对 f 函数的调用错误的是( D )。
A、n=f(x, m+2); B、printf(“%lf”,f(x+2, 23.4));
C、f(x,m); D、m=f(x);

53、表达式__C__的值不是 1。
A、4<0?0:1 B、5>=1
C、!EOF D、!NULL

54、有如下函数调用语句 func(rec1,rec2+rec3,(rec4, rec5));该函数调用语句中,含有的实参
个数是( A )。
A、3 B、4 C、 5 D、有语法错误

55、以下有关函数的形参和实参的说法中正确的是_____C_____。
A、实参和与其对应的形参各占用一个字节存储单元
B、只有当实参和与其对应的形参同名时才占用一个存储单元
C、形参是虚拟的,不占用存储单元
D、实参和与其对应的形参各占用独立的存储单元

56、能正确表示“当 x 取值在[5,99]和[130,180]范围内为真,否则为假”的表达式是__B__。
A、(x>=5)&&(x<=99)&&(x>=130)&&(x<=180)
B、(x>=5)&&(x<=99)||(x>=130)&&(x<=180)
C、(x>=5)||(x<=99)||(x>=130)||(x<=180)
D、(x>=5)&&(x<=99)||(x>=130)||(x<=180)

57、以下错误的定义语句是( D )。
A、int x[][3]={{0},{1},{1,2,3}}; B、int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C、int x[][3]={1,2,3,4}; D、int x[4][]= {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

58、设有语句 int a[2][3],下面哪一种不能表示元素 a[i][j]( C )。
A、*(a[i]+j) B、*((a+i)+j) C、(a+i3+j) D、(a+i3+j)

59、假设已定义 char a[10], p; 下面的赋值语句中,正确的是( A )。
A、p=a; B、a=”abcdef”; C、
p=”abcdef”; D、p=*a

60、下面判断正确的是___C___。
A、char *a=“programming”;等价于 char *a;*a=“programming”;
B、char str[10]={“programming”};等价于 char str[10]; str[]={“programming”};
C、char *s=“programming”;等价于 char *s; s=“programming”;
D、char *s=“programming”;等价于 char s[10];*s=“programming”;

61、判断字符串 str1 是否大于字符串 str2,应当使用____D____。
A、if(str1>str2) B、if(str1>=str2)
C、if(strcpy(str2,str1)>0) D、if(stcmp(str1,str2)>0)

62、设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量,则以下不能正确执行赋值
语句的是___A___。
A、c=*p1+*p2 B、p2=c-5
C、p1=p2 D、c=p1(*p2)

63、设变量定义为 int x, p=&x, 则&p 相当于( A
A.、&x B.、
p C.、x D.、
&x

64、若有语句 int point, i=4; 和 point=&i,下面均代表地址的是( D
A、 i, point,
&i B、&*i,&i,point
C.、
&point,*point,&i D、 &i ,&*point,point

65、已知 a 是 int 型变量,则( D )是对指针变量的正确定义和初始化。
A、int *p=a B.、int *p=*a C、 int *p=&a D.、int p=&a

66、执行下面的程序段后,变量 ab 的值是( A

int*var,ab=100;
var=&ab;*var+=10; var+=10;
   A、110              B.、100              C.、0              D.、120

67、设有定义和赋值:int a[10]={0,1,2,3,4,5,6,7,8,9}, p; p=a+1; 则能表示数组 a 中值为 5 的元素的表示式为( B
A、a[4] B.、
(p+4) C.、a+5 D.、*p[5]

68、 int a[5][4], 对于第 i 行 j 列元素值引用正确的是( A
A、*(*(a+i)+j) B、 (a+i)[j] C、 (a+i+j) D、(a+i)+j

69、int a[5][4], 对于第 i 行 j 列元素值引用正确的是( A
A、*((a+i)+j) B、(a+i)[j] C、(a+i+j) D、\ *(a+i)+j

70、若有定义 int (*p)[4], 则标识符 p 表示( C
A.、是一个指向整型变量的指针 B、 是一个指针数组名
C.、是一个行指针,指向一个含有 4 个整型元素的一维数组 D.、定义不合法

71、下列程序段的输出结果为( D

voidfun(int*x,int*y){printf("%d %d",*x,*y);*x=3;*y=4;}voidmain(){int x=1,=2;fun(&y,&x);printf("%d %d",x,y);}
   A.、2 1 1 2              B.、1 2 1 2              C.、1 2 3 4              D、 2 1 4 3

72、若有定义和语句:char s[10]; s=“abcd”; printf("%s\n",s); 则结果是___D___:
A.、输出 abcd B、 输出 a C、输出 abcd (有空格) D.、编译不通过

73、当用户输入的字符串中含有空格时,应使用( B )函数读入字符串。
A.、scanf B.、gets C.、getchar D.、getc

74、将两个字符串 s1 和 s2 连接起来,正确的函数是( B
A.、strcpy(s1,s2) B.、strcat(s1,s2) C.、strcmp(s1,s2) D.、strlen(s1,s2)

75、设有如下程序段:char s[20]=“beijing”,p; p=s; ,则以下叙述正确的是( A
A、可以用
p 表示 s[0] B、s 数组中元素的个数和 p 所指字符串长度相等
C、s 和 p 都是指针变量 D、数组 s 中的内容和指针变量 p 中的内容相等

76、有以下函数

#include<stdio.h>intmain(){char a[20],b[20],c[20];scanf("%s%s",a,b);gets(c);printf("%s%s%s\n",a,b,c);return0;}

程序运行时输入 this is a cat!<回车>,则输出结果是( C
A、thisisacat!; B、this is a C. thisis a cat! D、thisisa cat!

77、以下不能正确对字符串初始化的语句是( C
A、char str[]={“good!”}; B、char *str=“good”;
C、char str[5]=“good!”; D、char str[6]={‘g’,‘o’,‘o’,‘d’,’!’,’\0’};

78、以下叙述正确的是( C
A、C 语言允许 main 函数带参数,且参数的个数和形参名均可由用户任意指定
B、C 语言允许 main 函数带参数,形参名只能是 argc 和 argv
C、当 main 函数带有形参时,传给形参的值一般从命令行得到
D、若有说明:int main(int argc, char *argv), 则形参 argc 的值必须大于 1

79、对于一个联合类型的变量,系统分配的存储空间是( C )。
A、第一个成员所需的存储空间 B、最后一个成员所需的存储空间
C、占用空间最大的成员所需的存储空间 D、所有成员存储空间的总和

80、以下有关宏替换的叙述不正确的是___D___。
A、宏替换不占用运行时间 B、宏名无类型
C、宏替换只是字符替换 D、宏名不能用小写字母表示

81、函数 f 定义如下,执行语句“sum=f(5)+f(3);”后,sum 的值应为___C___。

intf(int m){staticint i=0;int s=0;for(;i<=m;i++) s+=i;return s;}
   A、 21              B、 16              C、 15              D、 8

82、声明语句为“int a[3][4];”,下列表达式中与数组元素 a[2][1]等价的是___A___。
A、*(a[2]+1) B、a[9]
C、*(a[1]+2) D、*(*(a+2))+1

83、宏定义#define G 9.8 中的宏名 G 表示___C___。
A、一个单精度实数 B、一个双精度实数
C、一个字符串 D、不确定类型的数

84、在定义一个结构体变量时,系统分配给它的内存是___C___.
A、结构体中第一个成员所需内存量
B、结构体中最后一个成员所需内存量
C、成员中占内存量最大者所需内存量
D、各成员所需内存量的总和

85、根据下面的定义,能打印出字母“M”的语句是___D___。

struct person
{char name[9];
    int age;
};
struct person class[10]={{"John",17},
{"Paul",19},{"Mary",18},{"Adam",16}};
   A、printf("%c\n",class[3].name );
    B、printf("%c\n",class[3].name[l]);
    C、Printf("%c\n",class[2].name[l]);
    D、printf("%c\n",class[2].name[0]);

86、设有以下结构体定义:

struct emproyer
{char name[8];
    int age;
    char sex;
}staff;

则下面的叙述不正确的是___C___。
A、struct 是结构体类型的关键字
B、struct emproyer 是用户定义的结构体类型
C、staff 是用户定义的结构体类型名
D、nameage 和 sex 都是结构体成员名

87、下面程序的输出结果是____B____。

#include<stdio.h>#define P 2#define POWER(x) P*x*xvoidmain(){int x=1,y=2;
    printf("%d,%d",POWER(x+y),
    POWER(y+x));
}
   A、18,18                 B、6,7
    C、6,6                     D、7,7

88、若有以下定义和语句:

struct student
{int num ;int age;
};
struct student stu[3]={{l001,20},{1002,19},{1003,2l}};
voidmain(){struct student *p;p=stu;
...}

则下列引用中不正确的是___D____。
A、 (p++)→num B、 p++
C、 (*p).num D、 p=&stu.age

89、下面程序的输出结果是____A___。

#include<stdio.h>#define P 2#define POWER(x) P*(x)*(x)voidmain(){int x=l,y=2;
    printf("%d,%d",POWER(x+y),
    POWER(y+x));
}
   A、18,18                  B、6,7
    C、6,6                     D、7,7

90、下面程序的输出结果是____D____。

#include<stdio.h>#define SUB(X,Y) (X)*Yvoidmain(){int a=3,b=4;
    printf("%d\n",SUB(a+b,b++));
}
   A、12              B、15              C、16              D、28

91、下面程序的输出结果是___B___。

#include<stdio.h>#define FUN(x,y) x*yvoidmain(){int a=1,b=2;
    printf("%d",FUN(a+b,a-b));
}
   A、 -3              B、1              C、 -1              D、0

92、下面程序的输出结果是____B____。

#define MIN(x,y) (x)<(y)?(x):(y)main(){int a=1,b=2,c;
    c=10*MIN(a,b);
    printf("%d",c);
}
   A、1              B、10              C、 2              D、20

93、下面程序的输出结果是____C____。

struct st
{int x; int*y;
};
int dt[4]={10,20,30,40};
struct st *p,aa[4]={50,&dt[0],
60,&dt[1],70,&dt[2],
80,&dt[3]};
voidmain(){
    p=aa;
    printf("%d\n",++p→x);printf("%d\n",(++p)→x);
    printf("%d\n",++(*p→y));
}
   A、10              B、50              C、51              D、60
          20                    60                    60                    70
          20                    21                    21                    31

94、以下程序的运行结果为____D____。

#include<stdio.h>voidmain(){struct date
    {int year,month,day;}today;
    printf("%d\n",sizeof(struct date))}
   A、6              B、8              C、10              D、12

填空题(41道)

题目均经过编译器测试,答案均为编译器结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

读程序题(30道)

在这里插入图片描述
在这里插入图片描述

程序填空(17道)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此题s[j]=s[i]处有bug,程序会崩溃,暂时无法解决!
此题s[j]=s[i]处有bug,程序会崩溃有bug,暂时无法解决!
此题s[j]=s[i]处有bug,程序会崩溃有bug,暂时无法解决!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编程题(6道)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标签: visual studio

本文转载自: https://blog.csdn.net/m0_74334663/article/details/128228885
版权归原作者 豆小豆酱 所有, 如有侵权,请联系我们删除。

“南京邮电大学通达学院《高级语言程序设计》测试题库参考答案”的评论:

还没有评论