C语言题库指针

第六章  指针

一、单项选择

1.若已定义char s[10];则在下面表达式中不表示s[1]的地址是(   )。

A.&s[1]

B.&s[0]+1

C.s+1

D.s++

2.下面程序段的运行结果是(   )。

   char a[ ]=”language” , *p ;

   p=a ;

   while (*p!='u') { printf(“%c”,*p-32); p++ ; }

A.language

B.langUAGE

C.LANGUAGE

D.LANG

3.下面能正确进行字符串赋值操作的是(   )

A.char s[5]={'A','B','C','D','E'};

B.char s[5]={"ABCDE"};

C.char *s ; s="ABCDE" ;

D.char *s; scanf("%s",s) ;

4.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下能正确执行并得到有意义的结果的赋值语句是(    )。

A.p2=c;

B.c=*p1+*p2;

C.p1=p2;

D.c=*p1*(*p2);

5.已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是(    )。

A.*p=max(a,b);

B.*p=max;

C.p=max;

D.p=max(a,b);

6.以下正确的叙述是(    )。

A.C语言允许main函数带形参,且形参个数和形参名均可由用户指定

B.当main函数带有形参时,传给形参的值只能从命令行中得到

C.若有说明: int main(int argc,char **argv),则argc的值必须大于1

D.C语言允许main函数带形参,形参名只能是argc和argv

7.若有定义:int (*p)[4];则标识符p(    )。

A.是一个指针数组名

B.定义不合法

C.是一个指向整型变量的指针

D.是一个指针,它指向一个含有四个整型元素的一维数组

8.设有程序段:char s[ ]="china"; char *p ; p=s ;则下面叙述正确的是()。

A.*p与s[0]相等

B.数组s中的内容和指针变量p中的内容相等

C.s数组长度和p所指向的字符串长度相等

D.s和p完全相同

9.下面程序段的运行结果是(  )。

char *s=”abcde” ;

s+=2 ; printf(“%s”,s);

A.字符'c'的地址

B.不确定

C.cde

D.字符'c'

10.下面判断正确的是()。

A.char str[10]={"china"}; 等价于 char str[10]; str[ ]={"china";}

B.char c[4]="abc",d[4]="abc"; 等价于 char c[4]=d[4]="abc" ;

C.char *a="china"; 等价于 char *a; *a="china" ;

D.char *s="china"; 等价于 char *s; s="china" ;

11.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是(    )

A.数组s中的内容和指针变量p中的内容相等

B.*p与s[0]相等

C.s数组长度和p所指向的字符串长度相等

D.s和p完全相同

12.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是(  )

void print_value(int *x)

{  printf(“%d\n”,++*x); }

A.24

B.23

C.25

D.26

13.若有说明:int *p,m=5,n;以下程序段正确的是( )

A.p = &n ; *p = m ;

B.p=&n ;scanf("%d",&p);

C.p = &n ;scanf("%d",*p);

D.scanf("%d",&n); *p=n ;

14.变量的指针,其含义是指该变量的(  )

A.值

B.地址

C.一个标志

D.名

15.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(  )

A.ptr2=k;

B.k=*ptr1+*ptr2;

C.k=*ptr1*(*ptr2);

D.ptr1=ptr2

16.8882.若要对a进行自增运算,则a应具有下面说明(   )。

Int b[10],*a=b;

二、程序设计

1.8885. /*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。

在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序: */

#include <string.h>

#include <stdio.h>

void  fun  (char *a)

{

/************Begin*************/

/************End**************/

}

int main()

{

  char s[81];

  FILE *in,*out;

  int i;

  printf("Enter a string :\n");

  gets(s);

  fun(s);

  printf("The string after deleted:\n");

  puts(s);

  /******************************/

  in=fopen("in21.dat","r");

  out=fopen("out21.dat","w");

  for(i=0;i<8;i++)

  {

      fscanf(in,"%s",s);

      fun(s);

      fprintf(out,"%s\n",s);

  }

  fclose(in);

  fclose(out);

  /******************************/

  return 0;

}

【参考代码】

    int i=0;

    char *p=a;

    while(*p&&*p=='*')

    {

        a[i]=*p;i++;p++;

    }

    while(*p)

    {

        if(*p!='*')

        {

            a[i]=*p;i++;

        }

        p++;

}

    a[i]='\0';

2.8863. /*请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。

一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殿君不是殿军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值