c语言第六章练习题PPT教学课件
合集下载
C语言全国计算机二级等级考试教程第六章字符(章节带习题)(ppt文档)

12 3<CR> 1 2 3<CR> 1 2 3<CR>
⊙ 如下的语句为数值数据和字符数据进行混合输入:
int a1,a2; char c1,c2; scanf(“%d%c%d%c”,&a1,&c1,&a2, &c2); 正确的读入形式: 10A 20B<CR> A和20之间必须有间隔符,间隔符的个数不限 此时变量a1接受的是10,c1接受的是‘A’, a2接受的是20,c2接受的是‘B’,
输出:putchar() 输入:getchar()
例如: char ch=‘A’; putchar(ch);
A
putchar(‘Y’); Y
例如: char ch; ch=getchar();
给字符变量接受字符
6.4 程序举例
例6.1 以下程序输出26个大写字母和它们的ASCII代码,每行输出两组数据。
第6章 字符型数据
6.1 字符型常量 6.2 字符变量 6.3 字符的输入和输出 6.4 程序举例
6.1 字符型常量
6.1.1 字符常量
字符常量:是用单引号括起来的一个字符。
例如
‘A’ ‘C’ ‘t’ ‘!’ ‘?’
说明
‘B’ ‘b’
是不同的字符常量
‘ ’ 单引号内是空格,也是合法的字符常量
例如
‘\n’ 回车换行符
‘\t’ 横向跳格符
‘\v’ 竖向跳格符
‘\r’ 回车符
‘\f’ 换页符
‘\b’ 退格符
‘\0’ 空值
‘\\’ 表示反斜杠
‘\‘’ 表示单引号
‘\“’ 表示双引号
‘\ddd’ 三位八进制数所代表的字符
c语言基础 ppt第6新章

20/51
函数的递归调用 例4 求n!
问题分析:计算n!的公式可写成如下形式
1 n 0,1 n! n *(n 1)! n 1
显然,这是一个递归形式的公式,在描述“阶乘”算法 时又用到了“阶乘”的概念。
递归结束的条件是n = 0或1。
21/51
函数的递归调用 例4 求n!
假
for j=0 to 6 输出结果
结 束
10/51
#include <stdio.h> #define N 7 void main() { int nCardArray[N]={13,8,6,1,2,3,4}; int t,i,j; for(i=0;i<N-1;i++) for(j=0;j<N-1-i;j++) if(nCardArray[j]>nCardArray[j+1]) { t=nCardArray[j]; nCardArray[j]=nCardArray[j+1]; nCardArray[j+1]=t; } for(i=0;i<N;i++) printf("%d ", nCardArray[i]); printf("\n"); 11/51 }
开 始 开 始 开 始
输入累加数 和指数
设定循环控制变量、初始 化、接收传入累加数和指数
设定循环控制变量、初始 化、接收传入底数和指数
调用Add(累加 数,指数)
for i=0 to 累加数
for i=0 to 指数
lSum+=Power (i, 指数) 输出结果
lPowerVal=lPowerVal*底数值
C语言程序设计第六章PPT课件

char str[20]; scanf(“%s”,str); /*str是地址 */ 2. printf的s格式串可以实现字符串的输出,例: printf(“%s”,str); /*str是地址 */ 3. gets从终端输入字符串行 形式:gets(str); str是存放字符串的起始地址。可以是字符数组名、字符数组
第3页/共16页
6.2 二维和多维数组
6.2.2 二维数组的引用
引用二维数组元素时必须带有两个下标,形式如下: 数组名[下标1][下标2]
6.2.3 二维数组存储
二维数组在内存中占据一系列连续的存储单元,数组元素按 行顺序存放,先放行下标是0的元素,再放行下标是1的元 素 , . . . a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]
第11页/共16页
6.3 字符数组和字符串
6.3.4.1字符串输入输出 --包含头文件stdio.h 4.puts向终端输出字符串 形式:puts(str); str是输出字符串的起始地址,从这一地址开始,依次输出存
储单元中的字符,直到遇到第一个‘\0’为止。并自动输出 一个换行符。 str是存放字符串的起始地址。可以是字符数组名、字符数组 元素地址或下一章将要介绍的字符指针。 6.3.4.2字符串处理函数 -- 包含头文件string.h 1.字符串复制函数strcpy。调用形式如下:
第7页/共16页
6.3 字符数组和字符串
6.3.2 字符串
C语言中没有字符串变量,通过字符数组可以实现相关的功能, 字符串是字符数组最普通的具体应用。
当要用字符数组存储(可能变化的)字符串时,应考虑: (1)定义变量时,考虑可能存储的最长字符串的长度。 (2)在字符数组中顺序存放字符串的每一个字符,最后加上
第3页/共16页
6.2 二维和多维数组
6.2.2 二维数组的引用
引用二维数组元素时必须带有两个下标,形式如下: 数组名[下标1][下标2]
6.2.3 二维数组存储
二维数组在内存中占据一系列连续的存储单元,数组元素按 行顺序存放,先放行下标是0的元素,再放行下标是1的元 素 , . . . a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]
第11页/共16页
6.3 字符数组和字符串
6.3.4.1字符串输入输出 --包含头文件stdio.h 4.puts向终端输出字符串 形式:puts(str); str是输出字符串的起始地址,从这一地址开始,依次输出存
储单元中的字符,直到遇到第一个‘\0’为止。并自动输出 一个换行符。 str是存放字符串的起始地址。可以是字符数组名、字符数组 元素地址或下一章将要介绍的字符指针。 6.3.4.2字符串处理函数 -- 包含头文件string.h 1.字符串复制函数strcpy。调用形式如下:
第7页/共16页
6.3 字符数组和字符串
6.3.2 字符串
C语言中没有字符串变量,通过字符数组可以实现相关的功能, 字符串是字符数组最普通的具体应用。
当要用字符数组存储(可能变化的)字符串时,应考虑: (1)定义变量时,考虑可能存储的最长字符串的长度。 (2)在字符数组中顺序存放字符串的每一个字符,最后加上
c语言程序设计第6章(谭浩强)PPT版本

