我的C初学经历(一)

1.简述C

C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。

2 第一个C程序

[cpp]  view plain  copy
  1. #include <stdio.h>  
  2.  int main(){  
  3.       
  4.     printf("Hello World");  
  5.       
  6.     return 0 ;  
  7. }  


解释:

#include <stdio.h>就是一条预处理命令,它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作。(关于预处理后面的课程会讲)

函数就是实现代码逻辑的一个小的单元。 

3.一个C程序有且只有一个主函数,即main函数。C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口。

4.注释 C语言编译器在编译时会被自动忽略。

多行注释 /*  ..............    */

单行注释  //

5.标识符:

C 语言规定,标识符可以是字母(A~Z,a~z)数字(0~9)下划线_组成的字符串,并且第一个字符必须是字母或下划线。在使用标识符时还有注意以下几点:

(1)标识符的长度最好不要超过8位,因为在某些版本的C中规定标识符前8位有效,当两个标识符前8位相同时,则被认为是同一个标识符。 

(2)标识符是严格区分大小写的。例如Imooc和imooc 是两个不同的标识符。 

(3)标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。

(4)标识符不能是C语言的关键字。想了解更多C语言关键字的知识,请查阅WIKI。

6. 注意:在定义中不允许连续赋值,如int a=b=c=5;是不合法的

7 .如下小例子

[cpp]  view plain  copy
  1. #include<stdio.h>  
  2.   
  3. int main(){  
  4.   
  5. int age =19 ;  
  6.   
  7. printf("我今年%d\n"+age);  
  8.   
  9. return 0 ;  
  10.   
  11. }  

8.数据类型


基本类型  =======>字符型、整形、浮点类型(单、双)



[cpp]  view plain  copy
  1. #include<stdio.h>  
  2.   
  3. int main(){  
  4.   
  5. int age =19 ;  
  6.   
  7. char a ='e' ;  
  8.   
  9. float b  =12.12 ;  
  10.   
  11. printf("今年%d岁,\n",+age);  
  12. printf("性别是%c \n",+a);  
  13. printf("%f\n",+b);  
  14. return 0 ;  
  15.   
  16. }  
9. 格式化输出语句


[cpp]  view plain  copy
  1. #include<stdio.h>  
  2.   
  3. int main(){  
  4.   
  5. int age =19 ;  
  6.   
  7. char a ='e' ;  
  8.   
  9. float b  =12.12 ;  
  10.   
  11. double c = 13.14567 ;  
  12.   
  13. printf("今年%d岁,\n",age);  
  14. printf("性别是%c \n",a);  
  15. printf("%f\n",b);  
  16. printf("%f\n",c);  
  17. printf("%s\n","我是一名好孩子");  
  18. return 0 ;  
  19.   
  20. }  
如果要输出多个变量的并指定变量的位置时候,格式符还可以连用,变量之间需要用逗号隔开,如:


[cpp]  view plain  copy
  1. #include<stdio.h>  
  2.   
  3. int main(){  
  4.   
  5. int age = 18;  
  6.     float height = 1.85;  
  7.     char unit = 'm';  
  8.     printf("小明今年%d岁\n", age);  
  9.     printf("小明身高%f,%c\n", height, unit);  
  10.     printf("%s\n","小明现在在慕课网上学习IT技术");   
  11.     return 0;  
  12.   
  13. }  
10 不可改变的常量

[cpp]  view plain  copy
  1. #include <stdio.h>  
  2.  #define    POCKETMONEY  10     //定义常量及常量值  
  3.  #define   I   'S'  
  4. int main()  
  5. {  
  6.   //  POCKETMONEY = 12;  //小明私自增加零花钱对吗?  
  7.     printf("小明今天又得到%d元零花钱\n", POCKETMONEY);  
  8.     printf("%c\n",'c');  
  9.     printf("%d\n",999);  
  10.     printf("%f\n",12.12);  
  11.     printf("%c",I);  
  12.     return 0;    
  13. }  

11 自动类型转换


