c语言练习

1、指针练习:交换两个指针变量的值

一级指针:*p,*q;

int a=0,b=12;
    int *p=&a,*q=&b;
    printf("交换前:\n%d,%d,%d\n",p,*p,&p);
    printf("%d,%d,%d\n",q,*q,&q);
    swap(p, q);  
    printf("交换后:\n%d,%d,%d\n",p,*p,&p);
    printf("%d,%d,%d\n",q,*q,&q);


void swap(int *x,int *y){
 /*不用中间变量
    用异或运算 同样得到结果*/
    *x ^= *y;     
    *y ^= *x;     
    *x ^= *y;
     
}
输出结果:

交换前:

1606416820,0,1606416808

1606416816,12,1606416800

交换后:

1606416820,12,1606416808

1606416816,0,1606416800

交换两个指针变量所指向的地址:
int a=0,b=12;
    int *p=&a,*q=&b;
    printf("交换前:\n%d,%d,%d\n",p,*p,&p);
    printf("%d,%d,%d\n",q,*q,&q);
    swap(&p, *q);  
    printf("交换后:\n%d,%d,%d\n",p,*p,&p);
    printf("%d,%d,%d\n",q,*q,&q);

void swap(int *x,int *y){
 /*不用中间变量
    用异或运算 同样得到结果*/
    *x ^= *y;     
    *y ^= *x;     
    *x ^= *y;
     
}
输出结果:

交换前:

1606416820,0,1606416808

1606416816,12,1606416800

交换后:

1606416816,12,1606416808

1606416820,0,1606416800

用二级指针交换两个一级指针变量所指向的地址:

int a=2;
    int b=3;
    int *p=&a;
    int *q=&b;
    int **pp=&p;//定义二级指针
    int **qq=&q;//定义二级指针
    printf("交换前:\n%d,%d,%d  \n",p,*p,&p);
    printf("%d,%d,%d \n",q,*q,&q);

    swap(pp,qq);
    printf("交换后:\n%d,%d,%d   \n",p,*p,&p);
    printf("%d,%d,%d \n",q,*q,&q);

void swap(int **x,int **y){
    int * temp;
    temp=*x;
    *x=*y;
    *y=temp;
}

输出结果:

交换前:

1606416812,2,1606416800  

1606416808,3,1606416792 

交换后:

1606416808,3,1606416800   

1606416812,2,1606416792 


2、打印出九九乘法表

void jiujiu(){
    for(int i=1;i<10;i++){
        for(int j=1;j<i+1;j++){           
            printf("%d*%d=%d\t",j,i,i*j);            
        }
        printf("\n");
    }
}

输出结果:

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

1*4=4 2*4=8 3*4=12 4*4=16

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

3、任意输入两个整数,用两种方法输出最大的那个,分别用条件语句和算术运算得出最大值;

//第一种方法:判断语句
void bijiao1(){
    int a,b;
    printf("请输入两个整数a,b:");
    scanf("%d%d",&a,&b);
    int max=a>b?a:b;
    printf("最大值是:%d\n",max);
}
//第二种方法:算术运算
void bijiao2(){
    int a,b;
    printf("请输入两个整数a,b:");
    scanf("%d%d",&a,&b);
    int max=((a+b)+abs(a-b))/2;//如果想得出最小,请写:int min=((a+b)-abs(a-b))/2;
    printf("最大值是:%d\n",max);
}
输出结果:

请输入两个整数a,b:1 2

最大值是:2

请输入两个整数a,b:3 4

最大值是:4

4、打印一个心形:

printf("  * *   * *\n");
    printf(" *    *    *\n");
    printf(" *         * \n");
    printf("  *       *\n");
    printf("   *     *\n");
    printf("    *   *\n");
    printf("      *\n");

5、打印出杨辉三角形

#include <stdio.h>

int main (int argc, const char * argv[])
{
    int a[10][10];
    //把所有一位上的和末位上的赋成1
    for(int i=0;i<10;i++){
        a[i][0]=1;
        a[i][i]=1;
        
    }
    //a[i][j]是它上面的左右两 个
    for(int i=2;i<10;i++){
        for(int j=1;j<i;j++){
            a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
    }
    //打印出杨辉三角形
    for(int i=0;i<10;i++){
        //输出前面空格
        for(int s=i;s<10;s++){
            printf(" ");
        }
        for(int j=0;j<=i;j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

输出结果:

          1 

         1 1 

        1 2 1 

       1 3 3 1 

      1 4 6 4 1 

     1 5 10 10 5 1 

    1 6 15 20 15 6 1 

   1 7 21 35 35 21 7 1 

  1 8 28 56 70 56 28 8 1 

 1 9 36 84 126 126 84 36 9 1 






转载于:https://my.oschina.net/u/139546/blog/374100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值