文档章节

c语言练习

 杨勇汉
发布于 2015/02/01 14:04
字数 922
阅读 2
收藏 0

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 






本文转载自:http://blog.csdn.net/rhljiayou/article/details/7328937

粉丝 2
博文 69
码字总数 0
作品 0
东城
私信 提问
[iOS]C语言知识点系列视频整理

C语言知识点系列视频 目录 C语言技术视频-01-变量的定义 C语言技术视频-02-程序分支结构(if...else) C语言技术视频-03-程序分支结构(switch) C语言技术视频-04-程序循环结构(while{}) C语言技...

浩浩老师
2015/10/13
74
0
考研-专业课-c语言

为了我家娘子,猪猪臭 本人计划考研:报考学校北京工业大学--计算机 专业课编号985:教材为C语言程序设计案例教程和严蔚敏的数据结构那本 我知道 本书是没有答案的 下面的全都是 自己写的 并在...

20111564
2014/10/16
0
0
C语言学习很迷茫!请求指点

大家好,我自学过一段时间C语言,但是现在不知道自己能够利用C语言做什么?请有经验的大牛帮助指点一下,我应该按照什么样的顺序学习,最好能告诉我应该按那本书的顺序看书,或者应该自己怎么...

coperator
2012/10/11
539
12
求关于C语言练习的题目

我已经看C语言好久了,看了《The C programming language》、《C traps and pitfalls》、《Pointers on C》,感觉对其整体和某些细节的掌握差不多了,然后就想拿些好的例子练习练习,用以更好...

姚亚楠
2013/03/28
220
7
译 | 我是如何爱上Go语言的

我和编译型编程语言 : 火花不再 在攻读博士学位的时间里,我对用python、R语言和unix shell脚本解决问题和编写代码感到得心应手。为了提高自己的技能,我想,学习用较低级的编译型编程语言进...

程序师
2018/07/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 小结及习题

小结 HTML表单提交的方法有get方法和post方法,get方法的作用是从指定的资源请求数据,post方法的作用是向指定的资源提交要被处理的数据。HTML表单一直都是Web的核心技术之一,有了它我们才能...

老码农的一亩三分地
25分钟前
14
0
向maven工程中导入自己封装好的jar包方法

1.打开cmd窗口 输入并执行:mvn install:install-file -DgroupId=com.test   -DartifactId=ptest -Dversion=0.1  -Dfile=E:\test\test-0.1.0.jar    -Dpackaging=jar注:Dgr......

gantaos
27分钟前
3
0
【jQuery基础学习】09 jQuery与前端(这章很水)

本文转载于:专业的前端网站➨【jQuery基础学习】09 jQuery与前端(这章很水) 这章主要是将如何将jQuery应用到网站中,或者说其实就是一些前端知识,对于我这种后端程序来说其实还是蛮有用的...

前端老手
39分钟前
11
0
深度科技与金山云完成兼容互认证 共同促进我国软件生态发展

近日,深度科技与金山云完成兼容互认证工作,经双方共同严格测试,深度操作系统ARM服务器版软件V15与金山云分布式数据库软件DragonBase V1.0相互兼容、稳定运行,可以为企业级应用提供全面保...

后浪涛涛
40分钟前
8
0
Less导入选项

Less 提供了CSS @import CSS规则的几个扩展,以提供更多的灵活性来处理外部文件。 语法: @import (keyword) "filename"; 以下是导入指令的相关详情: reference,使用较少的文件但不输出。 ...

凌兮洛
56分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部