C语言学习2

1、重温(用函数的写法比较两个数的大小)
//求两个数的较大值
#include <stdio.h>

int Max(int x,int y)
{
    if(x>y)
        return x;
    else
        return y;
}

int main()
{
    int num1 = 10;
    int num2 = 20;
    int max = 0;
    max = Max(num1,num2);
    printf("max = %d\n",max);

	return 0;
}

位操作符取反的使用


#include <stdio.h>
int main()
{
    int a = 0;//4个字节,32bit位
    int b =~a;//b是有符号的整型
    //`--按二进制位取反
    //00000000000000000000000000000000
    //11111111111111111111111111111111
    printf("%d\n",b);//打印的是这个数的源码
    //源码、反码、补码
    //负数在内存中存储的时候,存储的是二进制的补码
    //11111111111111111111111111111111 补码
    //11111111111111111111111111111110 反码
    //10000000000000000000000000000001 原码
	return 0;
}

前置、后置++ – 的区别

#include <stdio.h>
int main()
{
   int a = 10;
//   int b = a++;//后置++,先使用 再++;
//    int b=++a;//前置++,先++,在使用
//    int b = a--;
    int b = --a;
   printf("a = %d b = %d\n",a,b);
	return 0;
}
//a++ 输出a=11 b=10
//++a 输出a=11 b=11
//a-- 输出a=9 b=10
//--a 输出a=9 b=9

条件操作符

#include <stdio.h>
int main()
{
  int a = 10;
  int b = 20;
  int max = 0;
  max = (a>b? a:b);
  if(a>b)
    max = a;
  else
    max = b;
	return 0;
}

下标引用、函数调用

#include <stdio.h>
int Add(int x ,int y)
{
    int z = 0;
    z = x+y;
    return z;
}
int main()
{
//    int arr[10]={0};
//    arr[4];//[]--下标引用操作符
    int a = 10;
    int b = 20;
    int sum = Add(a,b);//()--函数调用操作符

	return 0;
}
2、常见的关键字

在这里插入图片描述
关键词typedef

#include <stdio.h>
int main()
{

//    register int a = 10;//把a定义成寄存器变量
    //typedef--类型定义
    typedef unsigned int u_int;
    unsigned int num = 20;
    u_int num2 = 20;
	return 0;
}

关键词static

#include <stdio.h>
void test()
{
    static int a=1;//a是一个静态的局部变量
    a++;
    printf("a = %d\n",a);//2 3 4 5 6 
}
int main()
{
    int i = 0;
    while(i<5)
    {
        test();
        i++;
    }
	return 0;
}
#include <stdio.h>
//static 修饰局部变量
//局部变量的生命周期变长
//static 修饰全局变量
//改变了变量的作用域--让静态的全局变量只能在自己所在的源文件内部使用
int main()
{
    //extern---声明外部符号的
    extern int g_val;
    printf("g_val= %d\n",g_val)
	return 0;
}
#include <stdio.h>
//#define 定义标识符常亮
//#define MAX 100
//#define 可以定义宏-带参数
Max(int x,int y)
{
    if(x>y)
        return x;
    else
        return y;
}
//宏的定义
#define MAX(X,Y)(X>Y?X:Y)
int main()
{
    //int a = MAX;
    int a = 10;
    int b = 20;
    //函数
    int max = Max(a,b);
    printf("max = %d\n",max);
    //宏的方式
    max = MAX(a,b);
    //max = (a>b?a:b);
    printf("max =%d\n",max);
	return 0;
}
3、指针
#include <stdio.h>
int main()
{
    int a = 0;
    int *p =&a;//有一种变量是用来存放地址的--指针变量
    printf("%p\n",&a);
    printf("%p\n",p);
    *p = 20;//* --解引用操作符
    printf("a= %d\n",a);
	return 0;
}

指针变量的大小:指针大小在32位平台是4个字节,64位平台是8个字节

#include <stdio.h>
int main()
{
    char ch = 'w';
    char *pc = &ch;
    printf("%d\n",sizeof(pc));
    *pc = 'a';
    printf("%c\n",ch);
	return 0;
}
#include <stdio.h>
int main()
{
    int a = 10;
//    printf("%p\n",&a);
    int* p = &a;//p是一个变量--指针变量
//    printf("%p\n",p);
    *p = 20;//* --解引用操作符/间接访问操作符
    printf("a= %d\n",a);
	return 0;
}
#include <stdio.h>
int main()
{
   double d = 3.14;
   double* pd =&d;
   *pd = 5.5;
   printf("%lf\n",d);
   printf("%lf\n",*pd);
   printf("%d\n",sizeof(pd));
	return 0;
}
#include <stdio.h>
int main()
{
    printf("%d\n",sizeof(char*));
    printf("%d\n",sizeof(int*));
    printf("%d\n",sizeof(short*));
    printf("%d\n",sizeof(double*));
	return 0;
}
4、结构体–我们自己创造出来的一种类型
#include <stdio.h>
#include <string.h>
//创建一个结构体类型
struct Book
{
    char name[20];//C语言程序设计
    short price;//55
};

