课后总结

什么是编程语言,什么是程序,人和计算机的关系?


编程语言那么多,为什么我们偏偏学习C语言呢?


如何考核C语言水平呢,考核C语言的标准有哪些呢?










打印:helloworld!
#include


int main()
{
printf("Hello World!\n"); //打印:helloworld

return 0;
}


(1)main是函数的名字,任何一段程序有且只有一个main函数,它表示程序的入口,执行程序都是从main开始执行的!我们写程序的时候也是先
写main函数,int 是函数的数据类型,表示main函数执行完毕后,正常情况下会返回一个int的数据!函数的后面都要接个括号;
(2){}里面的是main函数的函数体,里面存放的是执行的命令;
(3)#include 表示的头文件,我跟大家说过以前是没有函数库的,程序员要是想实现具有某个功能的函数,都是自己动手写的,但是
有些函数大家都会用到,如果每个人都要重新写一遍的话太浪费资源了,所以呢程序员聚会的时候互相分享自己写的代码,久而久之呢就形成了函
数库,里面存放了很多大家写好的函数,你只需要知道怎么用的,不需要知道具体怎么实现的!比如下面的printf就被封装在stdio.h这个库里面;
那么,#include 和#include "stdio.h"什么区别呢?这个面试或者笔试的时候一定要能够答出来,如果你这个都不知道,面试官会觉得
你是个假程序员!
(4)printf函数,可以实现打印()里面的内容到终端;
(5)printf("Hello World!\n");表示的是一个语句,用;号结尾
(6)\n:转义字符中的换行符;
(7)return 0;刚才我们说了main函数的返回值是int型的,得返回一个整数,return就是这个功能,它是C语言中的一个关键字,你看它的颜色
不一样吧;return 0代表函数正常结束,之前你们给我发的第一次练习上,班草用了exit,这个我们待会来看一下和retrun 有什么不同;
(8)//后面跟的注释,在C语言中的注释有两种:段注释和行注释,注释的作用就是告诉看代码的人这段代码是什么意思?用来解释用的!在写程
序的时候一定要学会写注释,注释不光是给别人看的,有时候也是给你看的,因为复杂的代码写完之后没有注释,可能一个星期过后,你自己看都
看不懂,通过注释可以了解这段代码编写的思路!












1、变量;
int num = 12;
编译器在编译的时候,会分配int字节大小的内存空间,内存空间的名字就是num,然后把12放到num所对应的内存空间里面,取值的时候就是根据
变量名num找到内存空间,然后把内存空间里面的取出来!
2、变量的作用域:
   总结两点:
①变量的作用域:局部变量的作用域在于定义的代码块里面,也就是{}包含的部分,全局变量的作用域是整个.c文件;
②如果全局变量和局部变量名字重复的时候,局部变量会把全局变量给屏蔽掉;

3、数据类型:
为什么类型呢?:给数据分配合理的内存空间,记不太大,也不太小;
每种数据类型能表示的数据范围有多大呢?
以字节为单位,一个字节8个比特位!
只有0和1两种状态,然后是以补码的形式保存的:正数的补码就是本身,负数的补码就是它的绝对值按位取反加1;
int num = 5; 
0000000000000000000000000000101
int num = -5;
按位取反:
1111111111111111111111111111010
加1:
1111111111111111111111111111011

sizeof:运算符 不是函数!
sizeof用法:
测量变量的时候:sizeof i; sizeof(i);
测量数据类型的时候:sizeof(int);

有符号和无符号:
有符号:可以表示正数也可以表示负数;
无符号:只能表示非负数;

unsigned int num = 19;

对于有符号而言:最高位表示正负:0--正数;1--负数!

有符号 short:表示的最大范围? 2字节 = 16位
最大的:0111111111111111;(一个0+15个1);65535!
最小的:1111111111111111;(全是1);  -65535!
000000000000000:+0
100000000000000:-0

-0放到最小:-65536

练习1:输入一个字符串,输出这个字符串的长度

#include 

#define max 50

int main()
{
	int i = 0;
	char str[max];

	scanf("%s",str);

	for( i = 0; str[i] != '\0';i++) ;


	printf(" string length:%d\n",i);

	return 0;
}

#include 

#define max 1024

int my_str( char *str )
{
	int len = 0;
	
	while(*str != '\0')
	{	
		len ++;
		str ++;
	}
	return len;
}
int main()
{
	char str[max] ;
	int len = 0;

	printf("intput a string\n");
	scanf("%s",&str);

	len = my_str(str);

	printf("length is :%d\n",len);
	return 0;
}

