上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
C语言复习习题-指 针
作者:未知 申领版权
2010年12月12日 共有 2098 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:
    

第八章    指  针

1.若int  x ,*pb; ,则正确的赋值表达式是
    A)pb=&x      B)pb=x;     C)*pb=&x;     D)*pb=*x
    2.有如下程序段 
    int  *p ,a=10 ,b=1 ; 
    p=&a ; a=*p b ; 
    执行该程序段后,a的值为 
    A)12      B)11      C)10      D)编译出错 
    3.若有以下定义和语句: 
    double   r=99 , *p=&r ; 
    *p=r ; 
    则以下正确的叙述是 
    A) 以下两处的*p含义相同,都说明给指针变量p赋值 
    B) 在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元 
    C) 语句"*p=r;"把变量r的值赋给指针变量p 
    D) 语句"*p=r;"取变量r的值放回r中 
    4.下列程序的输出结果是
    A)4      B)6      C)8      D)10
    int  b=2;
    int  func(int  *a)
    { b  = *a; return(b);}
    main()
    { int  a=2, res=2;
    res  = func(&a);
    printf("%d \n",res);}
    5.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
    int add(int  x ,int y ,【            】 z)
    { 【            】 =x y; }
    6.下面程序的输出是
    A)23      B)24      C)25      D)26
    void  prtv(int  * x)
    {  printf("%d\n", *x);}
    main()
    {  int  a=25 ;prtv(&a);}
    7.下面程序的输出结果是 【               】。
    void  as( int  x ,int  y ,int  *cp ,int  *dp)
    { *cp=x y;*dp=x-y;}
    main()
    { int  a=4 ,b=3 ,c ,d ;
    as(a ,b ,&c ,&d);
    printf("%d %d\",c,d);}
    8.请选出以下程序的输出结果
    #include <stdio.h>
    sub(int  x  ,int  y  ,int  *z)
    { *z=y-x ; }
    main()
    { int  a , b , c ;
    sub(10 ,5 ,&a) ; sub(7 ,a ,&b) ; sub(a ,b ,&c) ;
    printf("%d ,%d ,%d\n" ,a ,b ,c) ;}
    A) 5 ,2 ,3            B) -5 ,-12 ,-7
    C) -5 ,-12 ,-17       D) 5 ,-2 ,-7
    9.有以下程序
    int  fun(int  x ,int  y ,int  *cp ,int  *dp)
    { *cp=x y; *dp=x-y; }
    main()
    { int  a , b , c , d ;
    a=30; b=50;
    fun(a ,b ,&c ,&d) ;
    printf("%d ;%d\n" , c , d) ;    }
    输出结果是
    A)50 ;30     B)30 ;50     C)80 ;-20     D)80 ;20
    10.要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果.能正确执行此功能的函数是
    A) funa (int *x,int *y)  { int  *p; *p=*x; *x=*y;*y=*p; } 
    B) fund (int x,int y)    { int  t; t=x;x=y;y=t; } 
    C) func (int *x,int *y)  { *x=*y;*y=*x;}
    D) fund (int *x,int *y)  { *x=*x *y;*y=*x-*y;*x=*x-*y; }
    11.若有说明:long  *p ,a;则不能通过scanf语句正确给输入项读入数据的程序段是 
    A) *p=&a; scanf("%ld",p); 
    B) p=(long *)malloc(8); scanf("%ld",p); 
    C) scanf("%ld",p=&a); 
    D) scanf("%ld",&a); 
    12.以下程序执行后,a的值是
    A)4      B)1      C)0      D)运行时出错,无定值
    main()
    {  int  a ,k=4 ,m=6 ,*p1=&k ,*p2=&m ;
    a=p1= =&m ;
    printf("%d\n",a);    }
    13.fun1函数的调用语句为:fun1(&a ,&b ,&c) ; 它将三个整数按由大到小的顺序调整后依次放入a ,b ,c ,三个变量中 ,a中放大数。请填空。 
    void  fun2 (int  *x ,int  *y) 
    {  int   t ; 
    t=*x ; *x=*y ;*y=t ;   } 
    void  fun1 (int  *pa ,int  *pb ,int  *pc) 
    {   if 【                            】 ;
    if 【                            】 ; 
    if (*pc>*pb) fun2(【                】) ; }
    14.对于类型相同的两个指针变量之间,不能进行的运算是 
    A)<      B)=      C)       D)-   
    15.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【               】。 
    int  w[10]={23,54,10,33,47,98,72,80,61}, *p=w; 
    16.若已定义:
    int  a [ ]={0,1,2,3,4,5,6,7,8,9} ,*p=a ,i ;
    其中 0≤i≤9, 则对a数组元素不正确的引用上
    A)a[p-a]      B)*(&a[i])     C)p[i]      D)a[10]
    17.若已定义:int  a[9] ,*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是 
    A)p 1      B)a 1      C)a       D) p 
    18.若有以下说明:
    int  a[10]={1,2,3,4,5,6,7,8,9,10} ,*p=a ;
    则数值为6的表达式是
    A)*p 6      B)*(p 6)     C)*p =5      D)p 5
    19.设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
    A)k=*P1 *P2;   B)p2=k;    C)P1=P2;    D)k=*P1 * (*P2);
    20.下面程序的输出是
    A)3           B)4          C)1            D)2
    main()
    {  int  a[10]={ 1,2,3,4,5,6,7,8,9,10} ,*p=a  1;
    printf("%d\n",*(p 2));
    }
    21.若有以下的定义: 
    int  a[ ]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} , *p=a ; 
    则值为3的表式是 
    A)p =2 , *(p )       B)p =2 ,* p 
    C)p =3 , *p            D)p =2 , *p 
    22.若有以下定义和语句: 
    int  a[10]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} ,*p=a ; 
    则不能表示a数组元素的表达式是 
    A)*p      B)a[10]      C)*a      D)a[p-a] 
    23.阅读程序:
    main()
    {  int  a[10]={1,2,3,4,5,6,7,8,9,0},*p;
    p=a;
    printf("%x\n",p);
    printf("%x\n",p 9);     }
    该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个printf语句的输出结果是
    A)203      B)204      C)1a4      D)1a6
    24.请选出正确的程序段
    A) int  *p;               B) int  *s, k;
    scanf("%d",p);            *s=100;
    …                          …
    C) int  *s, k;          D) int  *s, k;
    char *p, c;               char *p, e;
    s=&k;                    s=&k;
    p=&c;                    p=&c;
    *p='a';                    s=p;
    …                         *s=1;
    …
    25.有如下说明 
    int  a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 
    则数值为9的表达式是 
    A)*p 9      B)*(p 8)     C)*p =9      D)p 8 
    26.已知指针p的指向如下图所示,则执行语句 *--p;后*p的值是
    A) 30      B)20      C)19      D)29
    a[0]  a[1]   a[2]  a[3]  a[4]

    
   10   
    
  20   
    
  30  
    
  40  
    
  50  
    

             ↑
    p
    27.执行以下程序后,y的值是
    main( )
    {  int  a[ ]={2,4,6,8,10};
    int  y=1,x,*p;
    p=&a[1];
    for(x=0;x<3;x )
    y   = * (p   x);
    printf("%d\n",y);}
    A)17      B)18      C)19      D)20
    28.设有如下定义:
    int  arr[]={6 ,8 ,9 ,10};
    int  * ptr;
    则下列程序段的输出结果为
    ptr=arr ;
    *(ptr 2) =2 ;
    printf ("%d ;%d\n" ,*ptr ,*(ptr 2));
    A)8 ;10      B)6 ;8      C)7 ;9      D)6 ;10
    29.下列程序执行后的输出结果是
    A)6      B)7      C)8      D)9
    void  func(int  *a,int  b[ ])
    { b[0]=*a 6; }
    main()
    { int  a ,b[5];
    a=0; b[0]=3;
    func(&a,b); printf("%d \n",b[0]);}
    30.下面程序把数组元素中的最大值放入a[0]中。则在if 语句中的条件表达式应该是 
    A)p>a      B)*p>a[0]      C)*p>*a[0]      D)*p[0]> *a[0] 
    main( ) 
    { int  a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i; 
    for(i=0;i <10;i ,p )
    if(【             】) *a=*p; 
    printf("%d",*a); }
    
    31.以下函数返回a所指数组中最小的值所在的下标值 
    fun(int   *a , int   n) 
    { int  i ,j=0 ,p ; 
    p=j ; 
    for(i=j ;i<n ;i )
    if(a[i]<a[p])【               】
    return(p); } 
    在下划线处应填入的是 
    A)i=p      B)a[p]=a[i]      C)p=j      D)p=i 
    32.以下程序的运行结果是 
    A)运行后报错      B)6 6      C)6 12      D)5 5 
    #include "stdio.h" 
    main( ) 
    { int  a[ ]={1,2,3,4,5,6,7,8,9,10,11,12}; 
    int  *p=a 5, *q=NULL; 
    * q=*(p 5); 
    printf("%d %d \n",*p,*q); } 
    33.要求函数的功能是在一维数组a中查找x值;若找到则返回所在的下标值,否则返回0;数列放在a[1]到a[n]中。不能正确执行此功能的函数是  
    A) funa(int  *a ,int  n ,int  x) 
    { *a=x; while(a[n]!=x)n--; return n; }
    B) funb(int  *a ,int  n ,int  x)
    { int  k;for(k=1;k<=n;k )
    if(a[k]==x)return k; return 0;}
    C) func(int  a[ ] ,int  n ,int  x) 
    { int *k; a[0]=x;k=a n;while(*k!=x)k--; return  k-n; } 
    D) fund (int  a[] ,int  n ,int  x) 
    {  int  k=0;do{ k ;} while ((k<n 1)&&(A[k]!=x));}
    34.下面程序输出数组中的最大值,由s指针指向该元素.
    main()
    { int   a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
    for(p=a, s=a; p-a<10; p )
    if(【             】)s=p;
    printf("The max:%d",*s):     }
    则在if语句中的判断表达式应该是
    A)p>s      B)*p>*s      C)a[p]>a[s]      D)p-a>p-s
    35.若有以下定义和语句: 
    int  a[10]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} ,*p=a ; 
    则不能表示a数组元素的表达式是 
    A)*p      B)a[10]      C)*a      D)a[p-a] 
    36.若有以下调用语句,则不正确的fun函数的首部是
    A) void fun(int m, int x[])    B) void fun(int s, int h[41])
    C) void fun(int p, int *s)     D) void fun(int n, int a)
    main()
    { …
    int a[50],n;
    …
    fun(n, &a[9]);
    …  }

    

 

相关新闻

肢体语言塑造你自己
杂谈语言(之六)——文字改革(下):一失足成千古恨的文字改革
杂谈语言(之五)——文字改革(上):半吊子的改革最糟糕!
杂谈语言(之四)——续谈广东话的口头语(2)
杂谈语言(之四)——续谈广东话的口头语(1)
杂谈语言(之三)——那些深受古汉语影响的语言(方言)
杂谈语言(之二)——语言学习的边际成本递减效应
700个MBA面试题
波兰(二)
捷克(二)

您可能对这些感兴趣  

第7讲 综合分析BIM在运用与推广中的障碍问题
考核学生质量的困难
日本福岛核电站事故初步分析
论科技异化与科技人化
中国科技计划项目管理现状与对策
财政科技资金的审计重点和内容
软科学研究机构在政府决策中的功效、困境及对策研究
打造超级DOS系统(下)
DOS命令基础应用(6)
打造超级DOS系统(上)

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》