C语言程序的设计总结_第1页
C语言程序的设计总结_第2页
C语言程序的设计总结_第3页
C语言程序的设计总结_第4页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、.C 语言程序设计总结一、 C 语言程序的基本结构#include“ stdio.h”void main()定义变量 ;程序实现 ;输出结果 ; printf二、变量的定义1 整型 :inta , b, s=0;(可以在定义的同时为变量进行赋值)长整型 : long无符号整型 (非负整数 ): unsigned2 单精度实型 : floatx, y, z=1.0 ;3 双精度实型 : doublel,m;4. 字符型 : charc1= Ac2=,; b 三、变量的赋值1 直接赋值 : a=10 ;/ 用赋值号 “ =将”右侧的值赋给左侧的变量.专业专注.2 赋表达式的值:a=3+7;3. 赋

2、另外一个变量的值: a=s;/ 把 s 的值赋给a变量的输入 :输入一个变量 : scanf( “%d ”,&a);输入多个变量 : scanf( “%d%d%d ”,&a, &b, &c);int-%dfloat-%fchar-%cdouble-%lf字符串 -%s变量的输出 :输出一个提示语句:printf( “xxxxxx ”);输出一个回车 : printf( “n ”);输出一个变量 : printf( “xxx is %d ”,a);输出多个变量 : printf( “xxxx%d, xxxx%d ”,a,b);练习:1输入圆的半径 ,求圆的周长 。

3、.专业专注.四、常用流程控制语句分支语句 :根据条件执行相应的语句条件的形式 : a 大于 0写成a>0a 小于 0写成a<0a 等于 0写成a=0(注意,用两个 =)a 大于等于0 并且小于等于10写成 a>=0 && a<=10a 小于 0或者 a 大于 10写成 a<0 | a>10(一)单分支 if 语句 (如果满足某个条件,就做某件事情,不满足就向下执行。)if( 条件 )执行语句 ; (二)双分支 if 语句 (如果满足某个条件,就做某件事情,否则就做另外一件事情。)if( 条件 )执行语句 1; else执行语句 2; (三)多

4、分支 if 语句 (满足哪一个条件,就做相应的语句。)if( 条件 1)执行语句 1; elseif( 条件 2)执行语句2; .专业专注.elseif( 条件 3)执行语句3; elseif( 条件 4)执行语句4; else执行语句5; (四) if 的嵌套 (根据具体情况对ifelse 语句进行灵活的运用)其格式如下 :if( 条件 1)if( 条件 2) 执行语句 a; else 执行语句b; elseif(条件 3) 执行语句 c; else 执行语句 d; (五 ) 多分支语句switch (根据switch后的值 ,执行相对应的case 语句 ,此语句了解即可,因为它的作用完全可

5、以用多分支if 来实现 )switch ( 表达式 ).专业专注.case 值 1:语句 1; break;case 值 2:语句 2; break;case 值 3:语句 4; break;case 值 n: 语句 n; break;default: 语句 n+1;练习:2某自助餐厅规定 ,浪费食物在20 克以下的 ,每克罚款2 元;如浪费超过20 克,则超过的部分每克加罚1 元。 编程求罚款金额 。3从键盘输入正方形的边长,如果边长大于零则求出该正方形的周长和面积,否则提示输入错误 。4输入 3 个数 x,y,z,求其中的最小值 。5输入 3 个数 x,y,z,将其中最大值放在 x 中,最

6、小值放在 z 中,中间值放在 y 中,然后输出 x,y,z。循环语句 :在条件成立时重复执行一组语句(一)当型循环while例如 :求 1+2+3+ 100while( 条件 )intn=1,s=0;while(n<=100)循环体s=s+n;.专业专注. . .n=n+1;(二)直到型循环 dowhile例如 :求 1+2+3+ 100dointn=1,s=0;do循环体 while( 条件 );s=s+n;n=n+1; while(n<=100);(三)知起至型循环 for例如 :求 1+2+3+ 100for( 循环变量初值 ;循环变量范围 ;步长 )intn=1,s=0;f

