第2讲 数据已完成
1
【单选题】
以下各项中,不能作为合法常量的是( )。
A、
1.234e04
B、
1.234e0.4
C、
1.234e+4
D、
1.234e0
我的答案:B
2
【单选题】
以下各项中,符合C语言语法规定的实型常量是( )。
A、
1.2E0.5
B、
3.14.159E
C、
.5E-3
D、
E15
我的答案:C
3
【单选题】
以下各个项中,可作为C语言中合法整数的是( )。
A、
10110B
B、
0386
C、
0Xffa
D、
x2a2
我的答案:C
4
【单选题】
在VC中,若定义double b;,则变量b在内存中分配的字节数是( )
A、
1
B、
2
C、
4
D、
8
我的答案:D
5
【单选题】
下列定义变量的语句中错误的是( )
A、int _int;
B、double int_;
C、char For;
D、float US$;
我的答案:D
6
【单选题】
C语言中,最基本的数据类型是( )
A、
整型,实型,逻辑型
B、
整型,实型,字符型
C、
整型,字符型,逻辑型
D、
整型,实型,字符型,逻辑型
我的答案:B
第4讲测验已完成
1
【单选题】
若a是基本整型变量,c是单精度实型变量,输入语句____是错误的。
A、scanf("%d,%f”, &a, &c);
B、scanf("d=%d, c=%f”, &a, &c);
C、scanf("%d%f”, &a, &c);
D、
scanf("%d%f”, a, c);
我的答案:D
2
【单选题】
程序员要想调用输入输出函数,需要在程序的开头写上语句( )。
A、#include <stdlib.h>
B、#include <stdio.h>
C、#include <math.h>
D、#include <string.h>
我的答案:D
3
【单选题】
已定义 int a = -2;和输出语句printf("%8lx",a);以下正确的叙述是
A、整型变量的输出只有%d一种
B、%x是格式符的一种,它可以适用于任何一种类型的数据
C、%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D、
%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
我的答案:D
4
【单选题】
若a是基本整型变量,c是单精度实型变量,输入语句____是错误的。
A、
scanf("%d,%f”, &a, &c);
B、
scanf("d=%d, c=%f”, &a, &c);
C、
scanf("%d%f”, &a, &c);
D、
scanf("%d%f”, a, c);
我的答案:D
5
【单选题】
设有定义:int a; float b; ,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876 <空格>543.0<回车>,则a和b的值分别是( )
A、
87 和 6.0
B、
876 和 543.0
C、
87 和 543.0
D、
76 和 543.0
我的答案:A
6
【单选题】
已知字符 'a' 的ASCII码为 97,执行下列语句的输出是____。
printf ("%d, %c", 'b', 'b'+1 ) ;
A、
98, b
B、
语法不合法
C、
98, 99
D、98, c
我的答案:D
7
【单选题】
有以下程序:
main()
{
int m=0256, n=256;
printf("%o %o\n", m, n);
}
运行程序后的输出结果是( )。
A、0256 0400
B、0256 256
C、256 400
D、400 400
我的答案:D
8
【单选题】
有以下程序:
main()
{
int a; char c=10;
float f=100.0; double x;
a=f/=c*=(x=6.5);
printf("%d %d %3.1f %3.1f\n", a, c, f, x);
}
运行程序后的输出结果是( )。
A、
1 65 1 6.5
B、
1 65 1.5 6.5
C、
1 65 1.0 6.5
D、
2 65 1.5 6.5
我的答案:D
第3讲测验已完成
1
【单选题】
假设字符变量ch中存放有小写英文字母,将其转换为相应的大写英文字母的表达式是 ( ) 。
A、
ch = ch-'a'+'A'
B、
ch = ch+32
C、
tolower(ch)
D、
ch -= 'a'+'A'
我的答案:A
2
【单选题】
若x为浮点型,则表达式x=10/4为( )。
A、
2.5
B、
2.0
C、
2
D、
3
我的答案:B
3
【单选题】
若有定义“char a; int b; float c; double d;”,则表达式“a*b+d-c”值的类型为____。
A、float
B、
int
C、
char
D、
double
我的答案:D
4
【单选题】
若" int n; float f=13.8; ",则执行"n=(int)f%3"后,n的值是( )。
A、
1
B、
4
C、
4.33333
D、
4.6
我的答案:A
5
【单选题】
若变量已正确定义,表达式 (j=3, j++) 的值是____。
A、
3
B、
4
C、
5
D、
6
我的答案:A
6
【单选题】
对于数学表达式2x+(a+b)÷3sinx,对应的C表达式是( )
A、2x+(a+b)/3sin(x)
B、2x+(a+b)/(3sin(x))
C、2*x+(a+b)/3/sin(x)
D、2*x+(a+b/3/sin(x))
我的答案:C
7
【单选题】
设有定义“int k = 0;”,下列选项的4个表达式中与其他3个表达式的值不相同的是____。
A、
k++
B、
k+=1
C、++k
D、
k+1
我的答案:A
8
【单选题】
下列关于单目运算符++、--的叙述正确的是____。
A、它们的运算对象可以是任何变量和常量
B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C、它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D、它们的运算对象可以是char型变量、int型变量和float型变量
我的答案:D
9
【单选题】
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )。
A、
6.500000
B、
6
C、
5.500000
D、
6.000000
我的答案:D
10
【单选题】
设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的语句是( )。
A、
x=x*100+0.5/100.0
B、
x=(x*100+0.5)/100.0
C、
x=(int)(x*100+0.5)/100.0
D、
x=(x/100+0.5)*100.0
我的答案:C
11
【填空题】
对程序填空,程序中a、b、c代表一元二次方程的三个系数,要求输出方程的两个根。
main()
{
int a=1, b=3, c=2;
printf("x1=%f \n", 第1空 );
printf("x2=%f\n", 第2空 );
}
我的答案:
第一空:
(-b+sqrt(b*b-4*a*c))/(2*a)
第二空:(-b-sqrt(b*b-4*a*c))/(2*a)
选择-测验已完成
1
【单选题】
以下程序运行时,输入的x值在( )范围时才会有输出结果。
843bed4b-676f-4caa-8123-b4e56d11f3a0.png
A、
不等于10的整数
B、
大于3且不等于10的整数
C、
大于3且等于10的整数
D、
小于3的整数
我的答案:B
2
【单选题】
判断 i 和 j 至少有一个值为非0的表达式是____。
A、
i!=0 && j!=0
B、
i+j!=0
C、
i || j
D、
i&&j
我的答案:C
3
【单选题】
表达式__不能用于判断“x和y不同时为零”。
A、
x!=0 || y!=0
B、
x || y
C、
!(x==0 || y==0)
D、
!(x==0 && y==0)
我的答案:C
4
【单选题】
表达式8>6>3值是( )。
A、
0
B、
1
C、
3
D、
表达式语法错
我的答案:A
5
【单选题】
为表示关系x≥y≥z,应使用C语言表达式( )。
A、
(x>=y)&&(y>=z)
B、
(x>=y)AND(y>=z)
C、
(x>=y>=z)
D、
(x>=y)&(y>=z)
我的答案:D
6
【单选题】
表达式(x%3)等价于表达式( )。
A、
x%3 == 2
B、
x%3 != 0
C、
x%3 == 1
D、
x%3 == 0
我的答案:B
7
【单选题】
如果要求在if后一对括号中的表达式在表示a 不等于 0 的时候的值为“真”,则能正确表示这一关系的表达式为( )。
A、
a<>0
B、
!a
C、
a=0
D、
a
我的答案:D
8
【单选题】
设变量已正确定义,以下( )与其它switch语句不等价。
A、
switch(op){
case '+': printf("%d\n", value1 + value2); break;
case '-': printf("%d\n", value1 - value2); break;
case '*': printf("%d\n", value1 * value2); break;
default: printf("Error\n"); break;
}
B、
switch(op){
default: printf("Error\n"); break;
case '*': printf("%d\n", value1 * value2); break;
case '-': printf("%d\n", value1 - value2); break;
case '+': printf("%d\n", value1 + value2); break;
}
C、
if(op != '+' && op != '-' && op != '*'){
printf("Error\n");
}else{
switch(op){
case '+': printf("%d\n", value1 + value2); break;
case '-': printf("%d\n", value1 - value2); break;
case '*': printf("%d\n", value1 * value2); break;
}
}
D、
switch(op){
case '+': printf("%d\n", value1 + value2); break;
case '-': printf("%d\n", value1 - value2); break;
case '*': printf("%d\n", value1 * value2); break;
}
我的答案:D
9
【单选题】
以下关于switch语句和break语句的描述中正确的是( )
A、
在switch语句中必须使用break语句
B、
break语句只能用于switch语句体中
C、
break语句只能用于循环语句中
D、
在switch语句中可以不使用break语句
我的答案:D
10
【单选题】
下列程序段的输出结果是
#include <stdio.h>
int main(void)
{
int m, k = 0, s = 0;
for (m = 1; m <= 4; m++) {
switch (m % 4) {
case 0:
case 1: s += m; break;
case 2:
case 3: s -= m; break;
}
k += s;
}
printf("%d\n", k);
return 0;
}
A、
10
B、
-2
C、
-4
D、
-12
我的答案:D
循环-测验已完成
1
【单选题】
设有程序段
int m=20;
while (m=0) m=m++;
A、
while 循环执行 10 次
B、
循环是无限循环
C、
循环体语句一次也不执行
D、
循环体语句执行一次
我的答案:C
2
【单选题】
下列程序段执行后s的值为( )。
int i=5, s=0;
while(i--)
if (i%2) continue;
else s+=i;
A、
15
B、
10
C、
9
D、
6
我的答案:D
3
【单选题】
以下程序段的输出结果是()。
int main()
{
int num = 0, s = 0;
while(num <= 2)
{
num ++;
s += num;
}
printf("%d\n",s);
return 0;
}
A、
10
B、
6
C、
3
D、
1
我的答案:D
4
【单选题】
下列叙述中正确的是()。
A、
do-while语句构成的循环不能用其他语句构成的循环来代替
B、
do-while语句构成的循环只能用break语句退出
C、
用do-while语句构成的循环,在while后的表达式为非零时结束循环
D、
用do-while语句构成的循环,在while后的表达式为零时结束循环
我的答案:D
5
【单选题】
以下程序段若要使输出值为2,则应该从键盘给n输入的值是
int s = 0, a = 1, n;
scanf("%d", &n);
do
{
s += 1; a = a - 2;
} while (a != n);
printf("%d\n", s);
A、
-1
B、
-3
C、
-5
D、
0
我的答案:D
6
【单选题】
下面的这个循环的循环次数是( )。
int i,j;
for( i=0,j=10; i=j=10; i++,j--)
A、
语法错误,不能执行
B、
无限次
C、
10
D、
1
我的答案:B
7
【单选题】
语句for (表达式1; ; 表达式3)等价于?( )
A、
for ( 表达式1; 0 ; 表达式3 )
B、
for ( 表达式1; 1 ; 表达式3 )
C、
for ( 表达式1; 表达式1; 表达式3 )
D、
for ( 表达式1; 表达式3; 表达式3 )
我的答案:B
8
【单选题】
要求以下程序的功能是计算:s=1+
2
1
+
3
1
+ ... +
10
1
,但运行后输出结果错误,导致错误结果的程序行是
#include <stdio.h>
int main(void)
{
int n; float s;
s = 1.0;
for (n = 10; n > 1; n--)s = s + 1 / n;
printf("%6.4f\n", s);
return 0;
}
A、
int n; float s;
B、
for (n = 10; n > 1; n--)
C、
s = s + 1 / n;
D、
s = 1.0;
我的答案:D
9
【单选题】
循环 for(i=0, j=5; ++i!=--j; ) printf(“%d %d”, i, j); 将执行_。
A、
6
B、
3
C、
0
D、
无限次
我的答案:D
10
【单选题】
下列程序段的输出结果是()。
int main(void)
{
int i;
for( i = 1; i < 6; i ++) {
if( i % 2 != 0) {
printf("#");
continue;
}
printf("*");
}
printf("\n");
return 0;
}
A、
#*#*#
B、
#####
C、
*****
D、
*#*#*
我的答案:D
循环-测验-2已完成
1
【单选题】
下列叙述中正确的是()。
A、
break 语句只能用于 switch 语句体中
B、
continue语句的作用是使程序的执行流程跳出包含它的所有循环
C、
break 语句只能用在循环体内和 switch 语句体内
D、
在循环体内使用 break语句和 continue 语句的作用相同
我的答案:D
2
【单选题】
运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为()。
int main(void)
{
int m, n;
printf("Enter m,n;");
scanf("%d%d", &m,&n);
while (m != n)
{ while (m > n) m = m - n;
while (n > m) n = n - m;
}
printf("m=%d\n",m);
return 0;
}
A、m=3
B、
m=2
C、
m=1
D、
m=0
我的答案:D
3
【单选题】
若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是
for (i = 5; i; i--)
for (j = 0; j < 4; j++) {...}
A、
20
B、
25
C、
24
D、
30
我的答案:A
4
【单选题】
以下程序段的输出结果是
int i, j;
for (i = 1; i < 4; i++) {
for (j = i; j < 4; j++)
printf("%d * %d = %d ", i, j, i * j);
printf("\n");
}
A、
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3
B、
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3
2 * 2 = 4 2 * 3 = 6
3 * 3 = 9
C、
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
D、
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
我的答案:D
模块化程序设计已完成
1
【单选题】
在一个被调用函数中,关于 return 语句使用的描述,错误的是( )
A、
被调用函数中可以不用 return 语句
B、
被调用函数中可以使用多个 return 语句
C、
被调用函数中,如果有返回值,就一定要有 return 语句
D、
被调用函数中,一个 return 语句可以返回多个值给调用函数
我的答案:D
2
【单选题】
对于以下递归函数f,调用f(4),其返回值为() 。
int f(int n)
{
if (n) return f(n - 1) + n;
else return n;
}
A、
10
B、
4
C、
0
D、以上均不是
我的答案:A
3
【单选题】
C语言中函数返回值的类型是由( )决定的。
A、
return语句中的表达式类型
B、
调用该函数的主调函数的类型
C、
调用函数时临时决定
D、
定义函数时所指定的函数类型
我的答案:D
4
【单选题】
以下( )函数的定义是错误的?
A、
void f(int i) { return i+1; }
B、
void f( ) { }
C、
void f(int i) { }
D、
int f( ) { return 0; }
我的答案:A
5
【单选题】
以下函数值的类型是()。
fun(float x)
{
float y;
y=3*x-4;
return y;
}
A、
int
B、
不确定
C、
void
D、
float
我的答案:A
6
【单选题】
调用函数f(27)的输出结果是( )。
void f(int n)
{ if(n<5)
printf("%d", n);
else{
printf("%d", n%5);
f(n/5);
}
}
A、
102
B、
201
C、
21
D、
20
我的答案:B
7
【单选题】
一个递归算法必须包括()。
A、
递归部分
B、
终止条件和递归部分
C、
循环部分
D、
终止条件和循环部分
我的答案:B
8
【单选题】
有如下函数调用语句: func(rec1, rec2+rec3, (rec4, rec5)); 则该函数调用语句中,含有的实参个数是( )。
A、
3
B、
4
C、
5
D、
有语法错
我的答案:A
9
【单选题】
在C语言中,下列错误的说法是。
A、
函数可以递归调用
B、
不允许在函数定义中再定义函数
C、
递归程序不可能用非递归算法实现
D、
对于continue语句,可以通过改变程序的结构而不使用它
我的答案:C
10
【单选题】
对于以下递归函数 f ,调用 f(4),其返回值为( )。
int f(int n)
{ return f(n-1)+n; }
A、
10
B、
11
C、
0
D、
以上均不是
我的答案:D
变量存储属性及预编译已完成
1
【单选题】
下列程序的输出结果是( )。
# include <stdio.h>
int f(int n)
{ static int k, s;
n--;
for(k=n; k>0; k--)
s += k;
return s;
}
int main(void)
{ int k;
k=f(3);
printf("(%d,%d)", k, f(k));
return 0;
}
A、
(3,3)
B、
(6,6)
C、
(3,6)
D、
(6,12)
我的答案:C
2
【单选题】
函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为( )。
int f(int m)
{ static int i=0;
int s=0;
for(;i<=m;i++)
s+=i;
return s;
}
A、
21
B、
16
C、
15
D、
8
我的答案:C
3
【单选题】
凡是函数中未指定存储类别的局部变量,其隐含的存储类别是____。
A、
auto
B、
register
C、
extern
D、
static
我的答案:A
4
【单选题】
如果要一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,则这个变量的存储类型应该被说明为( )。
A、
自动变量
B、
静态变量
C、
外部变量
D、
寄存器变量
我的答案:D
5
【单选题】
下面关于形参和实参的说法中,正确的是( )。
A、
形参是虚设的,所以它始终不占存储单元。
B、
实参与它所对应的形参占用不同的存储单元。
C、
实参与它所对应的形参占用同一个存储单元。
D、
实参与它所对应的形参同名时可占用同一个存储单元。
我的答案:B
6
【单选题】
如果所有的变量按照下面的程序进行定义和声明,那么在main()函数中所有可用的变量为 ()。
void fun(int x)
{
static int y;
……
return;
}
int z;
void main( )
{
int a,b;
fun(a);
……
}
A、
x,y
B、
x,y,z
C、
a,b,z
D、
a,b,x,y,z
我的答案:C
7
【单选题】
宏定义“#define DIV(a, b) a/b”,经DIV(x + 5, y - 5) 引用,替换展开后是()。
A、
x + 5 / y - 5
B、
(x + 5 / y – 5)
C、
(x + 5) / (y - 5)
D、
(x + 5) / (y - 5);
我的答案:A
一维数组已完成
1
【单选题】
若有定义,int a[10];,则对数组a元素的正确引用是( )
A、
a[10]
B、
a[3.5]
C、
a(5)
D、
a[10-10]
我的答案:D
2
【单选题】
假定int类型变量占用两个字节,其有定义:int x[10]={0, 2, 4}; 则数组x在内存中所占字节数是()。
A、
3
B、
6
C、
10
D、
20
我的答案:D
3
【单选题】
以下正确地定义了一维整型数组a的语句组是( )
A、
int a(10) ;
B、
int n=10,a[n];
C、
int n; scanf(“%d”,&n); int a[n];
D、
int a[SIZE];(在程序开始有#define SIZE 10)
我的答案:D
4
【单选题】
下面程序的运行结果是( )
#include<stdio.h>
int main()
{
int a[]= {2,3,5,4},i;
for(i=0; i<4; i++)
switch(i%2)
{
case 0:
switch(a[i]%2)
{
case 0:
a[i]++;
break;
case 1:
a[i]--;
}
break;
}
for(i=0; i<4; i++)
printf("%2d",a[i]);
printf("\n");
return 0;
}
A、
3 3 4 4
B、
2 0 5 0
C、
3 0 4 0
D、
0 3 0 4
我的答案:D
5
【单选题】
下面的程序段将输出 ▁▁▁▁▁ 。
double a[] = {1, 2, 3, 4, 5};
printf("%d\n", sizeof(a));
A、
0
B、
5
C、
40
D、
48
我的答案:D
二维数组及其他已完成
1
【单选题】
以下数组定义中错误的是( )。
A、
int x[][3]={0};
B、
int x[2][3]={{1,2},{3,4},{5,6)};
C、
int x[][3]={{1,2,3},(4,5,6)};
D、
int x[2][3]={1,2,3,4,5,6};
我的答案:B
2
【单选题】
数组定义为 int a[3][2]={1, 2, 3, 4, 5, 6},数组元素____的值为6。
A、
a[3][2]
B、
a[2][1]
C、
a[1][2]
D、
a[2][3]
我的答案:B
3
【单选题】
有说明语句int a[4][5];,则a[2]+3表示__。
A、
a数组行下标为2、列下标为3的元素的地址
B、
a数组行下标为2、列下标为3的元素的值
C、
a数组第2行的首地址
D、
a数组第3行的首地址
我的答案:A
4
【单选题】
在int a[ ][3] = { {1,4}, {3,2}, {4,5,6}, {0} };中,a[2][1]的值是( )。
A、
5
B、
0
C、
6
D、
2
我的答案:A
5
【单选题】
下列字符串赋值语句中,不能正确把字符串"Hello World"赋给数组的语句是()
A、
char a1[]={'H','e ','l','l','o',' ','W','o','r','l','d','\0'};
B、
char a2[15]; strcpy(a2,"Hello World");
C、
char a3[15]; a3="Hello World";
D、
char a4[15]={"Hello World"};
我的答案:D
6
【单选题】
对于定义 char str[] = "abc\000def\n"(注:其中0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是:
A、
12 ,13
B、
3 ,11
C、
3 ,9
D、
3 ,4
我的答案:D
7
【单选题】
有两个字符数组a,b,则以下正确的输入语句是()
A、
gets(a,b);
B、
scanf("%s%s",a,b);
C、
scanf("%s%s",&a,&b);
D、
gets("a"),gets("b");
我的答案:D
8
【单选题】
若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。
A、
数组首地址
B、
数组的第一个元素值
C、
数组中全部元素的值
D、
数组元素的个数
我的答案:A
9
【单选题】
判断字符串a和b是否相等,应当使用()
A、
if (a==b)
B、
if (a=b)
C、
if (strcpy(a,b))
D、
if (strcmp(a,b)==0)
我的答案:D
10
【单选题】
以下程序的输出结果是()。
int main(void)
{
int aa[4][4]={ {1, 2, 3, 4}, {5, 6, 7, 8}, {3, 9, 10, 2}, {4, 2, 9, 6} };
int i, s=0;
for(i=0; i<4; i++)
s += aa[i][1];
printf("%d\n", s);
return 0;
}
A、
11
B、
19
C、
13
D、
20
我的答案:D
指针基础已完成
1
【单选题】
若定义pf为指向float类型变量f的指针,下列语句中__是正确的。
A、
float f, *pf = f;
B、
float f, *pf = &f;
C、
float *pf = &f, f;
D、
float f, *pf =0.0;
我的答案:D
2
【单选题】
若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, ( )是正确的。
A、
p2 = p1;
B、
p2 = **p1;
C、
p2 = &p1;
D、
p2 = *p1;
我的答案:A
3
【单选题】
若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于____。
A、
p++
B、
x++
C、
*(p++)
D、
&x++
我的答案:B
4
【单选题】
下面程序的输出结果是( )。
#include<stdio.h>
void fun (int *x, int *y)
{
printf("%d%d", *x,*y);
*x=3; *y=4;
}
int main(void)
{
int x=1,y=2;
fun(&x,&y);
printf("%d%d", x, y);
return 0;
}
A、
2 1 3 4
B、
1 2 1 2
C、
1 2 3 4
D、
2 1 1 2
我的答案:C
5
【单选题】
执行下面程序段后,a的值为( )。
int *p,a=10,b=1;
p=&a;
a=*p+b;
A、
12
B、
11
C、
10
D、
编译错误
我的答案:B
6
【单选题】
在说明语句“ int *f( );”中,标识符 f 代表是( )。
A、
一个用于指向整型数据的指针变量
B、
一个用于指向一维数组的行指针
C、
一个用于指向函数的指针变量
D、
一个返回值为指针型的函数名
我的答案:D
7
【单选题】
int *p 的含义是
A、
p是一个指针, 用来存放一个整型数
B、
p是一个指针, 用来存放一个整型数据在内存中的地址
C、
p是一个整型变量
D、
以上都不对
我的答案:D
8
【单选题】
下面程序运行后的输出结果是____。
#include <stdio.h>
int main()
{
printf("%d\n", NULL);
return 0;
}
A、
0
B、
1
C、
-1
D、
NULL没定义,出错
我的答案:D
指针与数组已完成
1
【单选题】
根据声明int a[10], *p=a; ,下列表达式错误的是( )。
A、
a[9]
B、
p[5]
C、
a++
D、
*p++
我的答案:C
2
【单选题】
设变量定义为 int a[2]={1,3}, *p=&a[0]+1;,则*p的值是( )。
A、
2
B、
3
C、
4
D、
&a[0]+1
我的答案:B
3
【单选题】
下面程序的运行结果是()。
#include<stdio.h>
int main(void)
{
int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp;
p = x;
pp = &p;
printf(“%d ”, *(p++));
printf(”%d\n”, **pp);
return 0;
}
A、
4 4
B、
2 4
C、
2 2
D、
4 6
我的答案:D
4
【单选题】
根据声明int (*p)[10], p是一个( )。
A、
数组
B、
指针
C、
函数
D、
数组的元素
我的答案:B
5
【单选题】
假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是__。
A、
char s[5]={"ABCDE"}; puts(s);
B、
char s[5]={'A', 'B', 'C', 'D', 'E'}; puts(s);
C、
char *s; scanf("%s", s); puts(s);
D、
char *s; s="ABCDE"; puts(s);
我的答案:D
6
【单选题】
若有定义:int *p[3]; 则以下叙述中正确的是( )。
A、
定义了一个基类型为int的指针变量p,该变量具有三个指针
B、
定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C、
定义了一个名为*p的整型数组,该数组含有三个int类型元素
D、
定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
我的答案:D
7
【单选题】
存在定义int a[10], x, *pa; , 若pa=&a[0], 下列的哪个选项和其他3个选项不是等价的?
A、
x=*pa;
B、
x=*(a+1);
C、
x=*(pa+1);
D、
x=a[1];
我的答案:A
8
【单选题】
如果char cc[]="12345",sizeof(cc)的值应为( )。
A、
2
B、
5
C、
6
D、
1
我的答案:C
结构体与共用体已完成
1
【单选题】
有如下定义:
struct Student{
char name[10];
int age;
char gender;
}std[3], *p=std;
则以下各输入语句中错误的是:
A、
scanf("%d",&(*p).age);
B、
scanf("%c",&std[0].gender);
C、
scanf("%c",&(p->gender));
D、
scanf("%s",&std.name);
我的答案:D
2
【单选题】
若有下列语句,则以下引用方式不合法的是( )。
struct student
{ int num;
int age;
};
struct student stu[3]={{101,20}, {102,19}, {103,20}}, *p=stu;
A、
(p++)->num
B、
p++
C、
(*p).num
D、
p=&stu.age
我的答案:D
3
【单选题】
定义下列结构体(联合)数组:
struct st { char name[15];
int age; }
a[10]={"ZHAO",14, "WANG",15, "LIU",16, "ZHANG",17 };
。
执行语句printf["%d,%c",a[2].age, *(a[3].name+2))的输出结果为()
A、
15, A
B、
16, H
C、
16, A
D、
17, H
我的答案:C
4
【单选题】
以下程序运行后的输出结果是____。
#include<stdio.h>
struct s
{
int x;
int y;
} data[2] = {10, 100, 20, 200};
int main()
{
struct s *p = data + 1;
printf("%d\n", p->x);
return 0;
}
A、
10
B、
11
C、
20
D、
21
我的答案:D
5
【单选题】
若有以下语句,则下面表达式的值为1002的是()。
struct student
{int age;
int num;};
struct student stu[3]={{1001,20},{1002,19},{1003,2}};
struct student *p;
p=stu;
A、
(p++)->num
B、
(p++)->age
C、
(*p).num
D、
(*++p).age
我的答案:D
链表已完成
1
【单选题】
在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()。
A、
p->next=q->next; q->next=p;
B、
q->next=p->next; p=q;
C、
p->next=q->next; p->next=q;
D、
q->next=p->next; p->next=q;
我的答案:D
2
【单选题】
在一个单链表head中,若要删除指针p所指结点的后继结点,则执行()。
A、
p=p->next;free(p);
B、
p->next=p->next->next; free(p);
C、
q= p->next q->next=p->next; free(q);
D、
q=p->next; p->next=q->next; free(q);
我的答案:D
3
【单选题】
链表不具有的特点是()。
A、
插入、删除不需要移动元素
B、
可随机访问任一元素
C、
不必事先估计存储空间
D、
所需空间与线性长度成正比
我的答案:B
4
【单选题】
设有如下定义的链表,则值为7的表达式是( )。
struct st{
int n;
struct st *next;} a[3] = {5, &a[1], 7, &a[2], 9, NULL}, *p = &a;
A、
p->next->n
B、
(++p)->n
C、
(p->n)++
D、
p->n
我的答案:A
发表评论