gets调用的时候会报警告;
Ctrl+Z:切到后台运行,然互输入:fg在切回来;
Ctrl+C: 强制中断;

练习2:输入两个字符串,比较两个字符串的大小,相等的话输出“Yes",不等的话输出“NO”


#include 

#define  max 1024

int my_strlen(char *str)
{
	int len = 0;
	while ( *str != '\0' )
	{
		len++;
		str++;
	}
	return len;
}
int my_strcmp(char *str1,char *str2)
{	
	if( my_strlen(str1) != my_strlen(str2) )
	{
		printf("No equal!\n");
		return -1;
	}
	while( *str1 != '\0')
	{
		if(*str1 == *str2)
		{
			str1++;
			str2++;
		}
		else
		{
			return -1;
		}
	}

	return 0;
}
int main()
{
	int i =0 ;
	char str1[max] = {0};
	char str2[max] = {0};
	int ret = 0;

	printf("input A strings:\n");
	scanf("%s",str1);
	printf("input B strings:\n");
	scanf("%s",str2);

	ret = my_strcmp(str1,str2);
	
	if( ret == 0)
	{
		printf("Yes!\n");
	}
	else
	{
		printf("No!\n");
	}

	return 0;
}


运算符:算数运算符、逻辑运算符
+ - * /(除) %(取余)
12 / 10 = 1
12 % 10 = 2
++:自增1; i++(先进行操作,然后再自增1); ++i(先自增1,然后再进行操作)








关系运算符:> < >= <= == !=
逻辑运算符:&&(与) ||(或) !(非)
A && B:当A和B都为真的时候,才会进行下一步的操作;
A || B:A和B当中满足一个,只要有一个满足条件的,就进行下一步的操作;
!A:当A是真的时候,!A就为假,A为假的时候!A就是真的;


强制类型转换:
int a;
float x;
float y;


a = (int)x + y; //只有x进行了强制类型转化,y没有进行强制类型转换;


语句:
1、赋值语句:
int a = 0;
a = 3 + 5;
=号左边的叫“左值”,=右边叫“右值”,左值代表的是对应的存储空间,右值就是“值”,将8这个数值放到a所对应的存储空间中!


2、判断语句:if--else
if(表达式)
{
代码块;
}
else
{
代码块;
}
***********
if()
{
代码块;
}
else if()
{
代码块;
}
else
{
代码块;
}

/**************************************************/
if( (a > b ) && (a > c ) && ( b > c ))
{

}

if( (a > b ) || (a > c ) || (b > c ))
{

}
/**************************************************/




3、switch-case:


练习3:编写一个连接字符串的功能函数:比如输入字符串1:hello 字符串2:world    输出的结果:helloworld


#include 

#define max 1024

int linkstr(char *str1,char *str2)
{
	while( *str1 != '\0')
	{
		str1++;

	}
	while( *str2 != '\0' )
	{
		*str1 = *str2;
		str1++;
		str2++;
	}
	*str1 = '\0';
	return 0;
}
int main()
{
	char str1[max] = {0};
	char str2[max] = {0};

	printf("intput string A:");
	scanf("%s",str1);
	printf("intput string B:");
	scanf("%s",str2);
	
	linkstr(str1,str2); 
	printf("linked string :%s\n",str1);

	return 0;
}

for循环;
int i = 0;
for(表达式1;表达式2;表达式3)
{
代码块;
}

int sum = 0;
for(i = 1; i <= 100; i++)
{
sum += i;
}

int i = 1;
for(;i <= 100; i++)
{

}
死循环:
for(;;)
{

}
while
while(表达式)
{
代码块;
}

int i = 0;
while(i < 10)
{
i++;
}
特点是:先判断后执行,再判断;

do-while
int i = 0;
do
{
i++;
}while(i < 10); //别忘了分号;
特点:先执行后判断,再执行;
死循环:
while(1)
{
代码块2;
}
goto;
goto语句会破坏代码的结构;
goto L_END;
....
...代码块1;
...
L_END:;
....
...代码块2;

当遇到goto语句的时候,会跳过代码块1不执行,接着执行代码块2!

break和continue的区别:
continue:终止本次循环,接着进行下一次循环;
break:终止整个循环;

你可能感兴趣的:(课后总结)