初识C语言(2)

目录

1.选择语句

2.循环语句

2.1.while语句

2.2.for语句

2.3.do while语句

3.函数

4.数组

5.操作符

6.常见关键字

7.#define定义的常量和宏 

8.指针

9.结构体


1.选择语句

选择语句if-else语句

if(表达式)

{

        语句一

}

else

{

        语句二

}

例:输入一个年龄,判断是否成年人

2.循环语句

2.1.while语句

while(表达式)

{        

        循环语句

}

例:据说智商140以上者称为天才,KiKi想知道他自己是不是天才,请帮他编程判断。输入一个整数表示一个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。多组输入,每行输入包括一个整数表示的智商。

输出描述:

针对每行输入,输出“Genius”。

#define _CRT_SECURE_NO_WARNINGS//防止弹出scanf警告
#include<stdio.h>
int main()
{
	int iq = 0;//定义一个整型变量iq,并赋值为0
	while (scanf("%d", &iq) != EOF)//当输入读取正确时,可以进行多组输入
	{
		if (iq >= 140)
		{
			printf("Genius\n");
		}
		else
		{
			printf("\n");
		}
		
	}
	return 0;
}

2.2.for语句

for(表达式1;表达式2;表达式3)

{

        循环语句

}

表达式1:初始化部分,用于初始化循环变量

表达式2:条件判断部分,,用于判断循环终止

表达式3:调整部分,用于循环条件的调整

2.3.do while语句

do

{

        循环语句

}while(表达式) 

注:循环至少执行一次 

3.函数

例:求和函数

4.数组

定义:用来存放一组相同类型的元素

例:int arr[100] = {1};//不完全初始化,其余为0

注:数组下标从0开始;数组的输入与打印使用循环

5.操作符

算数操作符+        -        *        /        %
移位操作符<<        >>
位操作符&(按位与),^(按位异或),|(按位或)
赋值操作符=        +=        -=        /=        .......
单目操作符!        -        +        &        sizeof        ~        ++/--        (类型)        *
关系操作符==(用于测试相等),!=(用于测试不相等),>=   ........
逻辑操作符||(逻辑或),&&(逻辑与)
条件操作符exp1 ? exp2 : exp3
逗号表达式例:int  d=(a,b,c)
下表引用操作符例:arr[5]
函数调用例:get_max(3,5)
结构成员——>

6.常见关键字

  • auto(自动):(auto)int a = 0;一般情况下auto省略
  • register(寄存器变量)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int num2 = 10;
	register int num2 = 20;//建议把20放在寄存器中
	return 0;
}
  •  static修饰变量和函数

1.修饰局部变量:static修饰局部变量时,局部变量就变成了静态的局部变量,出了局部的范围,不会销毁,下一次进入函数依然存在,因为static修饰的局部变量是存在静态区的。static修饰局部变量时,实际改变的是变量的存储位置,本来一个局部变量放在栈区,static修饰后放在了静态区,从而出了作用域不销毁生命周期没有结束,但作用域不发生变化,静态区中的数据的生命周期与程序共存亡。

注: text函数中,a是一个由static修饰的局部变量,当程序第一次运行至进入text函数时,a首先被赋值为5,然后a++,a的值变为6,打印的值为6;当程序第二次运行至进入text函数时,因为a被static修饰,所以a=6并未销毁,a++,a的值变为7,打印7......直到循环执行10次。

2.修饰全局变量:对一个工程中的俩个.c文件,一个全局变量,本来具有外部链接属性,被static修饰后,外部链接属性就变成了内部连接属性,只能在自己所在的源文件内部使用

3.修饰函数:对一个工程中的俩个.c文件,一个函数本来具有外部链接属性,被static修饰后,外部链接属性就变成了内部连接属性,这时函数只能在自己所在的源文件内部使用,其他文件无法使用。

  • struct:结构体关键字
  • typedef:类型重命名
#include<stdio.h>
int main()
{
	unsigned int num = 10;
	typedef unsigned int  unit;//把unsigned int重命名为unit
	unit num2 = 20;
	return 0;
}
  • union:联合体/共同体
  • void:无/空 

7.#define定义的常量和宏 

#define定义的宏

8.指针

一个内存单元是一个字节

以32位为例,32根地址线/数据线,地址线——电线——通电——电信号——数字信号1/0

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000001

...... ......

11111111 11111111 11111111 11111111

总共2^32个地址,总共管理2^32(二进制)个字节

内存单元有编号,编号就是内存单元的地址,我们把这个地址也叫指针

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int a = 10;//4byte
	char ch = 'w';
	printf("%p\n", &a);//%p用于地址的打印
	int* pa = &a;//pa用来存放地址,所以把pa叫指针变量
	char* pc = &ch;
	printf("%d\n", sizeof(pa));//4
	printf("%d\n", sizeof(pc));//4
    //*解引用操作符,通过pa中存放的地址,找到pa所指向的内容
	*pa = 20;//把a的值改为20
	return 0;
}

 注:int*pa=&a中,*告诉我们pa是一个指针变量,int告诉我们pa指向的对象是int类型

sizeof(pa)= sizeof(pc)=4

32位平台下,指针的大小是4个字节;64位平台下,指针的大小是8个字节

指针变量的大小取决于地址的大小,与它所指向的类型大小无关

9.结构体

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//结构体
struct Stu
{
	char name[20];//名字,字符串
	int age;//年龄,整数
	char sex[5];//性别,字符串
	char id[20];//学号,字符串
};
void Print(struct Stu* ps)
{
	//printf("%s %d %s %s", (*ps).name, (*ps).age, (*ps).sex, (*ps).id);
	printf("%s %d %s %s\n", ps->name, ps->age, ps->sex, ps->id);//结构体指针->结构体成员

}
int main()
{
	//结构体变量
	struct Stu s1 = { "张三",18,"男","06203023" };//学生1
	struct Stu s2 = { "李四",19,"女","06203024" };//学生2
	printf("%s %d %s %s\n", s1.name, s1.age, s1.sex, s1.id);//直接打印,结构体变量->结构体成员
	Print(&s2);//使用函数打印
	return 0;
}

程序运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值