C语言总结

1.简述C

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

2 第一个C程序

 

#include <stdio.h>
 int main(){
    
    printf("Hello World");
    
    return 0 ;
}


 

 

 

解释:

#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 .如下小例子

 

#include<stdio.h>

int main(){

int age =19 ;

printf("我今年%d\n"+age);

return 0 ;

}


8.数据类型

 

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

 

#include<stdio.h>

int main(){

int age =19 ;

char a ='e' ;

float b  =12.12 ;

printf("今年%d岁,\n",+age);
printf("性别是%c \n",+a);
printf("%f\n",+b);
return 0 ;

}

9.格式化输出语句

 

 

#include<stdio.h>

int main(){

int age =19 ;

char a ='e' ;

float b  =12.12 ;

double c = 13.14567 ;

printf("今年%d岁,\n",age);
printf("性别是%c \n",a);
printf("%f\n",b);
printf("%f\n",c);
printf("%s\n","我是一名好孩子");
return 0 ;

}

如果要输出多个变量的并指定变量的位置时候,格式符还可以连用,变量之间需要用逗号隔开,如:

 

 

 

#include<stdio.h>

int main(){

int age = 18;
	float height = 1.85;
	char unit = 'm';
	printf("小明今年%d岁\n", age);
	printf("小明身高%f,%c\n", height, unit);
	printf("%s\n","小明现在在慕课网上学习IT技术"); 
	return 0;

}

 

10不可改变的常量

 

 

 

 

#include <stdio.h>
 #define    POCKETMONEY  10     //定义常量及常量值
 #define   I   'S'
int main()
{
  //  POCKETMONEY = 12;  //小明私自增加零花钱对吗?
    printf("小明今天又得到%d元零花钱\n", POCKETMONEY);
    printf("%c\n",'c');
    printf("%d\n",999);
    printf("%f\n",12.12);
    printf("%c",I);
    return 0;  
}

11 自动类型转换

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

 

12强制类型转换

 

 

#include <stdio.h>
int main()
{
    double num = 2.5;      //定义浮点型变量num并赋值为2.5
    int  num2 = (int)num ;
    printf("num的整数部分是%d\n", num2);  
    return 0;
}

13 运算符号 

 

 

      ※ 算术运算符

      ※ 赋值运算符

      ※ 关系运算符

      ※ 逻辑运算符

      ※ 三目运算符



14 自增运算符

 

#include <stdio.h>
int main()
{
    int x = 0;
    printf("x=%d\n",x++);
    printf("x=%d\n",++x);
    return 0;
}

15 三木运算符

 

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

 

#include <stdio.h>
int main()
{
	int money  = 12 ;

	float cost  =11.5 ;  
	
	
	printf("能不能走%c",money>cost?'y':'n');


    return 0;    
}

16 分支结构  是否是闰年 

 

 

#include <stdio.h>
int main() 
{
    int year = 2014; //今年是2014年
    //补全一下代码
    //条件:能被4整除且不能被100整除或者能被400整除的年份为闰年
    if((year%4==0&&year/100!=0)||(year%400==0)){
        printf("%s\n","是闰年");
    }else{
        
        printf("%s","不是闰年");
    }
    
    return 0;
}

17 while循环

 

 

#include <stdio.h>
int main()
{
    int i,sum=0;
    i=1;
    while(i<=100)  //循环条件应该是什么呢?
    {
        sum=sum+i;
         i++ ;         //这里是不是应该改变循环变量的值
    }
    printf("100以内所有整数之和为:%d\n", sum);
    return 0;
}

18  do-while 

 

 

#include <stdio.h>
int main()
{
    int number=200;
    int year=2014;
	do{
		year++ ;
		number=number*1.2 ;
	
	}while(number<1000);
	

    printf("到%d年招工规模突破1000人\n", year);
    return 0;
}


19  for循环

 

 

#include <stdio.h>
int main()
{
    // 定义变量sum, num
    int sum, num;  
    sum = 0;
    for(num = 0; num<=10  ; num++ ) //for循环条件与num的变化值
    {  
       sum=sum+num ;
    }
    printf("10以内数的和为:%d", sum);
    return 0;
}

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方法之前)

 

#include <stdio.h>

/* 自定义整型函数 sayLove() */
int sayLove()
{
    //在这里输入输出语句printf,输出内容为I Love imooc 
   printf("I love Learning");
    return 0;
}

/* 自定义整型函数 dividLine() */
int dividLine()
{
    printf("%s\n", "*************");
    return 0;
}

/* 主函数 */
int main()
{    
    sayLove();
    dividLine();
    return 0;
}

29  有参和无参 函数调用

 

 

#include <stdio.h>
/* 考虑一下哪个输出该用无参函数哪个输出该用有参函数呢? */
int  learn(){
    
    printf("小明在学习\n");
    return 0 ;
}
int learnnum(int num){
    
    printf("小明学习了%d课了",num);
    
}