注:字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换


12强制类型转换

[cpp]  view plain  copy
  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     double num = 2.5;      //定义浮点型变量num并赋值为2.5  
  5.     int  num2 = (int)num ;  
  6.     printf("num的整数部分是%d\n", num2);    
  7.     return 0;  
  8. }  
13 运算符号 

      ※ 算术运算符

      ※ 赋值运算符

      ※ 关系运算符

      ※ 逻辑运算符

      ※ 三目运算符



14 自增运算符

[cpp]  view plain  copy
  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     int x = 0;  
  5.     printf("x=%d\n",x++);  
  6.     printf("x=%d\n",++x);  
  7.     return 0;  
  8. }  
15 三木运算符

表达式1 ? 表达式2 : 表达式3

[cpp]  view plain  copy
  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     int money  = 12 ;  
  5.   
  6.     float cost  =11.5 ;    
  7.       
  8.       
  9.     printf("能不能走%c",money>cost?'y':'n');  
  10.   
  11.   
  12.     return 0;      
  13. }  
16 分支结构  是否是闰年 

[cpp]  view plain  copy
  1. #include <stdio.h>  
  2. int main()   
  3. {  
  4.     int year = 2014; //今年是2014年  
  5.     //补全一下代码  
  6.     //条件:能被4整除且不能被100整除或者能被400整除的年份为闰年  
  7.     if((year%4==0&&year/100!=0)||(year%400==0)){  
  8.         printf("%s\n","是闰年");  
  9.     }else{  
  10.           
  11.         printf("%s","不是闰年");  
  12.     }  
  13.       
  14.     return 0;  
  15. }  
17 while循环

