C语言是一门​​面向过程​​的​​计算机编程语言​

ANSI C C89

ISO C90 


.c 是源文件, .h 是头文件


 设置Ctrl+fn+f的输出结果到控制台方法:

工程--属性--链接器--系统--子系统--控制台


#include <stdio.h> //standard标准 input ouput 

int main()  //主函数(fn+f10运行)为程序的有且仅有一个的入口

{               //main前面的int表示main函数的调用返回一个int整型值

printf("Hello World!/n");  //print 打印 //function函数

return 0;

}


char 字符数据类型 1字节byte

short 短整型 2字节

int 整型 4字节

long 长整型 4字节

long long 更长的整型 8字节

float 单精度浮点型 4字节

dounle 双精度浮点型 8字节


%d 打印整型 %c打印字符型 %f打印浮点型 %p打印地址 %x以16进制打印数字


#include <stdio.h>

int main() 

{           

char a = ‘A’; //内存   

printf("%d/n",a);//以字符形式打印 

return 0;

}


#include <stdio.h>

int main() 

{           

printf("%d/n",sizeof(char));

printf("%d/n",sizeof(int)); 

printf("%d/n",sizeof(float)); 

return 0;

}

输出结果:144


局部变量和全局变量

​#include<stdio.h>

int a = 100;

int main()

{

int a = 10;

printf("%d/n",a);

return 0;

}

输出结果:10


​#include<stdio.h>

int main()

{

int num1 = 0;

int num2 = 1;

int sum = 0;

scanf("%d%d",&num1,&num2); //&取地址符号

sum = num1 + num2;

printf("sum=%d/n",sum);

return 0;

}

输出结果:1


变量的作用域和生命周期

int g_val = 2021;


#include <stdio.h>

int main()

{

//未声明的标识符,使用extern声明外部标识符号

extern int g_val;

printf("g_val=%d/n",g_val);

return 0;

}


生命周期:

#include <stdio.h>

int main ()

{

 {

 int a = 10;

 printf("%d/n",a); //成功

 }

 printf("%d/n",a); //error

return 0;

}


### 常量


1. 字面常量 一个具体的值 如3.14


2. const修饰的常变量


  const——常属性


  如:const int n=10;//n是变量,但是又有常属性,所以我们说n是常变量


  ​    //int arr[n] = 10;//数组个数只能是常量,不可以是变量(包括常变量)


3. #define定义的标识符常量


  例:


  #define MAX 10


  int main ()


  {


  ​ int arr[MAX] = 10;


  ​ printf("%d\n",MAX);


  ​ return 0 ;


  }


4. 枚举常量


  枚举关键——enum


  ```

  #define _CRT_SECURE_NO_WARNINGS 1

  #include<stdio.h>

  enum Color

  {

   RED,

   YELLOW,

   BLUE

  };

  int main()

  {

   enum Color color = BLUE;

   printf("%d\n", BLUE);

   return 0;

  }

  ```


  ### 字符串


  


概念:以==""==引起的为字符串


存储:数组:char arr1[]="abcd",或char arr[]={'a','b','c',0};


注:字符串的结束标志是一个\0的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串的内容




```

char arr1[] = "abc";

//"abc"--包括'a','b','c','\0'--'\0'字符串的结束标志

char arr2[] = { 'a','b','c',0};

printf("%s\n", arr1);

printf("%s\n", arr2);

```


ASCII编码:一个字符对应一个数字,该数字称为ASCII码值


0:48   A:65  a:97

C语言基础1_C



strlen()--string length 计算字符串长度




### 转义字符


\ +其他:



| 输入 | 表意                   |

| :--- | ----------------------------------------- |

| \n  | 换行                   |

| \\\ | \                     |

| \t  | 水平制表                 |

| \\' | '                     |

| \\" | "                     |

| \ddd | 后接八进制数字,转为十进制后查询ASCII表  |

| \xdd | 后接十六进制数字,转为十进制后查询ASCII表 |




```

printf("%c\n", '\x16');//\x后的数字用16进制,流程同下

printf("%d\n", strlen("c:\test\32\test.c"));//显示13

printf("%c\n",'\132');

//\32--32是2个8进制数字

//32作为8进制代表的那个十进制数字,作为ASCII码值,对应的字符

//32--> 10进制26-->作为ASCII码值代表的字符


操作符

+ - * / %取余取模

<< 左移2进制位操作符

>> 右移2进制位操作符


& 按位与

| 按位或

^ 按位异或


int main()

{

int a = 3;//011

int b = 5;//101

int c = a&b;//001

printf("%d\n",c);

return 0;

}


= 赋值

==判断等于

a+=10

a&=11---a=a&10

+= -= /= *= &= |= ^= <<= >>=


单目操作符 !逻辑反操作 正号 负号  sizeof 


双目操作符

三目操作符



交换整型数据:

添加变量

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

int a = 3;
int b = 5;
int c = 0;
printf("交换前:a=%d,b=%d\n", a, b);

c = a;
b = a;
a = c;

printf("交换前:a=%d,b=%d\n", a, b);

return 0;
}


加法

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

int a = 3;
int b = 5;

printf("交换前:a=%d,b=%d\n", a, b);

a = a + b;
b = a - b;
a = a - b;

printf("交换前:a=%d,b=%d\n", a, b);

return 0;
}


异或运算

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

int a = 3;
int b = 5;

printf("交换前:a=%d,b=%d\n", a, b);

a = a ^ b;
b = a ^ b;
a = a ^ b;

printf("交换前:a=%d,b=%d\n", a, b);

return 0;
}




找到数组里只出现一次的数字:

注意:for(i=0;i<sz;i++)此处不能有;分号


{
int arr[] = { 1, 2, 3, 4, 5, 1, 2, 3, 4 };

int i = 0;

int sz = sizeof(arr) / sizeof(arr[0]);//stlen
for (i = 0; i < sz; i++)
{
int j = 0;
int count = 0;
for (j = 0; j < sz; j++)
{
if (arr[i] == arr[j])
{
count++;
}
}
if (count == 1)
{
printf("只出现一次的数字是 %d\n", arr[i]);

}
}

return 0;
}


0^a=a  a^a=0 异或运算满足交换律

//int arr[] = { 1, 2, 3, 4, 5, 1, 2, 3, 4 };

//int i = 0;
//int ret = 0;
//int sz = sizeof(arr) / sizeof(arr[0]);
//for (i = 0; i < sz; i++)
//{
// ret = ret^arr[i];
//
//}
//printf("只出现一次的数字是 %d\n", ret);
return 0;
}



关机命令:

shutdown -s -t 60     60秒后关机

shutdown -a             取消关机




char input[20] = { 0 };
again:

system("shutdown -s -t 60");
printf("一分钟内输入我是猪,不然关机\n");
scanf("%s", input);
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}

return 0;
}














0