C语言学习初级
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、备注:
- 本文章是个人总结,如有错误请指正;
- 部分资料来源于网络和开发手册,如有侵权请联系我删除;
- 如需上方资料,请与我联系。