每日练习(3-29)

(小白文,多多指教)

1.  *运算符与间接访问

(1)间接引用要用间接引用运算符* 来实现,语法格式     *指针表达式

#include <stdio.h>
int main ()
{
      char x='A';
      double y=3;
      //*(&x)和*(&y)分别是char和double类型的变量,他俩就等价于x和y 
     
    printf("  &x=%c\n",x);
    printf("  &y=%f\n",y);
    printf("  *(&x)=%c\n",*(&x));
    printf("  *(&y)=%f\n",*(&y));
    return 0;
}

  运行结果:

  &x=A
  &y=3.000000
  *(&x)=A
  *(&y)=3.000000

(2)利用指针访问类型不匹配的变量

  如果指针的基类型不匹配,尽管指针指向正确,结果会错误i

#include <stdio.h>
#include <stdlib.h>
int main()
{
    double x=3;
    char *p;
    p=(char*)(&x);    //指向x 
    *((double*)p) =3.5;   //为x赋值 
    printf("  *p=%p\n",*p);
    printf("  *((double*)p)=%lf",*((double*)p));//读出x的值并输出 
    return 0;
}

经过赋值后指针p的值与&x相同,即p已指向x,但*p是char型,只由x的1个字节构成。

运行结果:

  *p=0000000000000000
  *((double*)p)=3.500000
--------------------------------
Process exited after 0.08786 seconds with return value 0
请按任意键继续. . .
*((double*)p)才是与x相同的变量

2.求固定半径的周长,面积,表面积,体积

这个水题,很简单,没啥说的
#include <stdio.h>
#define PI 3.14
float L(r){
    return 2*r*PI;
}
float S(r){
    return PI*r*r;
}
float BMJ(r){
    return 4*PI*r*r;
}
float V(r){
    return (4/3)*PI*r*r*r;

 
int main ()
{
  float r=10;
  printf("  %f %f  %f %f",L(r),S(r),BMJ(r),V(r));

    return 0;
}

3.题目  输出下面的图案

   *
  ***
 *****
*******
 *****
  ***
   *
     
可以把这个图案看作两部分,从第一行到第四行,从第1行到第3行
可以观察到:第1行有3个空格,1个*
                     第2行有2个空格,3个*
                     第3行有1个空格,5个*
                    第4行有0个空格,7个*
设i为行数,j为空格数,k为*数
所以前4行有,j=4-i,k=2*i-1
 接着有      
        第1行有1个空格,5个* 
        第2行有2个空格,3个* 
        第3行有3个空格,1个* 
所以后3行有,j=i,k=7-2*i
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j,k;//代表行数,j代表空格数,k为*个数 
    
    for(i=1;i<=4;i++){
        for(j=1;j<=4-i;j++){    printf(" ");    }
        for(k=1;k<=2*i-1;k++){printf("*"); }
        printf("\n");
    } 
    
    for(i=1;i<=3;i++){
        for(j=1;j<=i;j++){    printf(" ");    }
        for(k=1;k<=7-2*i;k++){    printf("*");     }
        printf("\n");
    }
  
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值