Dotcpp  >  试卷列表  >  C语言地址和指针

C语言地址和指针


第1题

以下叙述中错误的是( )。

共 2 分 

第2题

以下关于指针的叙述正确是( )。

共 2 分 

第3题

关于地址和指针,以下说法正确的是( )。

共 2 分 

第4题

以下关于指针的叙述,错误的是( )。

共 2 分 

第5题

以下叙述中错误的是( )。

共 2 分 

第6题

有以下程序:

1
2
3
4
5
6
7
8
 #include<stdio.h> 
 main() 
 
 char* p1 = 0; 
 int* p2 = 0;
  float* p3 = 0; 
  printf("%d,%d,%d\n",sizeof(p1),sizeof(p2),sizeof(p3));
   }

程序运行后的输出结果是( )。

共 2 分 

第7题

若有定义语句:

1
 double a,*p=&a;

以下叙述中错误的是( )。 

共 2 分 

第8题

设有定义:

1
 int a,b[10],*c=NULL,*p;

则以下语句错误的是( )。

共 2 分 

第9题

已定义以下函数

1
 int fun(int*p) { return *p; }

fun函数返回值是( )。

共 2 分 

第10题

设有定义:

1
 int x=0,*p;

紧接着的赋值语句正确的是( )。

共 2 分 

第11题

设已有定义:

1
 float x;

则以下对指针变量p进行定义且赋初值的语句中正确的是( )。

共 2 分 

第12题

设变量p是指针变量,语句p=NULL;是给指针变量赋NULL值,它等价于( )。

共 2 分 

第13题

以下程序中关于指针输入格式正确的是( )。

共 2 分 

第14题

若有定义语句:

1
double x,y,*px,*py;

执行了px=&x;py=&y;之后,正确 的输入语句是( )。

共 2 分 

第15题

有以下程序

1
2
3
4
5
6
7
8
9
10
#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读入数据并输出,但程序有多处错误, 以下语句正确的是( )。

共 2 分 

第16题

有以下程序:

1
2
3
4
5
6
7
8
 #include <stdio.h> 
 main()
  int *p,x=100;
   p=&x; 
   x=*p+10; 
   printf("%d\n",x);
 }

程序运行后的输出结果是( )。

共 2 分 

第17题

有以下程序

1
2
3
4
5
6
7
8
#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); 
 }

执行后的输出结果是( )。

共 2 分 

第18题

以下叙述中正确的是( )。

共 2 分 

第19题

以下叙述中正确的是( )。

共 2 分 

第20题

若有定义语句:

1
int year=2009,*p=&year;,

以下不能使用变量year 中的值增至2010的语句是( )。

共 2 分 

第21题

有以下程序:

1
2
3
4
5
6
7
#include <stdio.h>
 main() 
 
 int a[10]={1,3,5,7,11,13,17},*p=a; 
 printf("%d,",*(p++)); 
 printf("%d\n",*(++p));
 }

程序运行后的输出结果是( )。

共 2 分 

第22题

有如下程序:

1
2
3
4
5
6
7
8
9
 #include <stdio.h> 
 main() 
 
 int a=0,*ptr;
  ptr=&a;
   *ptr=3;
    a=(*ptr)++;
    printf("%d,%d\n",a,*ptr); 
  }

程序运行后的输出结果是( )。

共 2 分 

第23题

有以下程序:

1
2
3
4
5
6
7
 #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);
   }

程序运行后的输出结果是( )。

共 2 分 

第24题

有以下程序

1
2
3
4
5
6
7
 #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);
  }

程序运行后的输出结果是( )。

共 2 分 

第25题

有以下程序

1
2
3
4
5
6
7
8
 #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); 
  }

程序运行后的输出结果是( )。

共 2 分 

第26题

以下程序的功能是:通过调用calc函数,把所求得的两数之和值 放入变量add中,并在主函数中输出。

1
2
3
4
5
6
7
8
9
10
 #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函数中下划线处应填入的是( )。

共 2 分 

第27题

有如下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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");
  }

程序运行后的输出结果是( )。

共 3 分 

第28题

有如下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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"); 
 }

程序运行后的输出结果是( )。

共 3 分 

第29题

有以下程序

1
2
3
4
5
6
7
8
9
10
#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); }

程序运行后的输出结果是( )。

共 3 分 

第30题

有以下程序:

1
2
3
4
5
6
#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 分 

第31题

以下选项中,不能对主函数中变量i和j的值进行交换的程序是 ( )。

共 3 分 

第32题

有以下程序:

1
2
3
4
5
6
7
8
9
10
11
 #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 分 

第33题

有以下程序:

1
2
3
4
5
6
7
 #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); }

程序的运行结果是( )。

共 3 分 

第34题

有以下程序:

1
2
3
4
5
6
7
8
 #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; }

程序运行后的输出结果是( )。

共 3 分 

第35题

若有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
 #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); 
  }

则程序的输出结果是( )。

共 3 分 

第36题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
 #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); 
  }

程序的输出结果是( )。

共 3 分 

第37题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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); 
}

程序的输出结果是( )。

共 3 分 

第38题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 #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); 
 }

程序执行后的输出结果是( )。

共 3 分 

第39题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
 #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); 
  }

程序的运行结果是( )。

共 3 分 

第40题

有以下程序:

1
2
3
4
5
6
7
8
9
 #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); }

程序运行后的输出结果是 ()。

共 3 分 

第41题

有以下程序

1
2
3
4
5
6
7
8
9
#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); }

程序的运行结果是( )。

共 3 分 

第42题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
#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); }

程序执行后的输出结果是( )。

共 3 分