01 C语言概述-c语言初学系列

一、C语言概述

1.1 C语言简史
1.2 C语言的特点
1.3 C语言的基本结构
1.4 库函数printf() scanf()的使用
1.5 C程序开发过程

1.1 C语言简史

C语言是由D.M.Ritchie于1972年在B语言的基础上设计的,主要用于编写UNIX操作系统的。
1977年出现了可移植的C语言编译程序,使得用C语言编写的UNIX系统可以在各种计算机上使用。随着UNIX的广泛应用,C语言得到了普及和推广,并最终独立于UNIX而成为世界上应用最广泛的计算机语言之一。
1983年美国国家标准化协会(ANSI)制订了C语言标准,即ANSI C。目前流行的各种版本的C语言都是以它为基础的,如Turbo C,Microsoft C,Quick C等。

1.2 C语言的特点

丰富的数据类型
   C具有整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型等多种数据类型。特别是C的指针类型,功能强大、灵活方便。
结构化的控制语句
   C语言的控制结构语句符合结构化程序设计要求,并且用函数作为程序模块,使得程序结构清晰、可读性好、易于调试。
高效率的目标代码
   C语言允许直接访问物理地址、直接对硬件操作,提供对字节、位、内存和寄存器操作,可以调用或嵌入汇编语言代码,并且经过C编译程序生成的目标代码质量高、执行效率高。
可移植性好
用C语言写的程序,基本上可以不加修改地用于各种计算机和操作系统

1.3 C语言的基本结构

/*--------------------------------------------
	程序L1_1.C功能:在屏幕显示一句话“Hello World!”
-----------------------------------------*/

 #include <stdio.h>    /* 包含输入输出头文件 */
  void main()                        /* 定义主函数 */
    {
        printf("Hello World!\n"); 
     }

输出:Hello World!

/*----------------------------------------
  程序L1_2.C : 求两数之和
---------------------------------------*/

#include <stdio.h>      /* 包含输入输出头文件 */
void main( )                        /* 定义主函数 */
{ int a,b,sum;            /* 定义整数变量a、b、sum */
 a=123;              		   /* 给a赋值 */
 b=456;                                  /* 给b赋值 */
 sum=a+b;                             /* 令sum=a+b */
 printf("sum is %d\n",sum);/* 输出a、b的和sum */
 }

输出:sum is 579

/*--------------------------------------------------------------
 程序L1_3.C :输入 a、b两个数,输出其中最大数
 ---------------------------------------------------------------*/

 #include <stdio.h>    		/* 包含输入输出头文件 */
void main( )                                       /* 定义主函数 */
 {float a,b,c;                                  /* 定义实数变量a、b、c */
  printf("Please input two numbers (a,b):");
  scanf("%f,%f",&a,&b);                    /* 从键盘输入a、b */
   if (a>b) c=a;             		/* 如果a大于b,则c等于a */
  else c=b;                         		  /* 否则c 等于b */
  printf("%f,%f,the max is %f\n",a,b,c); }
 }

C程序的特点

C程序是由一个主函数main()或一个主函数及其它函数组成。   
每个函数的内容用大括号“{ }”括起来。
每个语句后加“;”

C语言三类函数及其采用意义

第一类:主函数,名为main()。每个程序中只能有  一个、也必须有一个主函数。无论主函数在什么位置, C程序总是从主函数开始执行。
第二类:用户自定义函数,可有可无,数目不限。
第三类:C语言提供的库函数,例如输出函数printf()和输入函数scanf()

意义:函数可以简化了主函数以及实现模块化程序设计

1.4 库函数printf() scanf()的使用

一、函数printf( )
 功能:通过标准输出设备(如屏幕)输出一组数据。
 格式:printf ( 格式控制,输出表列)
“格式控制”是用双引号括起来的部分,由要输出的文字和数据格式说明组成。
要输出的文字除了可以使用字母、数字、空格和一些数学符号以外,还可以使用一些转义字符表示特殊的含义(如“\n”)。转义字符功能见表1-1。
数据格式说明由“%”开头,
   形式为: %<数据输出宽度说明><格式符>
   数据格式说明用在需要输出变量或运算数值结果的时候,它的个数与输出表列的个数一一对应。