int main()
{
    learn();
    learnnum(3);
    return 0;
}

30.计算三角形的周长

 

 

#include <stdio.h>
int getGirth(int a,int b,int c)
{
    if( (a+b)<=c || (a+c)<=b || (b+c)<=a )   //判断是否为三角形
    {
        printf("不构成三角形\n");
        return 0;                                
    }
    else
    {
      int cirf = a+b+c ;     //计算三角形周长
      return cirf;
    }
       
}

int main()
{
    /* 定义三角形三边长 */
    int a, b, c;
    a = 3;
    b = 4;
    c = 5;
    printf("三角形的周长是:%d\n",getGirth(a,b,c) );  //调用周长函数
    return 0;
}

注意:void函数中可以有执行代码块,但是不能有返回值,另void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为:return;
32 递归调用函数

 

计算n的阶乘

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

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

#include <stdio.h>
/* 定义获取单词数量的函数 */
int getWordNumber(int n)
{   
    if(n == 1)
    {
        return 1;    //第一天只会1个单词
    }
    else{
        return getWordNumber(n-1)+n ;       //到第天会的单词数量
    }
}
int main()
{
    int num = getWordNumber(10);     //获取会了的单词数量
    printf("小明第10天记了:%d个单词。\n", num);
    return 0;
}

33. 变量  (如何引用外部变量)

 

#include <stdio.h>
void fn()
{
    static int x = 1;   //定义静态局部变量
    x*=2;
    printf("x=%d\n",x);     
}

int main()
{
    int i;
    for(i=0;i<5;i++)
    {
        fn();
    }
    extern int x;      //调用外部变量
    printf("x=%d\n",x);
    return 0;
}
int x=100;

34.内部函数与外部函数

 

 

#include <stdio.h>
#include "test.c"   //引用test.c文件
extern  void printLine()     //这里定义的方法对吗?
{
   printf("**************\n");   
}
int main()
{
    say();
    return 0;
}
#include <stdio.h>
void say(){
    printLine();
    printf("I love imooc\n");
    printf("good good study!\n");
    printf("day day up!\n");
    printLine();
}

35 数组

 

 

#include <stdio.h>
int main()
{
    //第一种形式
    int arrFirst[3] = {1,2,3};
    //第二种形式
    int arrSecond[] = {1,2,3};
    //第三种形式
    int arrThird[3];
    //给arrThird数组每个元素初始化
    arrThird[0]=1 ;
    arrThird[1]=2 ;
    arrThird[2]=3 ;
    //输出第一个数组中的第二个元素
    printf("%d\n", arrFirst[1]);
    //输出第二个数组中的第二个元素
    printf("%d\n", arrSecond[1]);
    //输出第三个数组中的第二个元素
    printf("%d\n", arrThird[1]);
    return 0;
}

36 遍历数组

 

 

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

    return 0;
}

37 传递数组

 

#include<stdio.h>

void temp(int arr[]){
int i ;
for(i=0;i<=4;i++){

printf("%d",arr[i]);

}
}
int main(){

int arr[5]={1,2,3,4,5};
//传递数组
temp(arr);
return 0  ;
}

38. 经典冒泡排序

 


另一种写法

 

#include <stdio.h>  
  
void swap(int *a, int *b); //交换两个数  
  
int main()  
{  
    int     str[10];  
    int     i, j;  
    //初始化数组为10 9 8 7 6 5 4 3 2 1  
    for (i = 0; i < 10; i++)  
    {  
        str[i] = 10 - i;  
    }  
    //排序,从a[0]开始排,从小到大  
    for (i = 0; i < 10; i++)  
    {  
        for (j = i + 1; j < 10; j++)  
        {  
            if (str[i] > str[j])  
            {  
                swap(&str[i], &str[j]);  
            }  
        }  
    }  
        //将十个数输出  
    for (i = 0; i < 10; i++)  
        printf("%d\n", str[i]);  
    return    0;  
}  
void swap(int *a, int *b)  
{  
    int   c;  
     c = *a;  
    *a = *b;  
    *b =  c;  
}  

39.查询数组中某个元素

 


40 字符串

 

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

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

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

注意:

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

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

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

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



.

 

41. 声明二维数组

 

 

#include <stdio.h>
int main()
{
    //使用第一种方式初始化方式声明并初始化二维数组arr1
    int arr1[2][2]={{10,20},{30,40}};
    int arr3[][2]={{20,30},{40,50}};
    //使用第二种方式初始化方式声明并初始化二维数组arr2
    int arr2[2][2];
    arr2[0][0]=10;
    arr2[0][1]=20;
    arr2[1][0]=30;
    arr2[1][1]=40;
    return 0;    
}

二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量

 

 

我是可爱的小尾巴~~   某慕视频 Q32138446038  

 



 

 

  • 50
    点赞
  • 180
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值