C语言学习进度及笔记

本文介绍了C语言的基础知识,包括指针的使用,如何通过指针修改变量值,以及结构体的概念和创建结构体变量。此外,详细讲解了C语言的语句类型,如分支语句的if和switch结构,以及循环语句的使用。文中通过实例展示了如何运用if和switch进行条件判断,并给出了打印1-100之间奇数的不同方法。最后,讨论了switch-case语句的使用,以及循环语句while和for的应用。
摘要由CSDN通过智能技术生成


前言

C语言学习第四天


一、复习

1、指针

int main()
{
	double d = 3.14;
	double*pd = &d;
	*pd = 5.5;
	printf("%lf\n",d);
	printf("%lf\n",*pd);
	//int a = 10;//向内存申请了4个字节的空间
	printf("%p\n", &a);//00CFF9B0
	//int* p = &a;//p是一个指针变量 
	此处的*就是个语法形式
	printf("%p\n", p);//0055FB08
	//*p = 20;// * - 解引用、间接访问操作符  
	此处的*是个操作符
	//printf("a = %d\n", a);//a = 20
	return 0;
}

2、结构体

//结构体
//如何描述一本书-描述复杂对象
//复杂对象-结构体- 我们自己创造出来的一种类型
//创建一个结构体类型

struct Book
{
	char name[20];//书的名字
	short price;//55
};

int main()
{
	//利用结构体类型-创建一个该类型的结构体变量
	struct Book b1 = { "C语言程序设计",55 };
	strcpy(b1.name,"C++");//strcyp-string copy - 字符串拷贝 
	//- 库函数 - string.h
	printf("%s\n", b1.name);
	//b1.name = "C++";不可行,因为name是一个地址
	//b1.price = 15;price是一个变量
	
	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;*/
}

二、什么是语句

**语句**-由一个分号:隔开的就是一条语句
C语言是一门结构化的程序设计语言
顺序、选择、循环结构
选择结构 - 分支语句、循环结构-循环语句
分支语句 - ifswitch
循环语句 - whilefordo while
int main()
{
	int a = 0;
	;//也是语句-空语句
	return 0;
}

三、分支语句

分支语句(选择结构)
语法结构
1if(表达式)
      语句;  如果表达式为真,则语句执行,否则,什么都不执行
2if(表达式)
      语句1else
      语句23、多分支 - 语句1、语句2、语句3只能被执行1if(表达式1)
   语句1;        如果表达式1成立,则执行语句1
else if(表达式2)
   语句2;        另外如果表达式2成立,则执行语句2  
else
   语句3;        表达式12都不成立,则执行语句3


int main()
{
	int age = 10;
	if (age < 18)
		printf("未成年\n");
	else if (age >= 18 && age <= 28)//18<=age<=28 
	                                //执行是-> 18<=age为假,则0<=28
		printf("青年\n");			//0为假,非0为真
	else if (age >= 28 && age <= 50)
		printf("壮年\n");
	else
		printf("老年\n");

	第二种写法
	if (age < 18)
		printf("未成年\n");
	else
	{
		if (age >= 18 && age <= 28)   
			printf("青年\n");
		else if (age >= 28 && age <= 50)
			printf("壮年\n");
		else
			printf("老年\n");
	}

	/*if (age < 18)
		printf("未成年\n");
	else
		printf("成年\n");*/

	/*if (age < 18)
		printf("未成年\n");
	return 0;*/

	return 0;
}


四、if语句

如果条件成立,要执行多条语句,应该使用代码块
int main()
{
	int age = 10;
	if (age < 18)
	{                          //一对{}就是一个代码块
		printf("未成年\n");
		printf("不能谈恋爱\n");
	}

	return 0;
}

悬空else情况

悬空else - else与最近的未匹配的if匹配(注意大跨号)

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
		else                 //else和第二个if匹配
			printf("haha\n");
	return 0;
}

//两个代码等效

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
	else                     //else和第二个if匹配
			printf("haha\n");
	return 0;
}

//有无else都可行,但不建议这种使用情况
if(condition)
{
	return x;
}
return y;
int main()
{
	int num = 4;
	if (5 == num)
	//建议这种写法,就算将==写为=,在编译过程中也会报错
	{
		printf("hehe\n");
	}
	//if (num = 5)// = 赋值  == 判断相等
	//{
	//	printf("hehe\n");
	//}
	//return 0;
}

练习

练习
判读一个数是否为奇数
#include<stdlib.h>
int main()
{
	int a = rand();
	int b = 0;
	b = a % 2;
	printf("%d\n", a);
	if (b= 1)
	{
		printf("a为奇数");
	}
	else
	{
		printf("a为偶数");
	}
	return 0;

}
输出1-100之间的奇数
方法一 - for循环
int main()
{
	int i;
	int j ;
	
	for (i = 1; i <= 100; i++)
	{
		j = i % 2;
			if (1 == j)
			{
					printf("%d\n", i);
			}
	}
	return 0;
}

方法二 - while循环
int main()
{
	int i = 1;
	while (i <= 100)
	{
		if (i % 2 == 1)
			printf("%d\n", i);
		i++;
	}
	return 0;
}

方法三 - while循环,不需要判断
int main()
{
	int i = 1;
	while (i <= 100)
	{
		printf("%d\n", i);
		i += 2;;
	}
	return 0;
}

五、switch语句

switch语句是一种分支语句。常常用于多分支的情况,允许嵌套使用
switch(整型表达式) - 只能用整型,即int
{
	语句项;
  break;
}
case 整形常量表达式 : - 只能是整型常量
     语句;
方法一
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期1\n"); 
		break;
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期7\n");
		break;
	}
//方法二
	if (1 == day)
		printf("星期一\n");
	else if(2 == day)
		printf("星期二\n");
	else if(3 == day)
	  printf("星期三\n");
	//从星期一写到星期日
	
	return 0;
 }

switch - case

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:	
		if (n == 1)
			printf("hehe\n");//switch-case语句可以出现if语句
	case 2:	
	case 3:	
	case 4:	
	case 5:
		printf("工作日\n");
		break;
	case 6:	
	case 7:
		printf("休息日\n");
		break;
	default: //处理一些非法输入,比如输入9
		printf("输入错误\n");
		break;
	}
	return 0;
 }

六、循环语句

循环语句 while\for\do while
while循环语法结构
while(表达式)
	    循环语句;

int main()
{
	while(1)             //死循环
		printf("hehe\n");
	return 0;
}

练习

//练习 打印1-10的数字
int main()
{
	int i = 1;
	while (i<=10)
	{
		if (5 == i)
			continue;   
			//continue - 终止循环中本次循环,continue后面的代码不再执行,
			//直接跳转到循环的判断部分,进行下一次循环的入口判断
		printf("%d ", i);
		i++;

	}
	
	/*while (i<=10)
	{
		if (5 == i)
			break;
		printf("%d ", i);
		i++;

	}*/

	/*printf("%d ", i);
	i++;*/   //需要循环十次
	return 0;
}

EOF

(1)EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。该宏定义在stdio.h中。
(2)EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。#define EOF (-1)
(3)除了表示文件结尾,EOF还可以表示标准输入的结尾。但是,标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。

int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)// 按Ctrl z停止循环,
	                               // 否则不管按什么键都会接着输出
	
	{
		putchar(ch);

	}
	//int ch = getchar();//接受字符
	//putchar(ch);       /*和printf作用相同*/
	//printf("%c\n",ch);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值