例:printf(“Hello!”);
      printf(“%f,%f,the sum is %f \n”,a,b,sum);


 转义字符                        功 能
\n                  回车换行符,光标移到下一行行首
\r                   回车不换行,光标移动到本行行首
\t                   横向跳格(8位为一格,光标跳到下一  
                        格起始位置,如第9或17位等)
\b                  退一格,光标往左移动一格
\f                   走纸换页
\\                   用于输出反斜杠字符“\”
\’                   用于输出单引号字符“’”
\”                  用于输出双引号字符“””
\ddd              三位八进制数ddd对应的ASCII码字符
\xhh              两位十六进制数hh对应的ASCII码字符

/*------------------------------------------------------
	程序L1_4.C功能:转义字符的使用
  -----------------------------------------------------*/
  

#include <stdio.h> 
  main()
{
  printf("123456789012345678901234567890\n");   
  printf("123\t456\n");
  printf("12345\b123\r9\n");
  }

格式符                    功 能
d                以带符号的十进制形式输出整数(正数
                    不输出正号)
o                以不带符号的八进制形式输出整数
x                以不带符号的十六进制形式输出整数
u                以不带符号的十进制形式输出整数
c                以字符形式输出一个字符
s                输出一个或多个字符
f                以小数形式输出单、双精度数,默认输
                    出6位小数
e                以标准指数形式输出单、双精度数,数
                    字部分小数位数为6位   

/*-----------------------------------------------------------
	程序L1_5.C功能:数据格式说明的使用
     --------------------------------------------------------*/

 #include <stdio.h>              
 main()                         
 {
  printf("a=%4d,b=%-6.2f,c=%c,d=%s",12,3.456,'A',"hello");
 }

输出:a=12,b=3.46  ,c=A,d=hello

一、函数printf( ) (续)
 格式:printf ( 格式控制,输出表列)
输出表列可以是变量、表达式或者是数值。
输出表列的类型决定了“格式控制”中使用的“数据格式符”,其个数决定了“数据格式说明”的个数。
例:已知a=3
printf(“%d,%d,the sum is %d \n”,a,12,a+12);

二、函数scanf( )
 功能:通过标准输入设备(如键盘)输入一组数据。
 格式:scanf(格式控制,地址表列)
格式控制同printf() 函数的格式控制。
地址表列是由若干个地址组成的表列。
 注意:
如果格式控制中加入了格式符以外的其它字符,则通过键盘等输入设备输入数据时这些字符也要同样输入
变量的地址表示法是在变量前加上&符(数组不用)。
例题:     scanf(“%d,%d,%d”,&a,&b,&c);
        scanf(“%d%d%d”,&a,&b,&c);
        scanf(“x=%d,y=%d”,&x,&y);
从键盘输入分别是:12,34,56
                          12 34 56
                           x=12,y=34        

/*-------------------------------------------------------
	程序L1_6.C功能:scanf()函数的使用
 -------------------------------------------------------*/

 #include <stdio.h>              
 main()                         
 { 
  int x,y,a1,b1,c1,a2,b2,c2;
  scanf("x=%d,y=%d",&x,&y);
  scanf("%d,%d,%d",&a1,&b1,&c1);
  scanf("%d%d%d",&a2,&b2,&c2);
  printf("x=%d,y=%d\n",x,y);
  printf("a1=%d,b1=%d,c1=%d\n",a1,b1,c1);
  printf("a2=%d,b2=%d,c2=%d\n",a2,b2,c2);
}

从键盘输入分别是
X=1,y=2
3,4,5
6 7 8
屏幕显示
x=1,y=2
a1=3,b1=4,c1=5
a2=6,b2=7,c2=8
举一反三
 (1)写出语句scanf(“yy-mm-dd=%d-%d-%d”,&year,&month,&date);从键盘上的输入形式
 (2)思考:有没有更好的方法既可以表达输入的提示又可以简化输入量


1.5 C程序开发过程

