zoukankan      html  css  js  c++  java
  • 小学生都看得懂的C语言入门(1): 基础/判别/循环

    c基础入门, 小学生也可以都看得懂!!!!

    安装一个编译器, 这方面我不太懂, 安装了DEV-C++  ,体积不大,30M左右吧, 感觉挺好用,初学者够了.

    介绍下DEV 的快键键:

    恢复 Ctrl+Z  重做 Ctrl+Y  剪切 Ctrl+X  拷贝 Ctrl+C  粘贴 Ctrl+V  搜索替换内容 Ctrl+F
    编译 F9  运行 F10  编译运行 F11  设置注释 Ctrl+/ 取消注释再重复一次即可  (keep it in heart!)
    复制行 Ctrl+E   删除行 Ctrl+D
    整体左移一个tab位置 shift+tab   整体右移一个tab位置 tab
    整体代码缩进对齐 Ctrl+Shift+A

    1. hello world 

    C基础框架

    #include <stdio.h>
    int main()
    {
    printf("hello world");
    return 0;
    }
    #include <stdio.h>
    int main()
    {
    printf("23+32=%d
    ",23+32);
    int price=0; //定义变量类型与初始值   可以定义两个变量int price1,price2   
    printf("please input the price:");
    scanf("%d",&price); //输入一个数 & 与指针有关 若不是输入整数,则默认为初值0 
    int change=100-price;
    printf("找您%d元",change);
    return 0;
    }
    #include <stdio.h>
    int main()
    {
        int a=0;
        int b=0;
         
        scanf("%d %d",&a,&b); //也可以是逗号,那么输入也是1,3 输入要遵循"%d %d"形式 
        printf("%d %d
    ",a,b); 
    return 0;
    }

    2.数据类型, int类型的数据之间的运算得到的还是int 1/10=0, 但是1.0/10=0.1了

    #include <stdio.h>
    int main()
    {
    int foot=5;
    int inch=7;  //整数的运算结果还是整数,会导致结果不准确,只需要将/12 改成12.0!!  10/3=3,10.0/3=3.333333 
    //scanf("%d %d",&foot,&inch) ;
    
    printf("身高是%f米
    ",((foot+inch/12)*0.3048));
    
    printf("身高是%f米
    ",((foot+inch/12.0)*0.3048));
    //也可以定义变量中修改
    double foot1=5; //双精度浮点数 
    double inch1=7;
    //scanf("%lf %lf",&foot1,&inch)1 ;  //改成lf格式 
    printf("身高是%f米
    ",((foot1+inch1/12)*0.3048)); 
    return 0;
    }

    得到:

    身高是1.524000米
    身高是1.701800米
    身高是1.701800米

    3. 计算时间差:

    #include <stdio.h>
    int main()
    {
    int h1,m1;
    int h2,m2;
    scanf("%d %d",&h1,&m1);
    scanf("%d %d",&h2,&m2);
    int t1=h1*60+m1;
    int t2=h2*60+m2;
    int t=t2-t1;
    printf("the diff of the time is %d小时%d分钟",t/60,t%60);
    return 0;
    }

    输入:

    2 40
    3 12
    the diff of the time is 0小时32分钟

    用if 语句计算时间差修改

    #include <stdio.h>
    int main()
    {
    int h1,m1;
    int h2,m2;
    scanf("%d %d",&h1,&m1);
    scanf("%d %d",&h2,&m2);
    int ih=h2-h1;
    int im=m2-m1;
    if (im<0) {
        im=60+im;
        ih--;
    }
    printf("the diff of time is %d hours %d minutes",ih ,im);
    return 0;
    }

    2 15

    3 40
    the diff of time is 1 hours 25 minutes

    4.交换两个数

    #include <stdio.h>
    int main()
    {
    // 运算顺序 * / % + - =赋值  a=b=6 表示,a=(b=6)赋值是从右向左!! 
    //
    int a=5;
    int b=6;
    int t;
    t=a;
    a=b;
    b=t;
    printf("a is %d,b is %d",a,b);
    return 0;
    }

    a is 6,b is 5

    5. n++ ++n区别

    #include <stdio.h>
    int main()
    {
    // 调试之前一定要先编译!!!很重要 
    // 复合赋值 s+=1, s*=a+b  n++  n-- 分别加1 减1 也有++n,--n,  
    //结果不同,n++ 表示+1之前的值,++n 是加一之后的值 ,
    
    int a;
    a=10;
    printf("a++=%d
    ",a++); //10
    printf("a=%d
    ",a);//11
    printf("++a=%d
    ",++a); //12
    printf("a=%d
    ",a); //12
    return 0;
    }

    a++=10
    a=11
    ++a=12
    a=12

    6.关系运算符

    #include <stdio.h>
    int main()
    {
    //关系运算符
    printf("%d 
    ",5>3); //1
    printf("%d 
    ",5<=3); //0
    printf("%d 
    ",5<=3+4); //1 加法优先 
    //关系运算符的优先级 大于 赋值  int x=a>0  就是先判别a>0 再赋值 
    // 6>5>4 从左向右判别, 最后等于0 
    //   /*   */ 多行注释 
    return 0;
    }

    7. if else语句

    #include <stdio.h>
    int main()
    {
    // 语法 if(){}else{}
    int a,b;
    printf("please input two integers:");
    scanf("%d %d",&a,&b);
    int max=0;
    if(a>b){
    max=a;
    }else{
    max=b;
    }
    printf("%d",max); 
    return 0;
    }

    另一种:

    #include <stdio.h>
    int main()
    {
    // 语法 if(){}else{}
    int a,b;
    printf("please input two integers:");
    scanf("%d %d",&a,&b);
    int max=b;
    if(a>b){
        max=a;
    } 
    printf("%d",max); 
    return 0;
    }

    注意: if 要是没有{} 时, 紧跟着if() 后面的语句作为条件成立时的执行语句!

    8.应用实例-计算工资

    #include <stdio.h>
    int main()
    {
    const double rate=8.25;
    const int standard=40;
    double pay=0.0;
    int hours;
    printf("please input working hours:");
    scanf("%d",&hours);
    printf("
    ");
    if (hours>standard)
    pay=standard*rate+(hours-standard)*rate*1.5;
    else
    pay=hours*rate;
    printf("salaty is %f:
    ",pay);
    }

    please input working hours:100

    salaty is 1072.500000:

    9.循环语句

    实例1

    #include <stdio.h>
    int main()
    {
    //循环 while(条件判断){循环体} 循环体中要有改变条件的程序,否则为死循环 
    //判断一个数字是几位数
    int x;
    int n=0;
    scanf("%d",&x);
    n++;//一定有一位数了 
    x/=10; 
    while(x>0){
        n++;
        x/=10;
    } 
    printf("%d
    ",n); 
    return 0;
    }

    对比以下

    #include <stdio.h>
    int main()
    {
    int x;
    int n=0;
    scanf("%d",&x);
    while(x>0){
        n++;
        x/=10;
    } 
    printf("%d
    ",n); 
    return 0;
    }
    //这个方法不能数0 .输入0 得到的是0 不是1

    可以增加if 判别进行修正

    #include <stdio.h>
    int main()
    {
    int x;
    int n=0;
    scanf("%d",&x);
    if(x>0) {
    
    while(x>0){
        n++;
        x/=10;
    } }else{
        n=1;
    }
    printf("%d
    ",n); 
    return 0;
    }

    也可以用 do while 修正

    #include <stdio.h>
    int main()
    {
    //do-while 循环 do{循环体语句} while(循环条件); 第一次进入不用判别条件 
    int x;
    int n=0;
    scanf("%d",&x);
    do{    
        n++;
        x/=10; //这两行可以交换位置 
    } while(x>0);
    printf("%d
    ",n); 
    return 0;
    }
    // 输入0 得到1

    实例2--阶乘

    #include <stdio.h>
    int main()
    {
    //阶乘
    int i=1;
    int n;
    scanf("%d",&n);
    int f=1;
    while(i<=n){
        f*=i;
        i++;
    } 
    printf("%d!=%d
    ",n,f) ;
    return 0;
    }

    10

    10!=3628800

    用for 修改上述

    #include <stdio.h>
    int main()
    {
    //for 循环 for(初值;终值;步长变化){} 
    int i=1;
    int n=4;
    //scanf("%d",&n);
    int f=1;
    for (i=1;i<=n;i++){
        f*=i;
    } 
    printf("%d!=%d
    ",n,f) ; 
    return 0;
    }

    4!=24

    进一步改进:

    #include <stdio.h>
    int main()
    {
    //改进 i可以从2开始,省去一轮循环,并且当n=1时,循环不被执行,正确!! 
    int i=1;
    int n=4;
    int f=1;
    for (i=2;i<=n;i++){
        f*=i;
    } 
    printf("%d!=%d
    ",n,f) ; 
    return 0;
    }

    再次改进 从n开始乘

    #include <stdio.h>
    int main()
    {
    //改进 从n开始乘 
    int i=1;
    int n=4;
    int f=1;
    for (i=n;i>1;i--){
        f*=i;
    } 
    printf("%d!=%d
    ",n,f) ; 
    return 0;
    }

    最后改进, 不用引入变量i, 让n自己变小

    #include <stdio.h>
    int main()
    {
    //改进 让n自己变小 ,不用变量i 
    int n=4;
    int f=1; 
    int n0=n;
    for (n=n;n>1;n--){
        f*=n;
    } 
    //或者
    //for (;n>1;n--){
    //    f*=n;
    //}
    printf("%d!=%d
    ",n0,f) ;  
    return 0;
    }

    注意for 的初始值 终值.

    //int i;
    //for(i=0;i<5;i++) {
    //    printf("i=%d",i); //0 1 2 3 4
    //}
    //printf("
    最后i=%d",i); //循环结束之后i=5 
    
    
    for(i=1;i<=5;i++) {
        printf("i=%d",i); //12345
    }
    printf("
    最后i=%d",i); //循环结束之后i=6
    
    //上述两个循环同样走5次,但是结果不同 int i;
    //for(初始条件;条件;每轮动作) 

    最后提一个问题....

    提问待解决??

    #include <stdio.h>
    int main()
    {
    //int i=1;//定义可以放在for 循环里面,因为只有在循环中才用到了i, for 之外没有用到 
    int n=4;
    int f=1;
    for (int i=1;i<=n;i++){
        f*=i;
    } 22
    printf("%d!=%d
    ",n,f) ; 
    
    //这个出错了  只有在C99 中才可以在for中定义变量 ,如何修正??? 
    return 0;
    }
    ----END---- HAVE A GOOD ONE! 以上为本人课余自学工具书/blog的笔记整理, 常有更新, 非100%原创!且读且学习。
  • 相关阅读:
    为Android系统内置Java应用程序测试Application Frameworks层的硬件服务
    为Android系统的Application Frameworks层增加硬件访问服务
    为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
    为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
    为Android系统内置C可执行程序测试Linux内核驱动程序
    Android内核驱动程序的编写和编译过程
    添加一个Application Framework Service
    getopt()函数
    Google推Android新开发语言Sky:流畅度 秒iOS
    开发人员要避免的七个心态问题
  • 原文地址:https://www.cnblogs.com/xuying-fall/p/9013547.html
Copyright © 2011-2022 走看看