zoukankan      html  css  js  c++  java
  • 习题11(指针)

    1、读程序题:对以下程序语句分析输出语句的输出,并对错误的语句分析其错误原因。

    #include <stdio.h>

    void main()

    {

           int x=12,a[3]={1,5,8},*p1=&x,**p2=&p1,*p3[3]={&x,a,a+1};

           float y=9.9,*p4=&y;

           char s[]="fighting!",*ps=s;//去掉s前面的&

           printf("%d,%d,%d,%d\n",x,*p1,**p3,**p2);//12,12,12,12

           printf("%d,%d,%d\n",*a,*p3[1],*(*(p3+1)));//1,1,1

           printf("%d,%d,%d\n",*(a+1),*p3[2],**(p3+2));//5,5,5

           printf("%.1f,%.1f,%.1f\n",y,*p4,*&y);//9.9,9.9,9.9

           ++ps;

           printf("%c,%c\n",*s,*ps++);//f,i

           printf("%d,%d\n",ps-s,ps==s+2);//2,1

           printf("%c\n",*s+1);//*s++ 常量不能自加 

           printf("%x",p1+p2);//地址不能相加,没意义。

    }

    2、程序改错题:以下程序功能是任意输入三个整数按大到小的顺序输出。

    #include <stdio.h>

    void main()

    {

           void sort3(int *q1,int *q2,int *q3);

           int a,b,c,*p1,*p2,*p3;

           printf("请输入三个整数:");

           scanf("%d%d%d",&a,&b,&c);

           p1=&a;p2=&b;p3=&c;

           sort3(p1,p2,p3);

           printf("大到小是:%d %d %d\n",a,b,c);

    }

    void swap(int *pt1,int *pt2)

    {

           int temp;

           temp=*pt1;

           *pt1=*pt2;

           *pt2=temp;

    }

    void sort3(int *q1,int *q2,int *q3)

    {

           void swap(int *pt1,int *pt2);

           if(*q1<*q2) swap(q1,q2);

           if(*q1<*q3) swap(q1,q3);

           if(*q2<*q3) swap(q2,q3);

    }

    3、编写函数pfact:功能为求任意一个正整数的阶乘,结果用指针变量的方式传回。

     编程实现:求n!。

    #include <stdio.h>

    void pfact(int n,long *pn)

    {

           int i;

           for(i=1,*pn=1;i<=n;i++)

           {

           *pn=*pn*i;

           }

     }

     void main()

     {

          int x,len;

           long *plen=&len;

           printf("请输入一个正整数:");

           scanf("%ld",&x);

           pfact(x,plen);

           printf("%d!是:%ld",x,len);

     }

     

    4、编写函数pflower:功能为判断一个数是否是水仙花数。水仙花数指的是一个三位正整数,其每一位的数字的立方之和等于其本身。如153= +水仙花数。形参要求是指针变量。

      编程实现:输出所有的水仙花数。  

    #include <stdio.h>

    #include <math.h>

    int pflower(int n,int *pm)

    {

           int a,b,c;

           a=n/100;

           c=n%10;

           b=(n-100*a-c)/10;

           if(n==pow(a,3)+pow(b,3)+pow(c,3))

                  *pm=1;

           else

                  *pm=0;

    }

    void main()

    {

           int i,len,*plen=&len;

           printf("输出三位数的水仙花数:");

           for(i=100;i<1000;i++)

           {

                  pflower(i,plen);

                  if(len==1)

                         printf("%d ",i);

           }

    }

    小胖专属学习分享
  • 相关阅读:
    十八、SAP中使用IF/ELSE判断语句,以及sy-subrc的用法
    十七、SAP中使用SQL语句读取一条数据
    十六、SAP中查看数据库
    十五、SAP自定义结构体
    十四、SAP中定义自定义变量
    十三、SAP中定义变量时赋初始值
    十二、Sap的压缩类型p的使用方法
    十一、SAP文本变量,并设置长度
    十、SAP小数需要用引号括起来
    九、SAP中使用定义时间及使用sy-uzeit取当前时间
  • 原文地址:https://www.cnblogs.com/xpl520/p/15689806.html
Copyright © 2011-2022 走看看