通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
以下叙述中错误的是( )。
当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
函数可以返回地址值
改变函数形参的值,不会改变对应实参的值
可以给指针变量赋一个整数作为地址值
第2题
以下关于指针的叙述正确是( )。
所有类型的指针变量所占内存的大小是一样的
指针变量所占内存的大小与其类型有关,char型指针变量只占1个 字节,double型指针变量占8个字节
指针变量可直接指向任何类型的变量,而不会出现编译或运行错 误
指针变量既可以直接指向结构体,也可直接指向结构体中某个成 员,而不会出现编译或运行错误
第3题
关于地址和指针,以下说法正确的是( )。
通过强制类型转换可以将一种类型的指针变量赋值给另一种类型 的指针变量
可以取一个常数的地址赋值给同类型的指针变量
可以取一个表达式的地址赋值给同类型的指针变量
可以取一个指针变量的地址赋值给基类型相同的指针变量
第4题
以下关于指针的叙述,错误的是( )。
两个基类型相同的指针变量不能指向同一个对象
可以通过对指针变量自增、自减来移动指针
只有两个类型相同的指针才能进行减运算
一个指针变量可以通过不同的方式获得一个确定的地址值
第5题
基类型不同的指针可以直接相互赋值
函数可以通过指针形参向所指单元传回数据
字符型指针可以指向一个字符串
一般情况下,指针的运用可使程序代码效率更高
第6题
有以下程序:
#include<stdio.h> main() { char* p1 = 0; int* p2 = 0; float* p3 = 0; printf("%d,%d,%d\n",sizeof(p1),sizeof(p2),sizeof(p3)); }
程序运行后的输出结果是( )。
1,4,8
4,4,4
1,2,4
1,1,4
第7题
若有定义语句:
double a,*p=&a;
定义语句中的p只能存放double类型变量的地址
定义语句中的*号是一个说明符
定义语句中的*号是一个间址运算符
定义语句中*p=&a把变量a的地址作为初值赋给指针变量p
第8题
设有定义:
int a,b[10],*c=NULL,*p;
则以下语句错误的是( )。
p=a;
p=b;
p=c;
p=&b[0];
第9题
已定义以下函数
int fun(int*p) { return *p; }
fun函数返回值是( )。
一个整数
不确定的值
形参p中存放的值
形参p的地址值
第10题
int x=0,*p;
紧接着的赋值语句正确的是( )。
*p=x;
*p=NULL;
p=x;
p=NULL;
第11题
设已有定义:
float x;
则以下对指针变量p进行定义且赋初值的语句中正确的是( )。
float *p=&x;
int*p=(float)x;
float p=&x;
float *p=1024;
第12题
设变量p是指针变量,语句p=NULL;是给指针变量赋NULL值,它等价于( )。
p=" ";
p='0';
p=0;
p='';
第13题
以下程序中关于指针输入格式正确的是( )。
int *p;scanf("%d",&p);
int * p;scanf("%d",p);
int k,* p=&k;scanf("%d",p);
int k,*p;*p=&k;scanf("%d",&p);
第14题
double x,y,*px,*py;
执行了px=&x;py=&y;之后,正确 的输入语句是( )。
scanf("%1f%1f",px,py);
scanf("%f%f"&x,&y);
scanf("%f%f",x,y);
scanf("%1f%1f",x,y);
第15题
有以下程序
#include <stdio.h> main() { int n,*p=NULL; *p=&n; printf("Input n:"); scanf("%d",&p); printf("output n:"); printf("%d\n",p); }
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误, 以下语句正确的是( )。
int n,*p=NULL;
*p=&n;
scanf("%d",&p);
printf("%d\n",p);
第16题
#include <stdio.h> main() { int *p,x=100; p=&x; x=*p+10; printf("%d\n",x); }
110
120
100
90
第17题
#include <stdio.h> main() { int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf("%d\n",c); }
执行后的输出结果是( )。
4
2
1
3
第18题
以下叙述中正确的是( )。
在对指针进行加、减算术运算时,数字1表示1个存储单元的长度
如果p是指针变量,则*p表示变量p的地址值
如果p是指针变量,则&p是不合法的表达式
如果p是指针变量,则*p+1和*(p+1)的效果是一样的
第19题
函数的形参类型不能是指针类型
函数的类型不能是指针类型
设有指针变量为double *p,则p+1将指针p移动8个字节
基类型不同的指针变量可以相互混用
第20题
int year=2009,*p=&year;,
以下不能使用变量year 中的值增至2010的语句是( )。
*p+=1
(*p)++;
++(*p);
*p++;
第21题
#include <stdio.h> main() { int a[10]={1,3,5,7,11,13,17},*p=a; printf("%d,",*(p++)); printf("%d\n",*(++p)); }
3,7
3,5
1,5
1,3
第22题
有如下程序:
#include <stdio.h> main() { int a=0,*ptr; ptr=&a; *ptr=3; a=(*ptr)++; printf("%d,%d\n",a,*ptr); }
4,4
0,1
1,4
0,4
第23题
#include <stdio.h> main() { int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r; printf("%d,%d,%d,%d\n",m,n,*p,*q); }
1,2,1,2
1,2,2,1
2,1,2,1
2,1,1,2
第24题
#include <stdio.h> main() { int c[6]={10,20,30,40,50,60},*p,*s; p=c; s=&c[5]; printf("%d\n",s-p); }
5
50
6
60
第25题
#include <stdio.h> main () { int a[5] = {2,4,6,8,10},*p,**k; p = a; k = &p;printf("%d",*(p++)); printf("%d\n",**k); }
24
44
22
46
第26题
以下程序的功能是:通过调用calc函数,把所求得的两数之和值 放入变量add中,并在主函数中输出。
#include <stdio.h> void calc(float x,float y,float *sum) { ______ = x+y; } main () { float x,y,add; scanf("%f%f",&x,&y); calc(x,y,&add); printf("x+y=%f\n",add); }
calc函数中下划线处应填入的是( )。
*sum
sum
&sum
add
第27题
#include <stdio.h> int change(int *data) { return (*data)++; } main() { int data=123; change(&data); printf("%d,",data); data = change(&data); printf("%d,",data); printf("\n"); }
124,124,
123,124,
124,123,
123,123,
第28题
#include <stdio.h> int convert(int *data) { return (*data)++; } main() { int data=56; convert(&data); printf("%d,",data); data = convert(&data); printf("%d,",data); printf("\n"); }
56,57,
57,58,
57,57,
55,57,
第29题
#include <stdio.h> int k=5; void f(int *s) { s=&k; *s=7; } main() { int m=3; f(&m); printf("%d,%d\n", m,k); }
7,7
5,7
第30题
#include<stdio.h> int k = 5; void f( int *s) { s = &k; } main() { int m=3, *p=&m; f(p); printf("%d,%d\n",m,*p); }
程序的运行结果是( )。
3,3
5,5
5,3
第31题
以下选项中,不能对主函数中变量i和j的值进行交换的程序是 ( )。
#include <stdio.h> void swap(int *p, int *q) { int *t; *t = *p; *p = *q; *q = *t; } main() { int i=10, j=20,*a=&i,*b=&j; swap(a,b); printf("i=%d j=%d\n",i,j); }
#include <stdio.h> void swap(int *p, int *q) { int t; t = *p; *p = *q; *q = t; } main() { int i=10,j=20,*a=&i,*b=&j; swap(a,b); printf("i=%d j=%d\n",i,j); }
#include <stdio.h> #include <stdlib.h> void swap(int *p, int *q) { int *t; t = (int *)malloc(sizeof(int)); *t = *p; *p = *q; *q = *t; free(t); } main() { int i=10,j=20; swap(&i,&j); printf("i=%d j=%d\n",i,j); }
#include <stdio.h> void swap( int *p, int *q) { int t; t = *p; *p = *q; *q = t; } main() { int i=10,j=20,*x=&i,*y=&j; swap(x,y); printf("i=%d j=%d\n",i,j); }
第32题
#include <stdio.h> void fun(int*a,int*b) { int*c; c=a; a=b; b=c; } main() { int x=3,y=5,*p=&x,*q=&y; fun(p,q); printf("%d,%d",*p,*q); fun(&x,&y); printf("%d,%d\n",*p,*q); }
3,5,5,3
3,5,3,5
5,3,3,5
5,3,5,3
第33题
#include <stdio.h> int *f(int *s,int *t) { if(*s < *t)*s=*t; return s; } main() { int i=3,j=5,*p=&i,*q=&j,*r; r=f(p,q); printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r); }
5,5,5,5,5
3,5,5,5,5
5,3,3,3,5
3,5,3,5,5
第34题
#include <stdio.h> void f(int*p,int*q); main() { int m=1,n=2,*r=&m; f(r,&n); printf("%d,%d",m,n); } void f(int*p,int*q) { p=p+1; *q=*q+1; }
2,3
1,2
第35题
若有以下程序
#include <stdio.h> void sp(int *a) { int b=2; a=&b; *a=*a*2; printf("%d,",*a); } main() { int k=3,*p=&k; sp(p); printf("%d,%d\n",k,*p); }
则程序的输出结果是( )。
4,3,4
4,3,3
6,3,6
6,6,6
第36题
#include <stdio.h> void fun(int x,int y,int *c,int *d) { *c=x+y; *d=x-y; } main() { int a=4,b=3,c=0,d=0; fun(a,b,&c,&d); printf("%d %d\n",c,d); }
程序的输出结果是( )。
7 1
4 3
3 4
0 0
第37题
#include <stdio.h> void fun(int *p,int *q) { int t; t = *p; *p = *q; *q = t; *q = *p; } main() { int a = 0,b = 9; fun(&a,&b); printf("%d %d\n",a,b); }
0 9
9 0
9 9
第38题
#include <stdio.h> void fun1(char *p) { char *q; q=p; while(*q!='\0') { (*q)++; q++; } } main() { char a[]={"Program"},*p; p=&a[3]; fun1(p); printf("%s\n",a); }
程序执行后的输出结果是( )。
Prohsbn
Prphsbn
Progsbn
Program
第39题
#include <stdio.h> void fun(char *a, char *b) { while(*a=='*') a++; while(*b=*a) { b++; a++; } } main() { char *s="*****a*b****" , t[80]; fun(s,t); puts(t); }
*****a*b
a*b
a*b****
ab
第40题
#include <stdio.h> void fun(char *c,int d) { *c=*c+1; d=d+1; printf("%c,%c,",*c,d); } main() { char b='a',a='A'; fun(&b,a); printf("%c,%c\n",b,a); }
程序运行后的输出结果是 ()。
b,B,b,A
b,B,B,A
a,B,B,a
a,B,a,B
第41题
#include <stdio.h> void fun(char *t,char *s) { while(*t!=0) t++; while((*t++=*s++)!=0); } main() { char ss[10]="acc",aa[10]="bbxxyy"; fun(ss,aa); printf("%s,%s\n",ss,aa); }
accbbxxyy,bbxxyy
acc,bbxxyy
accxxyy,bbxxyy
accxyy,bbxxyy
第42题
#include <stdio.h> void swap(char *x,char *y) { char t; t=*x; *x=*y; *y=t; } main() { char *s1,*s2; char a[]="abc"; char b[]="123"; s1=a; s2=b; swap(s1,s2); printf("%s,%s\n",s1,s2); }
1bc,a23
abc,123
123,abc
321,cba
选择题(1 - 42题,共计100分)