郝斌C语言课程1

C的优点和缺点

优点: 代码量小、速度快、功能强大

缺点:危险性高、开发周期长、可移植性不强


龌龊的程序

malloc()   内存泄漏

# include <stdio.h>
# include <malloc.h>
int mian(void)
{
   while(1)
   {
        int *p = (int *)malloc(1000);
   }
return 0;

配套书籍

谭浩强《c语言程序设计》

王爽      汇编语言


学C的好处

C是面向过程语言的代表,学好C有助于学习java中面向对象的思想


举例(一元二次方程)

# include <stdio.h>
# include <math.h>

int main(void)
{
   //把三个系数保存到计算机中
   int a = 1;     // =表示的是赋值
   int b = 5;
   int c = 5;
   double delta;   // delta存放的是 b*b - 4*a*c
   double x1;   // 存放一元二次方程的一个解
   double x2;   // 存放一元二次方程的另一个解
   delta = b*b - 4*a*c;
   
   if (delta > 0)
   {  
      x1 = (-b + sqrt(delta)) / (2*a);
      x2 = (-b - sqrt(delta)) / (2*a);
      printf("该一元二次方程有两个解,x1 = %f, x2 = %f\n" , x1, x2); 
   }
   else if (delta == 0)
   {
      x1 = (-b ) / (2*a);
      x2 = x1;
      printf("该一元二次方程有一个唯一解,x1 = x2 = %f\n" , x1);
   }
   else
   {
     printf("该方程无解\n");
   }
}

C语言编程预备知识:

1. cpu、内存条、硬盘、显卡、主板、显示器 之间的关系

     如何看电影:双击,将硬盘上的数据调用到内存条当中(因为cpu不能直接处理硬盘上的数据),cpu处理内存条中的数据,图像通过显示器显示出来,声音发给声卡,将声音播放出来。

2.HelloWorld程序如何运行起来的

# include<stdio.h>
int main(void)
{
	printf("欢迎来到C的世界!\n");
	return 0; 
}

3.什么是数据类型

基本类型数据:

     整数(整型—int—4个字节,短整型—short int—2个字节,长整型—long int—8个字节)

     浮点数(单精度浮点数—float—4个字节,双精度浮点数—double—8个字节)

     字符—char—1个字节

复合类型数据:

      结构体

      枚举

      共用体

4.什么是变量

i=3 ,3最终是存放在内存中,程序终止之后 3所占用的空间被释放

变量的本质就是内存中的一段存储空间

5. cpu、内存条、操作系统 之间的关系

硬盘好比仓库,内存条是商店,cpu是商店管理员,处理好这样的关系为顾客提供便利

6.变量为什么必须要初始化

所谓初始化就是赋值的意思

7.如何定义变量

把内存比作一排房子,变量i就相当于给其中一套房子起名字并且能被i所使用,给i赋值就相当于在房子里放了一个人,人是由细胞组成的,而这个房子里存放的数据是以0和1进行记录的

8.什么是进制

9.常量在C语言中是如何表示的

整数:
        十进制            传统的写法
        十六进制        前面加0x或0X
        八进制           前面0注意是数字零不是字母o
浮点数:
       传统的写法
               float r = 3.2       //传统写法
       科学计数法
              float x = 3.2e3        //x的值是 3200
              float x = 123.45e-2            //x的值是1. 2345
字符:
       单个字符用单引号括起来
              ' A'表示字符A
               'AB’ 错误
              "AB"正确
        字符申用双引号括起来
               "A"正确,因为"A"代表了'A'  '\0’ 的组合

printf 的用法:

           %d表示以十进制输出、%x或%X表示以十六进制输出、%o表示以八进制输出、%lf表示以double型格式输入或输出变量的值、%c代表字符型格式符、 %s代表字符串型格式符。

10.常量以什么样的二进制代码存储在计算机中

整数是以补码的形式转化为二进制代码存储在计算机中的
实数是以IEE754标准转化为二进制代码存储在计算机中的
字符的本质也是与整数的存储方式相同 ( 先用ASCⅡ规定字符用什么整数表示,再补码)

11.代码规范化

代码的可读性更强【容易让自己和别人更清楚的看懂程序】
使程序更不容易出错

12.什么是字节

字节就是存储数据的单位,并且是硬件所能访问的最小单位
1字节 = 8位
1K = 1024字节
1M = 1024k
1G = 1024M

13.不同类型数据之间相互赋值的问题

暂不考虑
int  i = 45 ;
long  j = 102345 ;
i = j ;
printf ( "%ld  %d\n", 1, j ) ;
float  x = 6.6 ;
double y = 8.8 ;
printf ( "%f  %1f\n , x , y )

14.什么是ASCII

ASCII不是一个值,而是一种规定,ASCII规定了不同的字符是使用哪个整数值去表示
它规定了
       'A'——65
       'B'——66
       'a'——97
       'b'——98
       '0'——48

# include <stdio.h>

int main(void)
{
	char ch = 'A';  //OK  等价  char ch ; ch = 'A';
//	char ch = "AB";  //error 因为"AB"是字符串, 我们不能把字符串赋给单个字符变量
//	char ch = "A";   //error 因为"A" 等价 'A' '\0' 
	
//	char ch = 'AB'; //error 因为单引号只能括单个字符 

//	char ch = 'B';  //error 因为ch变量已经被定义了,这样会导致变量名被重复定义

	ch = 'C';
	ch = 'D';
	printf("%c\n", ch);


	return 0;
}

15.字待的存储【字符本质上与整数的存储方式相同】


 基本的输入和输出函数的用法

基本的输入和输出函数的用法 :
Printf ( )—将变量的内容输出到显示器上
四种用法  1. printf ("字符串\n ”) ;
                 2. printf ("输出控制符",输出参数) ;
                 3.printf (“输出控制符1   输出控制符2。。。”)、输出参数1、输出参数2。。。);                           输出控制符和输出参数的个数必须一一对应
                 4.printf (“输出控制符   非输出控制符”,输出参数“) ;
                 输出控制符包含如下:
                        %d ——————int
                        %ld——————long int
                        %c ——————char
                        %f——————float
                        %lf——————double
                        %x (或者%X后者%#X)
                        %o
                        %s——————字符串

为什么需要输出控制符:       

        1.01组成的代码可以表示数据也可以表示指令
        2.如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的                                   输出格式输出就有不同的输出结果

/*
    2021年12月29日8:59
	目的:
		测试%x %X %#x %#X的用法
*/

# include <stdio.h>

int main(void)
{
	int x = 47;  //47是十进制

	printf("%x\n", x);  //输出结果是:  2f
	printf("%X\n", x);	//输出结果是:  2F
	printf("%#X\n", x);	//输出结果是:  0X2F  %#X推荐使用
	printf("%#x\n", x);	//输出结果是:  0x2f

	return 0;
}

/*
	在Dev—c++中的输出结果是:
------------------------------
2f
2F
0X2F
0x2f
------------------------------
	总结:
		
		
*/

scanf ( )—— 通过键盘将数据输入到变量中
           用法一 : scanf("输入控制符", 输入参数) ;
           功能 : 将从键盘输入的字符转化为输入控制符所规定格式的数据,                                                    然后存入以输入参数的值为地址的变量中
           用法二: scanf("非输入控制符输入控制符",输入参数);
           功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,                                                     然后存入以输入参数的值为地址的变量中,
                   非输入控制符必须原样输入

/*
    2021年12月29日9:41
	目的:
		scanf用法_不含非输入控制符
*/

# include <stdio.h>

int main(void)
{
	int i;

	scanf("%d", &i); //&i 表示i的地址 &是一个取地址符
	printf("i = %d\n", i);

	return 0;
}


/*
    2021年12月29日9:41
	目的:
		scanf用法_含非输入控制符
*/

# include <stdio.h>

int main(void)
{
	int i;
	
	scanf("m%d", &i);   //m123是正确的输入  123是非法的输入
	printf("i = %d\n", i);

	return 0;
}
/*
    2021年12月29日9:41
	目的:
		一次给多个变量赋值
*/

# include <stdio.h>

int main(void)
{
	int i, j, k;

	printf("请输入三个值,中间以逗号分隔: " );
	scanf("%d,%d,%d", &i, &j, &k);
	printf("i = %d, j = %d, k = %d\n", i, j, k);

	return 0;
}

如何使用scanf编写出高质量代码
                       1.使用scanf之前最好先使用printf提示用户以什么样的方式来输入
                       2. scanf中尽量不要使用非输入控制符,尤其是不要用\n
                       3.应该编写代码对用户的非法输入做适当的处理【非重点】
                               char ch; 
                               while ( (ch=getchar() != '\n' )
                                       continue;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值