开发一个C程序,一般要经历编辑、编译、连接和运行四个步骤。
1.源文件的编辑
用户通过编辑器,将自己开发的C语言程序输入计算机的过程称为C程序源文件的编辑。编辑生成的文件以文本形式存储,扩展名为“.C”,也称为C的源程序。
源程序文件以ASCII码形式存储,不含任何格式和样式,计算机不能直接执行。
2.编译
计算机把C的源程序翻译成计算机可以识别的二进制形式的目标代码文件,这个过程称为编译,由C的编译程序完成。
C的编译程序在编译的同时,还对源程序的语法和程序的逻辑结构等进行检查。当发现错误时,将会列出错误的位置和种类,此时需要重新编辑修改源程序。如果编辑成功则生成目标文件,文件名同源程序文件名,扩展名为“.obj”。
编译生成的目标文件,不包含程序运行所需要的库函数等,计算机仍然不能直接执行。

3. 连接
连接程序以将目标程序和其它目标程序模块,以及系统提供的C库函数等进行连接生成可执行文件的过程,称为“连接”。连接生成的可执行文件的文件名同源程序文件名,扩展名为“.exe”。
连接生成的可执行文件,计算机可以直接执行。
4. 运行
在DOS环境直接键入C程序的可执行文件名,或者在C的集成环境下选择“RUN”命令,以及在Windows的资源管理器内双击该可执行文件名,都可以获得运行结果。如果运行结果有误,需要重新编辑源程序,再进行编译、连接、运行,直到得到满意的运行结果。

/*-----------------------------------------------------------
  程序L1_7.C : 不用自定义函数,从键盘输入三个数,求其中的最大数。
 ----------------------------------------------------------*/

	 #include <stdio.h>           
	main( )                     
 	{
	 int a,b,c,d;
	 printf("please input three numbers (a b c) :");  
	 scanf("%d%d%d",&a,&b,&c);  
	 if (a>b) d=a
	 else d=b;
	 if (c>d) d=c;
	 printf("%d,%d,%d,the max is %d\n",a,b,c,d);         
	  }
/*-------------------------------------------------------------
 程序L1_8.C :使用自定义函数,从键盘输入三个数,求其中的最大数。
 --------------------------------------------------------------*/
 #include <stdio.h>                
 float max(x, y)                   
 float x,y;                        
 {float z;                         
  if (x>y) z=x;                    
  else z=y;                     
  return z;                        
  }
 main( )                              
 {int a,b,c,d;                           
  printf("Please input three numbers (a b c):");  
  scanf("%d,%d,%d",&a,&b,&c);                
  d=max(a,b); 
  d=max(c,d);                         
  printf("%d,%d,%d,the max is %d\n",a,b,c,d);     
  } 

/*----------------------------------------------------
  程序L1_9.C : 已知三角形边长求面积
 ---------------------------------------------------*/

 #include <stdio.h>
 #include <math.h>         /*头文件math.h中含函数sqrt()的定义*/ 
 main( )                               
 { float a,b,c,s,area;                    
   a=3;                         
   b=4;
   c=5;                           
   s=(a+b+c)/2;
   area=sqrt(s*(s-a)*(s-b)*(s-c)); 
                     /*函数sqrt()用于求一个数的平方*/
   printf("%4.1f, %4.1f, %4.1f,area is %4.2f\n",a,b,c,area);             
   }

大家可以试试做做下面的内容

1. 使用printf() 函数显示下列菜单:
                    Menu
===================================
   1. Input the students’ names and scores  2. Search scores of some students 3. Modify scores of some students 4. List all students’ scores  5. Quit the system
===================================
    Please input your choise (1-5):
2. 参照例1.7和例1.8,选择一种方法编写一个程序,实现输入
         六个数输出最小数。
3. 编写一个程序,从键盘上输入华氏温度,屏幕显示对应的
        摄氏温度。华氏温度和摄氏温度的转换公式为:
            c=(f-32)/1.8

ps:关于此文的所有内容,有对应的PPT文件,下面是下载地址:

01-C语言概述-自己使用的C语言教程PPT-适合老师备课或者自学-C文档类资源-CSDN下载


全部课程的PPT已经整理好了,需要的童鞋可以点击下载
总-自己使用的C语言教程PPT-适合老师备课或者自学-15篇PPT合集.zip-C文档类资源-CSDN下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锁住子锁不住

老少爷们向前冲!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值