[cpp]  view plain  copy
  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     int i,sum=0;  
  5.     i=1;  
  6.     while(i<=100)  //循环条件应该是什么呢?  
  7.     {  
  8.         sum=sum+i;  
  9.          i++ ;         //这里是不是应该改变循环变量的值  
  10.     }  
  11.     printf("100以内所有整数之和为:%d\n", sum);  
  12.     return 0;  

  1. }  
  2. 18  do-while 

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. int main()  
    3. {  
    4.     int number=200;  
    5.     int year=2014;  
    6.     do{  
    7.         year++ ;  
    8.         number=number*1.2 ;  
    9.       
    10.     }while(number<1000);  
    11.       
    12.   
    13.     printf("到%d年招工规模突破1000人\n", year);  
    14.     return 0;  
    15. }  

    19  for循环

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. int main()  
    3. {  
    4.     // 定义变量sum, num  
    5.     int sum, num;    
    6.     sum = 0;  
    7.     for(num = 0; num<=10  ; num++ ) //for循环条件与num的变化值  
    8.     {    
    9.        sum=sum+num ;  
    10.     }  
    11.     printf("10以内数的和为:%d", sum);  
    12.     return 0;  
    13. }  
    20 for注意



    for循环里面的东西必须先定义好!!!!



    21.使用循环计算1-2+3-4+5-6+…-100的值


    22  输出一个正三角形


    23 打印9*9 乘法口诀


    24请使用for循环,倒序打印9*9乘法表。打印结果如下图所示 



    25找出0-50之间的所有素数,所谓素数就是只能被1和它本身整除的数字,比如:7,13,23等


    26计算1到20之间不能被3整除的数字之和


    27.

    小明参加期末考试,分数等级分为A-D,等级划分方式如下:

    90<=分数<=100 ,等级为A。

    80<=分数<90 ,等级为B。

    60<=分数<80 ,等级为C。

    分数<60 ,等级为D。


    28自定义方法 (最好放在main方法之前)

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2.   
    3. /* 自定义整型函数 sayLove() */  
    4. int sayLove()  
    5. {  
    6.     //在这里输入输出语句printf,输出内容为I Love imooc   
    7.    printf("I love Learning");  
    8.     return 0;  
    9. }  
    10.   
    11. /* 自定义整型函数 dividLine() */  
    12. int dividLine()  
    13. {  
    14.     printf("%s\n""*************");  
    15.     return 0;  
    16. }  
    17.   
    18. /* 主函数 */  
    19. int main()  
    20. {      
    21.     sayLove();  
    22.     dividLine();  
    23.     return 0;  
    24. }  
    29  有参和无参 函数调用

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. /* 考虑一下哪个输出该用无参函数哪个输出该用有参函数呢? */  
    3. int  learn(){  
    4.       
    5.     printf("小明在学习\n");  
    6.     return 0 ;  
    7. }  
    8. int learnnum(int num){  
    9.       
    10.     printf("小明学习了%d课了",num);  
    11.       
    12. }  
    13.   
    14. int main()  
    15. {  
    16.     learn();  
    17.     learnnum(3);  
    18.     return 0;  
    19. }  
    30.计算三角形的周长

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. int getGirth(int a,int b,int c)  
    3. {  
    4.     if( (a+b)<=c || (a+c)<=b || (b+c)<=a )   //判断是否为三角形  
    5.     {  
    6.         printf("不构成三角形\n");  
    7.         return 0;                                  
    8.     }  
    9.     else  
    10.     {  
    11.       int cirf = a+b+c ;     //计算三角形周长  
    12.       return cirf;  
    13.     }  
    14.          
    15. }  
    16.   
    17. int main()  
    18. {  
    19.     /* 定义三角形三边长 */  
    20.     int a, b, c;  
    21.     a = 3;  
    22.     b = 4;  
    23.     c = 5;  
    24.     printf("三角形的周长是:%d\n",getGirth(a,b,c) );  //调用周长函数  
    25.     return 0;  
    26. }  
    注意:void函数中可以有执行代码块,但是不能有返回值,另void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为:return;
    32 递归调用函数

    计算n的阶乘


    小明为了学好英语,需要每天记单词,第一天记1个,第二天记2个依次类推,到第10天的时候小明一共记了多少个单词?

    请用代码完成,算出小明第10天开始的时候会了多少个单词?

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. /* 定义获取单词数量的函数 */  
    3. int getWordNumber(int n)  
    4. {     
    5.     if(n == 1)  
    6.     {  
    7.         return 1;    //第一天只会1个单词  
    8.     }  
    9.     else{  
    10.         return getWordNumber(n-1)+n ;       //到第天会的单词数量  
    11.     }  
    12. }  
    13. int main()  
    14. {  
    15.     int num = getWordNumber(10);     //获取会了的单词数量  
    16.     printf("小明第10天记了:%d个单词。\n", num);  
    17.     return 0;  
    18. }  
    33. 变量  (如何引用外部变量)

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. void fn()  
    3. {  
    4.     static int x = 1;   //定义静态局部变量  
    5.     x*=2;  
    6.     printf("x=%d\n",x);       
    7. }  
    8.   
    9. int main()  
    10. {  
    11.     int i;  
    12.     for(i=0;i<5;i++)  
    13.     {  
    14.         fn();  
    15.     }  
    16.     extern int x;      //调用外部变量  
    17.     printf("x=%d\n",x);  
    18.     return 0;  
    19. }  
    20. int x=100;  
    34.内部函数与外部函数

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. #include "test.c"   //引用test.c文件  
    3. extern  void printLine()     //这里定义的方法对吗?  
    4. {  
    5.    printf("**************\n");     
    6. }  
    7. int main()  
    8. {  
    9.     say();  
    10.     return 0;  
    11. }  
    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. void say(){  
    3.     printLine();  
    4.     printf("I love imooc\n");  
    5.     printf("good good study!\n");  
    6.     printf("day day up!\n");  
    7.     printLine();  
    8. }  
    35 数组

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. int main()  
    3. {  
    4.     //第一种形式  
    5.     int arrFirst[3] = {1,2,3};  
    6.     //第二种形式  
    7.     int arrSecond[] = {1,2,3};  
    8.     //第三种形式  
    9.     int arrThird[3];  
    10.     //给arrThird数组每个元素初始化  
    11.     arrThird[0]=1 ;  
    12.     arrThird[1]=2 ;  
    13.     arrThird[2]=3 ;  
    14.     //输出第一个数组中的第二个元素  
    15.     printf("%d\n", arrFirst[1]);  
    16.     //输出第二个数组中的第二个元素  
    17.     printf("%d\n", arrSecond[1]);  
    18.     //输出第三个数组中的第二个元素  
    19.     printf("%d\n", arrThird[1]);  
    20.     return 0;  
    21. }  
    36 遍历数组

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. int main()  
    3. {  
    4.     int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};  
    5.       
    6.    int i  ;   //必须先声明变量i  
    7.    for(i=0;i<=9;i++){  
    8.        printf("%d\n",arr[i]);  
    9.          
    10.    }  
    11.   
    12.     return 0;  
    13. }  

    37 传递数组

    [cpp]  view plain  copy
    1. #include<stdio.h>  
    2.   
    3. void temp(int arr[]){  
    4. int i ;  
    5. for(i=0;i<=4;i++){  
    6.   
    7. printf("%d",arr[i]);  
    8.   
    9. }  
    10. }  
    11. int main(){  
    12.   
    13. int arr[5]={1,2,3,4,5};  
    14. //传递数组  
    15. temp(arr);  
    16. return 0  ;  
    17. }  
    38. 经典冒泡排序



    另一种写法

    [cpp]  view plain  copy
    1. #include <stdio.h>    
    2.     
    3. void swap(int *a, int *b); //交换两个数    
    4.     
    5. int main()    
    6. {    
    7.     int     str[10];    
    8.     int     i, j;    
    9.     //初始化数组为10 9 8 7 6 5 4 3 2 1    
    10.     for (i = 0; i < 10; i++)    
    11.     {    
    12.         str[i] = 10 - i;    
    13.     }    
    14.     //排序,从a[0]开始排,从小到大    
    15.     for (i = 0; i < 10; i++)    
    16.     {    
    17.         for (j = i + 1; j < 10; j++)    
    18.         {    
    19.             if (str[i] > str[j])    
    20.             {    
    21.                 swap(&str[i], &str[j]);    
    22.             }    
    23.         }    
    24.     }    
    25.         //将十个数输出    
    26.     for (i = 0; i < 10; i++)    
    27.         printf("%d\n", str[i]);    
    28.     return    0;    
    29. }    
    30. void swap(int *a, int *b)    
    31. {    
    32.     int   c;    
    33.      c = *a;    
    34.     *a = *b;    
    35.     *b =  c;    
    36. }    
    39.查询数组中某个元素


    40 字符串

    在C语言中,是没有办法直接定义字符串数据类型的,但是我们可以使用数组来定义我们所要的字符串。一般有以下两种格式:

    1、char 字符串名称[长度] = "字符串值";

    2、char 字符串名称[长度] = {'字符1','字符2',...,'字符n','\0'};

    注意:

    1、[]中的长度是可以省略不写的;

    2、采用第2种方式的时候最后一个元素必须是'\0','\0'表示字符串的结束标志;

    3、采用第2种方式的时候在数组中不能写中文

    在输出字符串的时候要使用:printf(“%s”,字符数组名字);或者puts(字符数组名字);。例如:



    .

    41. 声明二维数组

    [cpp]  view plain  copy
    1. #include <stdio.h>  
    2. int main()  
    3. {  
    4.     //使用第一种方式初始化方式声明并初始化二维数组arr1  
    5.     int arr1[2][2]={{10,20},{30,40}};  
    6.     int arr3[][2]={{20,30},{40,50}};  
    7.     //使用第二种方式初始化方式声明并初始化二维数组arr2  
    8.     int arr2[2][2];  
    9.     arr2[0][0]=10;  
    10.     arr2[0][1]=20;  
    11.     arr2[1][0]=30;  
    12.     arr2[1][1]=40;  
    13.     return 0;      
    14. }  
    二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值