7、or(n=0;n<=100;n+)循环体s=s+n;(四)循环的嵌套说明 :for(i=1;i<n;i+)1假设某同学参与“打气球游戏 ”,该同学可以打5 局,每局可以打10 枪 。这里的每局10 枪就相当于内循环的.专业专注.for( j=1;j<m;j+)次数; 5局就相当于 5个10枪,也就是外循环的次数 。2这 5*10 枪不是一次性打完的,而且每一枪都要记是哪一局的哪一枪打出来的成绩 ,哪一局对应的是i,哪一枪对应的是 j。(五 ) 使用 break 可以强制退出循环,其用法必须配合if 来使用 :例如 : for(i=0;i<100;i+)if( 条件 );

8、break;练习:1编程求出公式 s=1-1/3 + 1/5-1/7+ 1/101的值并输出2编程输出如下图形 :.专业专注.* * * *3编程打印九九乘法表4编程打印出 2016 年 1 月份的日历注意:1 月份的总天数是31 天,其中 1 日是星期五 。日历如下 :一二三四五六日12345678910111213141516171819202122232425262728293031void main()int i,n,d;/i 是循环变量 ,n 代表总天数 ,d 代表星期 ;n=31;/n 代表一个月的天数d=5;/d 代表星期 ,星期一为 1,星期五为 5,星期日为 7printf(

9、"一 二 三 四 五 六 日n");/ 一个汉字占两个字符的位置.专业专注.for(i=1;i<d;i+)/ 开始日期之前用空格占位,每个日期对应 3 个空格printf("");for(i=1;i<=n;i+,d+)printf("%3d",i);if(d%7=0)printf("n");5. 在第 4 题的程序上进行修改 ,如果输入任意一个月的总天数及该月第一天的星期 (1 代表星期日 ,2 代表星期一 以此类推 ),能否打印出该月日历6. 计算 x 的 n 次方 (x 为双精度 ,n 为非负整数

10、)void main()double x,s;unsigned n,i;s=1;.专业专注.printf(" 请输入 x 和 n: ");scanf("%lf%u",&x,&n);for(i=1;i<=n;i+)s=s*x;printf("jieguo is %.2lf",s);.专业专注.四、数组一维数组1. 一维数组 :名字相同且带有下标的一组变量2. 定义形式 :类型名数组名 长度 例如 : inta10/a数组中包含有10个整型变量,名字分别是a0 、 a1 、a2 a9这里每一个an 都是一个普通的整数

11、变量3. 一维数组的初始化 :定义数组的时候就给每个数组元素赋值int a5=2,4,6,8,10;4. 对 a 数组中的每一个元素依次进行操作(访问 )的方法如下 :int i;for(i=0;i<9;i+) ai例如 :通过键盘输入给a 数组中的每个元素赋值将 a 数组中每一个元素都扩大2 倍统计 a 数组中奇数的个数求 a 数组中的最大值把 a 数组的元素进行逆置把 a 数组中的元素进行右移.专业专注.练习 :1从一维数组中查找x,并返回 x 所在的位置 ,否则提示没有找到。2求 fibonacci数列的第 n 项。3求任意一个数的1.21.6 倍存入数组 。4数组中存入10 个数

12、并进行循环左移二维数组1.二维数组 :名称相同且带有 2 个下标的一堆变量 ,逻辑上可看成 n 行 m 列的二维表格 。2.定义形式 :类型名数组名 行长度 列长度 例如 :int a34这里 a 数组中包含有3*4=12个数组元素 ,这 12 个元素的名字分别是:a00a01a02a03a10a11a12a13a20a21a22a233. 二维数组的初始化 :int a34=1,2,3,4,5,6,7,8,9,10,11,12;4. 对 a 中数组元素的访问 ,需要定义 2 个下标变量 i 和 j , aij 代表第 i 行第 j 列的元素 。按行的顺序访问 :按列的顺序访问 :int i,

13、j;int i,j;for(i=0;i<3;i+)for(j=0;j<4;j+)for(j=0;j<4;j+)for(i=0;i<3;i+) aij aij.专业专注.例如 :为二维数组中的每一个元素赋值将二维数组转置输出(行变列 ,列变行 )求每行的平均值求每列的总和求列上的最小值5. 行列相等的二维数组叫做矩阵 ,对矩阵的操作有 :求主对角线的和求次对角线的平均值输出该矩阵的上半三角元素练习 :1. 对一个 3*4 的数组 ,求列上的平均值2. 求一个 3*3 矩阵的主 、次对角线的平均值3. 利用数组输出以下图形字符串1. 字符串 :字符型的一维数组 ,可以存储一

