C 语言实训材料.docx_第1页
C 语言实训材料.docx_第2页
C 语言实训材料.docx_第3页
C 语言实训材料.docx_第4页
C 语言实训材料.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HelloWorld程序Windows下的编程工具使用 VC 6.0,下面讲解如何在VC 6.0下运行上节的“Hello, world”程序。 【例1-1】 打印Hello World/* 第一个C语言程序打印 Hello, world */#include /包含头文件stdio.hint main() / 主函数 printf(Hello, wordn); / 打印字符串 return 0; / 返回0,表示程序正确运行1) 新建Win32 Console Application工程打开VC6.0,在菜单栏中选择“文件 - 新建”,或者 Ctrl+N,弹出下面的对话框: 切换到“工程”选项卡,选择“Win32 Console Application”,填写工程名称和路径,点击“确定”,会弹出一个对话框询问类型,这里选择“一个空工程”,如下图所示: 点击“确定”完成创建。“Win32 Console Application”是控制台应用程序,这样的程序类似 doc 或 cmd,没有漂亮的界面,可以显示字符。 2) 新建C源文件在菜单栏中选择“文件 - 新建”,或者 Ctrl+N,弹出下面的对话框: 切换到“文件”选项卡,选择“C+ Source File”,填写文件名,点击确定完成。该步骤是向刚才创建的工程添加源文件;C语言源文件一般以 .c 为后缀。 3) 编写C语言代码在工作空间中可以看到刚才创建的工程和源文件,入下图所示: 双击 hello.c,进入编辑界面,输入例1-1中的代码。 4) 编译并运行代码C语言源代码,必要要经过编译、组建(也被称为“链接”)和运行才能看到输出结果: l 编译将C语言代码“翻译”成机器码(这里暂时可以理解成0和1序列)。l 组建将工程所需的所有资源集合到一起,最终生成 .exe文件。l 运行就是执行 .exe 程序,和运行其他程序一样,双击即可。编译、组建、运行的功能可以在“组建”中找到,如下图所示: 更加简单的方法是使用快捷方式,如下图所示: 对于初学者,最常用的是运行按钮,编写完代码,一次点击就可以看到输出结果。当然,你也可以用快捷键:Ctrl+F7(编译)、F7(组建)、Ctrl+F5(运行)。刚才我们已经编写了源代码,保存后,点击运行按钮或 Ctrl+F5,如果程序正确,可以看到运行结果,如下图所示: 你已经完成了第一个C语言程序,越过了第一道障碍。注意:编译生成的 .exe 文件在工程目录下的Debug文件夹内。以上面的工程为例,路径为E:cDemo,打开看到有一个Debug文件夹,进入可以看到 cDemo.exe。两个练习请大家再运行下面两个程序,体会一下C语言的结构。【例1-2】输出1+2+3+.+99+100的值。#include / 包含stdio.h头文件int main() int i, total=0; / 声明两个整型变量 /* for语句用来循环 i的起始值为 1,每循环一次加 1,i100 时退出循环 */ for(i=1; i=100; i+) total+=i; / 加法运算,也可以写作 total=total+i printf(1+2+3+.+99+100=%dn, total); / 将total以整数形式输出 return 0;【例1-3】输出两个整数中较大的数#include / 包含stdio.h头文件int main() int i, total=0; / 声明两个整型变量 /* for语句用来循环 i的起始值为 1,每循环一次加 1,i100 时退出循环 */ for(i=1; i=100; i+) total+=i; / 加法运算,也可以写作 total=total+i printf(1+2+3+.+99+100=%dn, total); / 将total以整数形式输出 return 0;例1 打印Hello World/* 第一个C语言程序打印 Hello, world */#include /包含头文件stdio.hint main() / 主函数 printf(Hello, wordn); / 打印字符串 return 0; / 返回0,表示程序正确运行关于编译和链接将在下一节说明,这里先对程序进行解释: l 第1行包含标准库文件,include称为文件包含命令,扩展名为.h的文件称为头文件。l 第2行定义名为main的函数,它不接受参数值;main函数的语句都被括在花括号中;int为main函数返回值类型。l 第3行打印“Hello, world”,main函数调用库函数printf以显示字符序列。l 第4行表示main函数的返回值为0,return让函数返回一个值。l 第5行结束main函数,花括弧必须成对出现。位于“/* */”中和“/”后面的内容为注释,用来对程序进行说明;注释在编译时会被自动忽略。一个C语言程序,无论其大小,都是由函数和变量组成的。函数具有某些特定功能,能执行特定操作;函数中包含一些语句,以说明操作的过程。变量则用于存储计算过程中使用的值。在本例中,函数的名字为main。通常情况下,函数的命名没有限制,但main是一 个特殊的函数名,每个程序都从main函数的起点开始执行,这意味着每个程序都必须在某 个位置包含一个main函数。main函数通常会调用其它函数来帮助完成某些工作,被调用的函数可以是我们自己编写的,也可以来自于函数库。上述程序段中的第一行语句#include 用于告诉编译器在本程序中包含标准输入/输出库。许多C语言源程序的开始处都包含这一行语句。我们将在后续章节对标准库进 行详细介绍。函数之间进行数据交换的一种方法是调用函数向被调用函数提供一个值(称为参数)列表。函数名后面的一对圆括号将参数列表括起来。在本例中,main函数不需要任何参数,因此用空参数表( )表示。printf(Hello, wordn);return 0;调用函数时,只需要使用函数名加上用圆括号括起来的参数表即可。上面这条语句将hello, worldn作为参数调用printf函数。printf是一个用于打印输出的库函数,在此处, 它打印双引号中间的字符串。用双引号括起来的字符序列称为字符串或字符串常量,如hello, worldn就是一个字符串。目前我们仅使用字符串作为printf及其它函数的参数。在C语言中,字符序列n表示换行符,在打印中遇到它时,输出打印将换行,从下一行的左端行首开始。如果去掉字符串中的n(这是个值得一做的练习),即使输出打印完成后也不会换行。在printf函数的参数中,只能用n表示换行符。如果用程序的换行代替,例如: printf(Hello, word );C编译器将会产生一条错误信息。printf函数永远不会自动换行,这样我们可以多次调用该函数以分阶段得到一个长的输出行。上面给出的第一个程序也可以改写成下列形式:#includeint main() printf(Hello, ); printf(word); printf(n); return 0;C语言的基本概念1. 标识符在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C语言规定,标识符只能是字母(AZ, az)、数字(09)和下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。以下标识符是合法的:a, x, x3, BOOK_1, sum5以下标识符是非法的:3s 以数字开头s*T 出现非法字符*-3x 以减号(-)开头bowy-1 出现非法字符减号(-)在使用标识符时还必须注意以下几点: 标准C语言不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。例如在某版本C语言中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。 在标识符中,大小写是有区别的。例如BOOK和book 是两个不同的标识符。 标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便于阅读理解,作到“顾名思义”。2. 关键字关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应与关键字相同。C语言的关键字分为以下几类:分类说明类型说明符用于定义、说明变量、函数或其它数据结构的类型。如前面例题中用到的int、double等。语句定义符用于表示一个语句的功能。如【例1-3】中用到的if else就是条件语句的语句定义符。预处理命令字用于表示一个预处理命令。如前面各例中用到的include。2. 运算符C语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成,如加号(+)、减号(-)、乘号(*)等。4. 分隔符在C语言中采用的分隔符有逗号(,)和空格两种。逗号主要用在类型说明和函数 参数表中,分隔各个变量。空格多用于语句各单词之间,作间隔符。在关键字,标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误,例如把 int a; 写成 inta; C语言编译器会把 inta当成一个标识符处理,其结果必然出错。5. 常量常量是值不能被改变的量。C语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。在后面章节中将专门给予介绍。 6.变量变量由用户自己命名,用来保存特定类型的数据,数据可以被改变。数据类型有整数、浮点数、字符等,将在后面章节进行介绍。7. 注释标准C语言的注释是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任 何位置。注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不作处理,待调试结束后再去掉注释符。另外,各种编译器都支持以“/”开头的注释,虽然它不是标准C的规定,但是早已成为事实标准,在程序中广泛使用。“/”仅支持单行注释,也就是说,注释中不能出现换行符;而“/* */”支持多行注释,注释中可以出现换行符。8. 输入输出函数前面的几个例子都用到了输出函数printf,例1-3还用到了输入函数scanf,这里我们先简单介绍一下它们的格式,以便后面使用。scanf和 printf这两个函数分别称为格式输入函数和格式输出函数。其意义是按指定的格式输入输出值。因此,这两个函数在括号中的参数都由以下两部分组成:1) 格式控制串:格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。在printf函数中可以在格式控制串内出现非格式控制字符,这时在显示屏幕上会显示源字符串。在scanf函数中也可以在格式控制串内出现非格式控制符,这时会将输入的数据以该字符为分隔。2) 参数表:参数表中给出了输入或输出的变量。当有多个变量时,用英文逗号(,)分开。例如:printf(sine of %lf is %lfn,x,s);/ %lf为格式字符,表示按双精度浮点数处理,它在格式串中两次现,对应了x和s两个变量/ 其余字符为非格式字符则照原样输出在屏幕上。scanf(%d %fa%c, &intNum, &floatNum, &c);/ %d, %f, %c为格式字符/ 表示将输入的数据分别以整数、浮点数和字符形式赋值给变量intNum, floatNum,c/ 其中的空格和a为分隔符/ 变量intNum, floatNum,c都有一个&符号,表示取地址【例2-1】对例1-3稍加修改,在printf中使用多个参数,在scanf中使用|作为分隔符。#include / 包含stdio.h头文件int max(int, int); / 函数声明int main() int a, b, n; / 声明两个整型变量 printf(Input two integers: ); / 以空格为分隔 / 以|为分隔符,将输入的两个整数分别赋值给a, b scanf(%d|%d, &a, &b); / 以整数形式输出a、b和最大值,a, b, max(a,b)为参数列表 n = max(a, b); printf(The max between %d and %d is %d.n, a, b, n); return 0;/ 函数定义int max(int num1, int num2) / num1, num2为形式参数(形参) if(num1num2) / 如果num1大于num2 return num1; / 返回num1并结束max函数 else / 如果num2大于num1 return num2; / 返回num2并结束max函数 运行结果:Input two integers: 12|34The max between 12 and 34 is 34.上面例中程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。本程序由两个函数组成,主函数main和max 函数。函数之间是并列关系。可从主函数中调用其它函数。max 函数的功能是比较两个数,然后把较大的数返回给调用函数 - main函数。max函数是一个用户自定义函数。因此在使用前要给出说明(程序第3行)。可见,在程序的说明部分中,不仅可以有变量说明,还可以有函数说明。关于函数的详细内容将在后续章节介绍。上例中程序的执行过程是,首先在屏幕上显示提示,请用户输入两个数,以|为分隔,回车后由scanf函数语句接收这两个数送入变量a、b中,然后调用 max函数,并把x、y的值传送给max函数的参数a、b。在max函数中比较a、b的大小,把大者返回给main函数中的变量n。简单的实例程序【例3-1】把一个整数按大小顺序插入已排好序的数组中。为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即 可。如果被插入数比所有的元素值都小则插入最后位置。#include int main(void) int i,j,p,q,s,n,a11=127,3,6,28,54,68,87,105,162,18; for(i=0;i10;i+) p=i;q=ai; for(j=i+1;j10;j+) if(qaj) p=j;q=aj; if(p!=i) s=ai; ai=ap; ap=s; printf(%d ,ai); printf(ninput number:n); scanf(%d,&n); for(i=0;iai) for(s=9;s=i;s-) as+1=as; break; ai=n; for(i=0;iai时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a9开始到ai为止)。 后移结束跳出外循环。插入点为i,把n赋予ai即可。 如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a10。最后一个循环输出插入数后的数组各元素值。【例3-2】在二维数组a中选出各行最大的元素组成一个一维数组b。a=( 3 16 87 65 4 32 11 108 10 25 12 37)b=(87 108 37)本题的编程思路是,在数组A的每一行中寻找最大的元素,找到之后把该值赋予数组B相应的元素即可。程序如下:#include int main(void) int a4=3,16,87,65,4,32,11,108,10,25,12,27; int b3,i,j,l; for(i=0;i=2;i+) l=ai0; for(j=1;jl) l=aij; bi=l; printf(narray a:n); for(i=0;i=2;i+) for(j=0;j=3;j+) printf(%5d,aij); printf(n); printf(narray b:n); for(i=0;i=2;i+) printf(%5d,bi); printf(n); return 0;程序中第一个for语句中又嵌套了一个for语句组成了双重循环。外循环控制逐行处理,并把每行的第0列元素赋予l。进入内循环后,把l与后面各列元素比 较,并把比l大者赋予l。内循环结束时l 即为该行最大的元素,然后把l值赋予bi。等外循环全部完成时,数组b中已装入了a各行中的最大值。后面的两个 for语句分别输出数组a和数组b。【例3-3】输入五个国家的名称按字母顺序排列输出。本题编程思路如下:五个国家名应由一个二维字符数组来处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论