int main()
{
    //利用结构体类型创建该类型的结构体变量
    struct Book b1 = {"C语言程序设计",55};
    strcpy(b1.name,"C++");//strcpy-string copy --字符串拷贝-库函数-string.h
    struct Book *pb = &b1;
    //利用pb打印出我的书名和价格
    //. 结构体变量.成员
    //->  结构体指针->成员
    printf("%s\n",pb->name);
    printf("%d\n",pb->price);
//    printf("%s\n",(*pb).name);
//    printf("%d\n",(*pb).price);
//    printf("书名:%s\n",b1.name);
//    printf("价格:%d元\n",b1.price);
//    b1.price=15;
//    printf("修改后的价格%d\n",b1.price);
	return 0;
}
5、分支(选择)语句和循环语句

分支语句:if switch
循环语句:while for do while
语法结构:
if(表达式)
语句1;
else
语句2;

//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;

#include <stdio.h>
int main()
{
    int age = 120;
    if(age<18)
        printf("未成年\n");
    else if(18<=age && age<28)
        printf("青年\n");
    else if(age>=28 && age<50)
        printf("壮年\n");
    else if(age>=50 && age<90)
        printf("老年");
    else
        printf("太老了\n");
	return 0;
}
#include <stdio.h>
int main()
{
    int age = 120;
    if(age<18)
        printf("未成年\n");
    else
    {
    if(18<=age && age<28)
        printf("青年\n");
    else if(age>=28 && age<50)
        printf("壮年\n");
    else if(age>=50 && age<90)
        printf("老年");
    else
        printf("太老了\n");
    }
	return 0;
}

C语言0表示假,非0表示真

#include<stdio.h>
int main()
{
	if(表达式)
	{
		语句1;
	}
	else 
	{
		语句列举2;
	}
	return 0;
}

悬空 else

#include <stdio.h>

int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
        printf("hehe\n");
    else
        printf("haha\n");
	return 0;
}

练习1:判断一个数是否为奇数

#include <stdio.h>
int main()
{
    int num = 0;
    printf("请输入一个数");
    scanf("%d",&num);
    if (num%2==1)
        printf("该数为奇数\n");
    else
        printf("该数为偶数\n");
	return 0;
}

练习2:输出1-100之间的奇数

#include <stdio.h>
int main()
{
    int num = 0;
    while(num<100)
    {
        num++;
        if(num%2==1)
        printf("num=%d\n",num);
    }

	return 0;
}
6、switch语句

switch(整型表达式)
{
语句项;
case 整型常量表达式;
}

#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
    {
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期日\n");
        break;
    }
	return 0;
}

星期一到五输出工作日,星期六、日输出休息日

#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("工作日\n");
        break;
    case 6:
    case 7:
        printf("休息日\n");
        break;
    default:
        printf("输入错误,请输入1-7\n");
        break;
    }
	return 0;
}

注:在每个switch语心中都放一条default语句是个好习惯,甚至可以在后边再加一一个break

#include <stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch(n)
    {
       case 1:
        m++;
       case 2:
        n++;
       case 3:
        switch(n)
        {
            case 1:
            n++;
           case 2:
            m++;
            n++;
            break;
        }
           case 4:
            m++;
            break;
           default:
            break;
    }
    printf("m =%d,n= %d\n",m,n);
	return 0;
}
输出结果m=5 n=3
7、循环语句(while 、for 、do while)

while 语法结构
while(表达式)
循环语句在这里插入图片描述
例子:在屏幕上打印1-10

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

总结:
1、break在while循环中的作用:
其实在循环中只要遇到break ,就停止后期的所有的循环,直接终止循环。所以 : while中的break是用于永久终止循环的。
2、continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接
跳转到while语句的判断部分。进行下一次循环的入口判断。

#include <stdio.h>
int main()
{
   int ch = getchar();
   putchar(ch);
   printf("%c\n",ch);
	return 0;
}
#include <stdio.h>
int main()
{
   int ch = 0;
   //CTRL+z
   //EOF ---文件结束标志 --> -1
   while((ch=getchar()) != EOF)
   {
      putchar(ch);
   }
	return 0;
}
8、露天矿玩耍

学习之余也得去玩耍一下,来看看我玩耍的视频吧,纯属娱乐,非专业人士!!!

9、备注:
  1. 本文章是个人总结,如有错误请指正;
  2. 部分资料来源于网络和开发手册,如有侵权请联系我删除;
  3. 如需上方资料,请与我联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y黎好好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值