/*ch5_1.c*/ #include <stdio.h> main() { int i,sum=0; 循环初值 i=1; loop: if(i<=100) { sum+=i; 循环变量增值 i++; goto loop; } printf("%d",sum); }
循环条件 sum=0+1 sum==1+2=3 sum=3+3=6 sum=6+4 …… sum=4950+100=5050 循环终值
例:#include<stdio.h> main( ) { int i=0; for(;i<10;i++) putchar(‘a’+i); }
例:#include<stdio.h> 例:#include<stdio.h> 运行结果:abcdefghij main( main( ) ) { {intint i=0; i=0; for(;i<10;) for(;i<10;putchar(‘a’+i),i++) ; putchar(‘a’+(i++)); } }
while 假(0) expr 真(非0) …… break; …… 真(非0)
do
…… break; …... while expr
假(0)
for expr1 switch 假(0) expr2 真(非0) …… break; …... const 1 语句组1 break; expr case const 2 语句组2 break; …... const n 语句组n break; default 语句组 break;
C语言程序设计--第六章(适于清华谭浩强版)PPT优秀课件

*/
printf("\n");
for (i=2;i<20;i++)
fib[i]=fib[i-1]+fib[i-2];
for (i=1;i<=20;i++)
{ printf("%10d",fib[i-1]);
if (i%5==0) printf("\n");
/*换行,每行输出5个
*/
}
}
15
例6.3 输入100个整数,求出最小的数以及第一个 最小的数在数组中的下标。
例如,int data[5]=1;
13
6.2.4 程序举例 例6.2用数组方式解决Fibonacci数列问题,求出 Fibonacci数列的前20项存储在数组中,并将数 组内容输出。
14
#include "stdio.h"
void main() { int i,fib[20]={1,1};
/*初始化
例6.4 输入100个整数,从小到大排列并输出 。 选择排序
例6.5 输入100个学生的“C程序设计”课程的期 中和期末成绩,算出总评成绩,总评成绩为 “30%×期中成绩+70%×期末成绩”,计算总
评 成绩的分Leabharlann 段情况。本题要使用三个平行的数组才能解决问题。 这三个数组的第i个元素记录了一个学生的期中
但不能是浮点型的变量或浮点型表达式;并且 下标不能大于[数组长度-1],因为超过部分没 有被定义过,是不能正确使用的。
图。 例如:data[4]、data[i+j]、data[i++]都是 合法的引用方式。
9
例6.1用数组方式读入5个整数,并求和。
C语言程序设计实用教程 第6章.ppt

for(i=0;i<N;i++)
if(score[i]>aver) n++;
printf(“average=%.2f \n ”,aver);
printf(“n=%d”,n);
}
6.1.2 数组中的相关概念
1.数组:是指一组具有相同类型的数据的有序的集合。
2.数组下标:是数组元素在数组中位置的一个索引或指示。
printf(“please input students grade:”);
for(i=0;i<N;i++)
score[i]是数组元素,用来存放第i个
{ scanf(“%f”,&score[i]); 学生成绩*
sum=sum+score[i]; /*将学生成绩累加到总分中 */
}
aver=sum/N;
则数组a中元素的初始值为系统分配给数组元素的内存单 元中的原始值,这些值对编程者来说是不可预知的,因此 在使用时要注意。
(2)若定义数组时在类型名前面加一个关键字static,即将 数组定义成静态存储,这时不为数组赋初值,系统也会自 动将全部元素赋以0值。例如: static int b[5]; 表示定义了一个静态数组b,该数组中所有元素值均为0。
aver=sum/100;
/*求出平均成绩*/
在本程序中能否统计高于平均分的学生人数呢?
用数组来解决这个问题,不仅效率高而且程序编写容易。
#define N 100 void main()
score[N]表示数组,用来存放 N个学生的成绩
{ int i,n=0;
float score[N],sum=0,aver;
一维数组的初始化有以下几种情形:
C语言程序设计教程 第6章PPT教学课件

17
函数返回值
函数返回值通过return语句获得 函数返回值的类型就是函数的类型
return y; 将变量y的值返回给调用者
return y+3; 将表达式的值返回给调用者
18
return 的数据类型与函数的类型矛盾时, 自动将数据转换成函数的类型
int funct1()
{ char ch; if((ch=getch( ))<'a'||(ch >'z') return ch;
14
函数的参数
int max(int a,int b) { int y; y=(a>b)? a:b; return y; } 调用时:
m=max(3,6); m=max(a,b);
函数中是变量名, 在函数调用时,形参被分配相应的内存
2) 实际参数是表达式 负责向对应的形参标 识的内存单元传递数据
8
函数举例
• #include <conio.h>
main()
{ int a,b,m;
/*说明变量*/
int max(int a,int b); /*函数声明*/
scanf("%d,%d",&a,&b); /*调用库函数scanf*/
m=max(a,b);
/*调用字定义函数max*/
printf("max=%d\n",m)); /*调用库函数printf*/
3
模块与函数
C语言程序由基本语句和函数组成, 每个函数可完成相对独立的任务, 依一定的规则调用这些函数,就组 成了解决某个特定问题的程序。
把大任务分解成若干功能模块, 用多个函数来实现这些功能模块。 通过函数的调用来实现完成大任务的全 部功能。
C语言程序设计教程第6章.ppt

C语言程序设计教程
第六章 函数与编译预处理
6.1 模块化程序设计与函数 6.2 函数的定义与调用 6.3 函数的递归调用 6.4 变量的作用域与存取方式 6.5 编译预处理
第6章 函数与编译预处理
2
6.1模块化程序设计与函数
在设计较复杂的程序时,我们一般采用 的方法是:把问题分成几个部分,每部分 又可分成更细的若干小部分,逐步细化, 直至分解成很容易求解的小问题。这样的 话,原来问题的解就可以用这些小问题来 表示。
C语言程序设计教程
第6章 函数与编译预处理
8
void main() {float a,b,c; scanf("%f,%f,%f", &a,&b,&c);/* 输入 */ sortabc(&a,&b,&c); /* 排序 */ putabc(a,b,c); /* 输出a,b,c三个数 */ }
C语言程序设计教程
C语言程序设计教程
基本概念
基本模块
模块
模块
模块
模块
模块
模块
模块
模块
模块
2019/4/5
3第6章 函数与编译预处理 Nhomakorabea4
模块与函数
C 语言程序由基本语句和函数组成, 每个函数可完成相对独立的任务, 依一定的规则调用这些函数,就组 成了解决某个特定问题的程序。
C语言程序设计教程
第6章 函数与编译预处理
C语言程序设计教程
第6章 函数与编译预处理
15
每个模块应用独立变量
模块内使用的数据,对于不需要这些数据的其它模块来说, 应该不允许使用;在一个模块内的变量的修改不会影响其 它模块的数据。即模块的私有数据只属于这个模块。C语言 的局部变量,就是满足模块独立的的需要。
第六章 函数与编译预处理
6.1 模块化程序设计与函数 6.2 函数的定义与调用 6.3 函数的递归调用 6.4 变量的作用域与存取方式 6.5 编译预处理
第6章 函数与编译预处理
2
6.1模块化程序设计与函数
在设计较复杂的程序时,我们一般采用 的方法是:把问题分成几个部分,每部分 又可分成更细的若干小部分,逐步细化, 直至分解成很容易求解的小问题。这样的 话,原来问题的解就可以用这些小问题来 表示。
C语言程序设计教程
第6章 函数与编译预处理
8
void main() {float a,b,c; scanf("%f,%f,%f", &a,&b,&c);/* 输入 */ sortabc(&a,&b,&c); /* 排序 */ putabc(a,b,c); /* 输出a,b,c三个数 */ }
C语言程序设计教程
C语言程序设计教程
基本概念
基本模块
模块
模块
模块
模块
模块
模块
模块
模块
模块
2019/4/5
3第6章 函数与编译预处理 Nhomakorabea4
模块与函数
C 语言程序由基本语句和函数组成, 每个函数可完成相对独立的任务, 依一定的规则调用这些函数,就组 成了解决某个特定问题的程序。
C语言程序设计教程
第6章 函数与编译预处理
C语言程序设计教程
第6章 函数与编译预处理
15
每个模块应用独立变量
模块内使用的数据,对于不需要这些数据的其它模块来说, 应该不允许使用;在一个模块内的变量的修改不会影响其 它模块的数据。即模块的私有数据只属于这个模块。C语言 的局部变量,就是满足模块独立的的需要。