14、串字符 ,并以 0 做为结束标志 。2 字符串的输入与输出.专业专注.char str120,str220,str320;gets(str1);/ 字符串的输入scanf( “%s ”,str2);/ 字符串的输入puts(str1);/ 字符串的输出 ;printf( “%s”,str2);/ 字符串的输出;3 对字符串的访问:如有 char s120; int n;字符串的长度:n=strlen(s1);第一个字符 : s10;最后一个字符: s1n-10 的位置 :s1n从第一个字符访问到最后一个字符:从最后一个字符访问到第一个字符:char s120;char s120;int i;i

15、nt i;gets(s1);gets(s1);for(i=0;si!=0;i+)for(i= strlen(s1)-1;i>=0;i-)si ;si ;4. 字符串常用函数 :注意 :用以下函数需要用#includestring“.h ”引入头文件 。连接字符串 : strcat(str1,str2).专业专注.比较两个字符串的大小: strcmp(str1,str2);求字符串的长度: strlen(str1);在字符串中查找一个字符,并返回其位置 : char c= a”; strchr(str1, c);复制字符串 : strcpy(str3,str1);在字符串str1 中查找字

16、串str2 的位置 : strstr(str1,str2)5 字符串常见操作把字符串逆置判断是否为回文五、函数(一)函数的定义 :1 无返回值 、无参函数的定义:例:定义一个能够输出10 个 ”*”的程序 。void函数名 ( )voidf1()定义变量 ;int i;实现功能 ;for(i=1;i<=10;i+)返回 ;printf( “*”);return;2. 无返回值 、有参函数的定义:例:定义一个能够输出n 个”*”的程序void函数名 (参数定义列表)voidf2(int n)定义变量 ;int i;.专业专注.实现功能 ;for(i=1;i<=n;i+)返回 ;pri

17、ntf( “*”);return;例:定义一个能够输出n 个指定字符的程序。voidf3(char c,int n)int i;for(i=1;i<=n;i+)printf( “%c”,c);return;3 有返回值有参函数的定义:例:定义一个计算两个整数加法的函数。类型函数名 (参数定义列表)int f4(int x,int y)定义变量 ;return (x+y);实现功能 ;返回 计算结果 ;例:定义一个能判断奇数的函数int f5(int x)这里 ”类型 ”一定要与 ”计算结果 ”一致。.专业专注.if(x%2=1)return 1;elsereturn 0;(二)函数的调用

18、1 无参函数调用:函数名 ()2 有参函数调用:函数名 (实参列表 )这里的实参可以是一个具体的值,或者一个已经有值的变量,也可以是一个表达式。3 函数的调用可以成为一个独立的语句,也可以参与到表达式中进行计算。例如 :调用 f1 函数: f1()调用 f2 函数: f2(5)或int n=20; f2(n);调用 f3 函数: f3( #,10) 或 char cc= $;int n=8; f3(cc,n);调用 f4 函数: int s,a=1,b=2;s=f4(a,b);调用 f5 函数: int x=7;if(f5(x)printf ( “奇数 ”)elseprintf( “偶数 ”)

19、;(三)指向一维数组的函数:f1(int a,int n).专业专注.int i;for(i=0;i<n;i+)ai;void main()int a10=1,2,3,4,5,6,7,8,9,10;f1(a,10);练习 :求 10 个数的和求 10 个数的平均值把 10 个数逆序输出求 10 个数中的最小值(四)指向字符串的函数:f2(chars)int i;.专业专注.for(i=0;si!=0;i+)si ;使用自定义函数的要点:1. 自定义函数要写在 main 函数的上方2.在分析程序的运行时要知道,程序的执行从main 函数开始 ,在 main 中结束3. 自定义函数可以接收主函数传递的多个参数4. 自定义函数每次只能返回一个结果给主函数5.自定义函数可以通过指针对主函数中的数值进行直接访问(操作 )6. 输入操作一般交给 main 函数练习 (全都用函数实现,输入输出由主函数负责,功能实现由自定义函数负责):求任意两个数的和、差、积(用三个自定义函数实现)求任意两个数的余数,如果输入的除数为0 要输出警告信息交换两个变量计算 x 的 10 次方 ( x 为双精度 )求等比数列2 4 8 16 32的第 n 项查找字符 c 在字符串 s 中第一次出现的位置连接两个字符串/* 连接两个字符串*/#include &quo

温馨提示

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

评论

0/150

提交评论