做自己的歌颂者吧 关注:4贴子:221
  • 10回复贴,共1

实验八 指针

只看楼主收藏回复



1楼2013-06-21 08:54回复
    题9:定义函数int f(char *x),统计x所指的字符串中字母、数字和其他字符的个数。
    #include"stdio.h"
    #include"string.h"
    void count (char *x)
    {
    int sum1=0,sum2=0,sum3=0;
    int i;
    for(i=0;*(x+i)!='\0';i++)
    if(*(x+i)>'a'&&*(x+i)<'z'||*(x+i)>'A'&&*(x+i)<'Z')
    sum1++;
    else
    if(*(x+i)>'0'&&*(x+i)<'9')
    sum2++;
    else
    sum3++;
    printf("sum1=%d,sum2=%d,sum3=%d\n",sum1,sum2,sum3);
    }
    void main()
    {
    char string[80], *p;
    printf("input string:\n");
    scanf("%s",string);
    p=string;
    count(p);
    }


    2楼2013-06-21 09:27
    回复
      2025-06-28 19:36:32
      广告
      题11:定义函数int f(char *x)判断x所指的字符串是否为回文,若是则函数返回1,否则返回0.
      #include"stdio.h"
      #include"string.h"
      int f(char *x);
      void main()
      {
      char s[80];
      printf("intput :");
      gets(s);
      if(f(s))
      printf("it is");
      else
      printf("it is not ");
      }
      int f(char *x)
      {
      char*h,*t;
      for(h=x,t=x+strlen(x)-1;t>h;t--,h++)
      if(*h!=*t)
      break;
      return
      t<=h; }


      3楼2013-06-21 09:32
      回复
        题8:
        #include"stdio.h"
        void sort(int*,int*,int*);
        void main()
        {
        int a,b,c,*pointer_1,*pointer_2,*pointer_3;
        pointer_1=&a;
        pointer_2=&b;
        pointer_3=&c;
        printf("input 3 numbers:");
        scanf("%d,%d,%d",&a,&b,&c);
        sort(pointer_1,pointer_2,pointer_3);
        printf("%d,%d,%d\n",*pointer_1,*pointer_2,*pointer_3);
        }
        void sort(int *p1,int *p2,int *p3)
        {
        int t;
        if(*p1>*p2){t=*p1;*p1=*p2;*p2=t;}
        if(*p1>*p2){t=*p1;*p1=*p3;*p3=t;}
        if(*p2>*p3){t=*p2;*p2=*p3;*p3=t;}
        }


        4楼2013-06-21 09:47
        回复
          题7:
          #include"stdio.h"
          void sort (int *,int *);
          void main()
          {
          int a,b,*pointer_1,*pointer_2;
          pointer_1=&a;
          pointer_2=&b;
          printf("input2 data:");
          scanf("%d,%d",&a,&b);
          sort(pointer_1,pointer_2);
          printf("%d,%d\n",*pointer_1,*pointer_2);
          }
          void sort(int *p1,int *p2)
          {
          int *temp;
          temp=p1;
          p1=p2;
          p2=temp;
          printf("%d,%d\n",*p1,*p2);
          }


          5楼2013-06-21 09:48
          回复
            题6:将a和b的对应位置字符中的较大者存放到数组c中。 #include“stdio.h”
            #include"string.h"
            void main()
            {
            int k=0;
            char a[80],b[80],c[80]={'\0'},*p,*q;
            p=a;q=b;
            gets(a);gets(b);
            while(*p!='\0'&&*q!='\0')
            {
            if(*q<*P)c[k]=*p;
            else c[k]=*q;
            p++;q++;k++;
            }
            if(*p!='\0')strcat(c,p);
            else strcat(c,p);
            printf("array c:");
            puts(c);
            }
            输出:input:1【enter】2【erter】
            output:array c:2.


            6楼2013-06-25 09:44
            回复
              题5:用指针实现一维数组的数据输入与输出。 #include"stdio.h"
              void main()
              {
              int a[6],i;
              int *p;
              for(i=0;i<6;i++)
              scanf("%d",&a[i]);
              p=a;
              for(i=0;i<6;i++)
              printf("%3d",*(p++));
              printf("\n");
              }


              7楼2013-06-25 09:45
              回复
                题4: #include"stdio.h"
                void main()
                {
                char a[]="CHINA";
                char *p;
                p=a;
                printf("%c,%c\n",*p,*(p+2));
                printf("%x,%x,%x,%x,%x\n",&a[0],&a[1],&a[2],&a[3],&a[4]);
                }
                输出:C,I
                fff0,fff1,fff2,fff3,fff4.


                8楼2013-06-25 09:45
                回复
                  2025-06-28 19:30:32
                  广告
                  题3: #include"stdio.h"
                  void main()
                  {
                  int a[2][3]={{0,1,2},{3,4,5}};
                  int k,j,*p;
                  for(j=0;j<2;j++)
                  {
                  for(k=0;k<3;k++)
                  printf("%5d",*(a[j]+k));
                  printf("\n");
                  }
                  printf("\n");
                  for(j=0;j<2;j++)
                  {
                  for(k=0;k<3;k++)
                  printf("%5d",*(*(a+j)+k));
                  printf("\n");
                  }
                  printf("\n");
                  p=a[0];
                  for(j=0;j<2;j++)
                  {
                  for(k=0;k<3;k++)
                  printf("%5d",*(p++));
                  printf("\n");
                  }
                  }
                  输出:0 1 2
                  3 4 5
                  0 028482
                  2776228257 8292


                  9楼2013-06-25 09:45
                  回复

                    题2: #include"stdio.h"
                    void main()
                    {
                    int a[5]={1,2,3,4,5},i;
                    int * p;
                    p=a;
                    for(i=0;i<5;i++)
                    printf("%3d",a[i]);
                    printf("\n");
                    for(i=0;i<5;i++)
                    printf("%3d",*(a+i));
                    printf("\n");
                    for(i=0;i<5;i++)
                    printf("%3d",*(p+i));
                    printf("\n");
                    for(i=0;i<5;i++)
                    printf("%3d",p[i]);
                    printf("\n");
                    for(;p<a+5;p++)
                    printf("%3d",*p);
                    printf("\n");
                    } 输出:1 2 3 4 5
                    1 2 3 4 5
                    1 2 3 4 5


                    10楼2013-06-25 09:46
                    回复

                      题1: #include"stdio.h"
                      void main()
                      {
                      int a,b,c;
                      int *p,*q,*t;
                      p=&a;
                      q=&b;
                      t=&c;
                      scanf("%d,%d",&a,&b);
                      *t=a+b;
                      printf("%x,%x,%x,%x\n",&a,&b,p,q);
                      printf("%x,%x\n",&p,&q);
                      printf("%d,%d,%d,%d\n",a,b,*p,*q);
                      printf("%d,%d\n",c,*t);
                      } input:1 2 3
                      output:fff4,fff2,fff4,fff2
                      ffee,ffec.
                      123,498,123,498
                      621,621


                      11楼2013-06-25 09:46
                      回复