C语言程序设计5
C语言程序设计教程(第5章 函数)
22
信息科学与工程学院
作用域(可用域)与生存期
C语言中定义的变量都有一个起作用的范 围,称为变量的作用域。 程序运行时,变量被创建和被删除的时间 段,称为变量的生存期。
23
信息科学与工程学院
局部变量和全局变量
在一个函数内部定义的变量是内部变量, 它只在本函数内部范围内有效。也就是说 只有在本函数内才能使用它们。这些变量 称为“局部变量”。 在函数之外定义的变量称为外部变量,也 称为全局变量,在文件内的所有函数都能 使用它。它的有效范围为从定义变量的位 置开始到文件的结束。
4
信息科学与工程学院
5.1 问题的提出
C语言程序是由什么构成的? 函数 什么是函数?
能完成特定功能的功能块; 一般有输入参数 和返回值; 一次定义,可以调用多次。
一个C语言程序为什么需要不同的函数?
一个函数过大难于编写和维护; 一个函数的程序不利于协作; 代码和功能共享的需要。
5
信息科学与工程学院
6. 函数调用举例分析(见下页)
15
信息科学与工程学院
实参到形参是单向值传递 例2 求两个整数中的最大值
int max(int x,int y) /*函数定义*/ { int temp; if (x>y) temp=x; else temp = y; COPY return temp; } void main() { int a,b; scanf("%d,%d",&a,&b); a = max(a,b); /*函数调用*/ printf("\n max= %d \n",a); }
2
信息科学与工程学院
第5章 函数
本章需要掌握的知识点: 函数定义 函数说明 函数调用 形参和实参的关系 变量的存储类别
C语言程序设计习题5
习题5参考解答1.数组是相同数据类型的集合,分为一维数组、二维数组及多维数组。
在什么情况下使用数组?在什么情况下使用一维数组?解:当需要处理的数据为相同类型的数据的集合时,可以使用数组。
如果这些数据的描述用一个量就可以,这时就用一维数组。
例如,一组学生的学号,就可以使用一维数组。
2.数组元素又称为下标变量,数组元素的下标有何意义?解:下标的意义是对数组的各个数组元素进行标识和区分。
由数组名和下标结合起来形成数组元素的名字。
3.使用字符数组来存储字符串应注意什么问题?解:需要注意的问题是字符数组在存储字符串时是以'\0'作为结束标记的。
这个'\0'是系统自动加上的。
所以字符数组的长度需要比它要存储的字符串的长度至少多1。
例如,要存储字符串"abcd",因为它的长度为4,所以存储它的字符数组的长度至少为5。
4.常用的字符处理函数有哪些?解:常用的字符处理函数有以下8个。
(1)puts(字符串):作用为将一个字符串输出到终端。
(2)gets(字符数组):作用为从终端输入一个字符串到字符数组,并且得一个函数值。
(3)strcat(字符串1,字符串2):作用为进行字符串的连接。
(4)strcpy(字符串1,字符串2):作用为进行字符串的复制。
(5)strcmp(字符串1,字符串2):作用为进行字符串的比较。
(6)strlen(字符串):作用为求字符串的长度。
(7)strlwr(字符串):作用为将字符串中的大写字母转换成小写字母。
(8)strupr(字符串):作用为将字符串中的小写字母转换成大写字母。
5.随机产生10个两位整数存储到一个一维数组中,找出其中的最大数。
解:#include<stdio.h>#include<stdlib.h>#define random(x) (rand()%x) int main(){int a[10],max;int x;for(x=0;x<10;x++)a[x]=random(100);max=a[0];for(x=0;x<10;x++){if(a[x]>max)max=a[x];printf("%4d",a[x]);}printf("\nmax=%d\n",max);return 0;}程序运行结果如下:41 67 34 0 69 24 78 58 62 64 max=786.输入10个整数,要求按照从小到大的顺序输出。
c语言程序设计第五版习题答案
c语言程序设计第五版习题答案1. 基础语法练习1.1 写一个程序,要求用户输入两个整数,然后计算并输出这两个整数的和。
```c#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);int sum = num1 + num2;printf("两个整数的和为:%d\n", sum);return 0;}```1.2 写一个程序,要求用户输入一个字符,然后判断该字符是否为数字字符('0'-'9')。
```c#include <stdio.h>int main() {char ch;printf("请输入一个字符:");scanf(" %c", &ch); // 注意空格if (ch >= '0' && ch <= '9') {printf("该字符是一个数字字符。
\n");} else {printf("该字符不是一个数字字符。
\n");}return 0;}```2. 控制流程练习2.1 写一个程序,找出1~100之间所有能被7整除的数,并输出它们的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 7 == 0) {printf("%d ", i);sum += i;}}printf("\n这些数的和为:%d\n", sum); return 0;}```2.2 写一个程序,打印如下图案:```***************``````c#include <stdio.h>int main() {for (int i = 1; i <= 5; i++) {for (int j = 1; j <= i; j++) {printf("*");}printf("\n");}return 0;}```3. 数组和字符串练习3.1 写一个程序,输出一个5x5的矩阵,矩阵元素由用户输入。
C语言程序设计:第5章 循环结构
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
C语言程序设计教程 第五章 课后习题参考答案
k++;
if(k%5==0)
printf("\n");
f1=f2;
f2=f;
}
printf("\n");
return 0;
}
P124 3统计一个整数的位数
#include<stdio.h>
int main()
{
int n,k=0;
printf("请输入n的值:");
int main()
{
int x,y,z,i=0;
for(x=1;x<=20;x++)
{
for(y=1;y<=33;y++)
{
for(z=3;z<=99;z=z+3)
{
if((5*x+3*y+z/3==100)&&(x+y+z==100))
i++;
}
}
}
printf("共有%d种买法:\n",i);
c语言程序设计教程第五章课后习题参考答案
P1242古典问题:兔子总数(斐波那契数列)
#include<stdio.h>
int main()
{
int f1=1,f2=1,f,i,k=0;
printf("%d\t %d\t",f1,f2);
k=k+2;
for(i=3;i<=20;i++)
{
f=f1+f2;
do
{
printf("请输入第%d个整数x=",i);
C语言程序设计第5单元
例5.2流程图
N
8
5.1 while语句
程序代码: #include<stdio.h> main() { int i=1,n;
float fac=1; printf("please input an integer>=0:\n"); scanf("%d",&n); if(n==0||n==1)
printf("factorial is 1.\n"); else
int i,sum=0,score; float ave=0; printf("\n计算学生总成绩和平 均成绩\n"); printf("请输入10名学生的成 绩:\n");
for(i=1;i<=10;i++) { scanf("%d",&score); sum=sum+score; } ave=sum/10.0; printf("总成绩为%d 平均成绩为
1. break语句
出现在循环体中的break语句使循环结束。若在多层循环体 中使用break语句,则只结束本层循环。
【例5.11】使用for语句输出50个“*”,使用break控制数量。
#include <stdio.h>
main()
{
int i;
for(i=1;;i++)
{
if(i>50) break;
方法三:
#include "stdio.h"
int main()
{
int i=1;
for(;i<=10;)
{
C语言程序设计-第5章--函数
实参可以是常量、变量或表达式,但要求 它们必须要有确定的值,在调用时将实参 的值赋给形参。另外,实参和形参的类型 应相同或兼容。
— 31 —
5.2 函数的参数传递和返回值
➢ 5.2.2 函数的返回值
一般情况下,主调函数调用完被调函数后,都希望能够得到一 个确定的值,这就是函数的返回值。在C语言中,函数返回值 是通过return语句来实现的。return语句的一般形式有3种:
/*函数声明*/
/*调用逆序函数,将a的逆序值赋给b*/ /*调用逆序函数,将b的逆序值赋给c */
— 23 —
5.2 函数的参数传递和返回值
➢ 5.2.1 函数的形参与实参
{
int y=0,sign=1;
/*定义sign表示x的符号,定义变量y代表逆序数据*/
if(x<0)
/*当x小于0时取符号及取反*/
— 18 —
5.1 函数的定义和调用
➢ 5.1.2 函数的调用
另外,按函数在语句中的作用来分,可以有以下3种函数调用方式:
函数表达式
函数语句
函数作为实参
函数作为表达式中的一项出 现,以函数返回值参与表达 式的运算。
函数调用的一般形式加上分 号即构成函数语句。
函数作为另一个函数调用的 实际参数出现,即把该函数 的返回值作为实参进行传送。
#include<stdio.h> int main() {
int x=0,y; y=trans(x); printf("y=%d\n",y); printf("x=%d\n",x); return 0; } trans(int a) { a++; printf("a=%d\n", a); return a; }
c语言程序设计第五版教学设计
C语言程序设计第五版教学设计一、教学目标通过学习本章课程,学生应该能够掌握以下知识:1.了解C语言的数据类型和控制结构2.掌握如何定义函数和使用函数3.了解指针和数组的使用方法4.熟悉C语言的文件操作二、课程安排第一节课:C语言初步介绍1.C语言简介及开发环境搭建2.C语言程序的基本结构和语法规则第二节课:数据类型和变量1.C语言的数据类型2.常量和变量的定义和使用3.进制转换和位运算第三节课:控制结构和循环语句1.条件语句、循环语句和跳转语句2.选择结构和循环结构3.“switch…case”语句的使用方法第四节课:函数的定义和应用1.函数的基本概念2.函数的语法和规则3.函数的调用和参数传递第五节课:指针和数组1.指针和地址的概念2.操作指针变量3.数组的定义和使用方法4.递归函数和指针数组第六节课:文件操作1.文件的打开和关闭2.文件的读写操作3.二进制文件和文本文件的区别三、教学方法1.讲授法:通过PPT和白板讲解课程内容2.互动讨论:在学生学习的过程中引导学生发表自己的看法和思路3.实践操作:在课堂上编写一些简单的程序来帮助学生更好地理解和掌握知识点四、评估方法1.平时成绩:平时考勤、作业、课堂发言和实践操作等占20%的成绩2.期中考试:占30%的成绩3.期末考试:占50%的成绩五、教学资源1.课程教材:《C语言程序设计》第五版2.PPT课件:根据课程内容编写的PPT课件3.开发工具:Visual Studio、Dev-C++、Codeblocks等六、教学建议1.学生学习本章内容之前,需要具备一定的编程基础,包括基本的编程语法和逻辑思维能力2.在课程安排中加入一些有趣的案例或编程实例,以激发学生的兴趣3.引导学生在课程学习之外进行更多的实践操作和编程实践,以巩固学习效果七、总结本章课程是C语言程序设计入门的基础,是学生进一步深入学习C语言的重要基础。
通过本章课程的学习,学生可以掌握C语言的基本语法、数据类型和控制结构,以及函数、数组和指针的使用。
C语言实验五最简单的C语言程序设计
C语⾔实验五最简单的C语⾔程序设计实验5:最简单的C语⾔程序设计⼀、实验⽬的:(1)掌握C语⾔中使⽤最多的⼀种语句——赋值语句的使⽤⽅法。
(2)掌握各种类型数据的输⼊输出的⽅法,能正确使⽤各种格式转换符。
(3)进⼀步掌握编写程序和调试程序的⽅法。
⼆、实验内容和步骤:1、通过下⾯的程序掌握各种格式转换符的正确使⽤⽅法。
(1)输⼊以下程序:/* Note:Your choice is C IDE */# includeint main( ){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61,b=62;c1='a';c2='b';d=3.56;e=-6.87;f=3157.890121;g=0.123456789;m=50000;n=-60000;p=32768;q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%1d\np=%u,q=%u\n",f,g,m,n,p,q);显⽰结果:(2)运⾏此程序并分析结果。
(3)在此基础上,将程序第10~14⾏改为c1=a,c2=b;f=3157.890121;g=0.123456789;d=f;e=g;运⾏程序,分析结果。
/* Note:Your choice is C IDE */#include"stdio.h"int main(){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61;b=62;c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\n",f,g,m,n,p,q);}显⽰结果:(4)⽤sizeof运算符分别检测程序中各类型的数据占多少字节。
c语言程序设计5(函数)
参数的传递
1. 函数调用时,被调函数中的形参被分配 临时的存储单元,实参的值赋给形参变量 2. 实参可以是常量、变量或表达式 3. 实参的个数、类型和顺序必须与形参一致 4. 形参与实参各占一个独立的存储空间,调 用结束后,形参单元被释放
形参值的改变不会影响实参-----值传递
例:P134 main( ) { int v1=10, v2=20; printf(“v1=%d v2=%d\n”,v1,v2); printf(“_ do swap _\n”); swap(v1,v2); printf(“v1=%d v2=%d\n”,v1,v2); } void swap(int x, int y) { int temp; v1=10 v2=20 temp=x; _ do swap _ x=y; y=temp; v1=10 v2=20 }
自定义函数的应用实例
P136 例3:输出“九 九表”。 它是一个
9行9列的二维表格,
加上一个行标题和一
个列标题,显示出来
应该是10行10列。
#include <stdio.h> void drawLine(int n,char ch); /* 连续显示n个ch字符 */ main() { int i,j; printf("\n 9.9 table\n"); /* 显示表名 */ drawLine(30, '='); /* 显示每列的标题 */ printf("\n 1 2 3 4 5 6 7 8 9"); drawLine(30, '='); for (i=1; i<=9; i++) { /* 显示每行的内容 */ printf("\n%3d", i); for (j=1; j<=9; j++) printf("%3d", i*j); if (i<9) drawLine(30, '-'); else drawLine(30, '='); } void drawLine(int n, char ch) /*连续显示n个ch字符*/ } { int i; putchar('\n'); /*换行*/ for (i=1; i<=n; i++) putchar(ch); /*连续显示n个字符ch*/ }
C语言程序设计实验五 参考答案
答案:
#include<stdio.h>
void main()
{
int i,j,num=0;
for(i=3;i<=1000;i++)
{
for(j=2;j<=1000;j++)
if(i%2==0)
break;
5-4从键盘输入一个整数n,计算2n+1与++n之和。要求计算两数之和用函数实现。
答案:
#include<stdio.h>
void main()
{
int a;
int sum(int n);
printf("input n:\n");
scanf("%d",&a);
sum(a);
}
int sum(int n)
if(i%2!=0)
{
printf("%5d",i);
num++;
if(num%10==0)
printf("\n");
}
}
printf("\n");
}
*************************************************************************************************************实验三*******************************************
c语言程序设计实验五参考答案实验解答实验五参考答案编程语言c语言吧c语言答案
《C语言程序设计》第5章数组、字符串、指针
相当于声明了5个整型变量
说明: ① 数组的所有元素的数据类型都是相同的。 ② 数组取名规则应符合标识符的规定,数组 名不能与同一函数中其它变量名相同: int a; float a[10]; 是错误的。
③ C语言中规定数组的下标从0开始,方括号 中常量表达式表示数组元素的个数。
④ 不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。例如: int n=5,a[n]; 是错误的。
二维数组在内存的存放顺序是“先行后列”
a[0][0] a[0][1] a[0][2] a[0][3] a[1][0]
…
a[2][3]
5.3.2 二维数组元素的引用
二维数组的元素的引用形式为: 数组名[下标][下标] 使用二维数组的情况举例: 学生多门功课的成绩,如: a[100][3]可以用来记录100个学生3门功 课的成绩。 矩阵,如: a[3][3]可以用来记录3×3的矩阵。一个 数组元素正好存放一个矩阵的元素。
5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;
…
a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
大一C语言教材《C语言程序设计》第5章 循环程序设计
复合赋值运算符
种类:+= -= *= /= %= 《= 》= &= 含义: 变量 op= 表达式 变量 = 变量
^= |= op 表达式
x%=3 x*=y+8 a+=3
x=x%3 x=x*(y+8) a=a+3
运算符和表达式
说明:
结合方向:自右向左 左侧必须是变量,不能是常量或表达式
例 int i; 例 3=x-2*y; i=2.56; //结果 i=2; a+b=3;
赋值转换规则:使赋值号右边表达式值自动 转换成其左边变量的类型
赋值表达式的值与变量值相等,且可嵌套g a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //表达式值为5,a,b,c值为5 // b=5;a=5 //表达式值11,c=6,a=11 //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2
例 -i++ i=3;
-(i++) printf(“%d”,-i++);
//-3
无论是作为前缀还是作为后缀运算符,对于变量本身来 说自增1或自减1都具有相同的效果,但作为表达式来说却有 着不同的值。
例
j=3; k=++j; j=3; k=j++; j=3; printf(“%d”,++j); j=3; printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b;
c语言程序设计第五版习题答案
习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。
【解答】(1)语言简洁、紧凑,使用方便、灵活。
(2)数据类型丰富,表达能力强。
(3)运算符多样。
C语言中的运算符包含的范围非常广泛。
(4)具有结构化的控制语句。
如if…else语句、while语句、do while语句、switch 语句、for语句。
(5)允许直接访问物理地址。
C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。
(6)所生成的目标代码质量高,可移植性好。
2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。
一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。
3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。
二.运行程序写结果1.输入下面程序并运行。
main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。
main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=200三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息:*************************I love C programs!*************************【分析与提示】①要有文件包含语句#include <stdio.h>。
C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。
这些函数的说明都包括在stdio.h文件中。
②main是主函数的名称。
c语言选择程序设计(第五章)习题答案
}*/
//*****采用switch语句编写*****//
void main()
{
long i;
float bonus;
scanf("%ld",&i);
int g=i/100000;
switch(g)
else if(i<=1000000)
bonus=(i-600000)*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1; //bonus=(i-600000)*0.015+bonus6;
else
bonus=(i-1000000)*0.01+400000*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1; //bonus=(i-1000000)*0.01+bonus10;
bonus=(i-200000)*0.05+100000*0.075+100000*0.1; //bonus=(i-200000)*0.05+bonus2;
else if(i<=600000)
bonus=(i-400000)*0.03+200000*0.05+100000*0.075+100000*0.1; //bonus=(i-400000)*0.03+bonus4;
case 9:
bonus=(i-600000)*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1;//bonus=(i-600000)*0.015+bonus6;
五C语言程序设计
五《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。
2、掌握选择结构的程序设计。
3、掌握分支结构的嵌套。
二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。
自变量x与函数值均采用双精度类型。
(2)自变量x值从键盘输入,且输入前要有提示信息。
(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。
记录结果。
(5)源程序以sy4_1.c存盘。
2、编程,将一个百分制成绩转换成等级制成绩。
具体要求如下:(1)百分制与等级制的对应关系如下:(2)用switch语句实现该功能。
(3)用键盘输入百分制成绩,输入前要有提示信息。
(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。
(5)输出结果中应包含百分制成绩和成绩等级。
(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。
记录结果。
(7)源程序以sy4_2.c存盘。
三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。
2、掌握三种常用的循环语句的格式和功能。
3、初步掌握循环结构的编程方法。
二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。
要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。
2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。
C语言程序设计作业五(指针,文件)
C语言程序设计作业五1.对于类型相同的指针变量,不能进行哪种运算?(单选)A. +B. -C. =D. = =2. 若有以下说明和语句,且0<=i<10, 则下面哪个是对数组元素的错误引用?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i;p=a;A. *(a+i)B. a[p-a]C. p+iD. *(&a[i])3. 若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确表示?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;p=a;A. &(a+1)B. a++C. &pD. &p[i]4. 以下程序的输出结果是___。
#include <stdio.h>main(){int a[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A. 0,5B. 1,5C. 0,6D. 1,65. 以下程序的输出结果是哪一项?(单选)#include <stdio.h>main(){int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;for(i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);}A. 输出项不合法B. 6C. 8D. 126. 如果有以下的定义:(多选)struct person{char name[20];int age;char sex;};struct person a={"xiao min",20,'m'},*p=&a;则对字符串"li ning"的引用方式可以是下面哪些?A. (*p).nameB. C. D. p->name7. 下面哪些定义的结构在内存分配是等价的。
《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计
Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;
《C语言程序设计(第五版)》习题答案
《C语⾔程序设计(第五版)》习题答案各章习题参考答案第1章习题参考答案1. 简述C程序的结构特点。
答:(1) ⼀个C语⾔源程序由⼀个或多个源⽂件组成。
每个源⽂件由⼀个或多个函数构成,其中有且仅有⼀个主函数(main函数)。
(2) ⼀个函数由函数⾸部(即函数的第⼀⾏)和函数体(即函数⾸部下⾯的⼤括号内的部分)组成。
函数⾸部包括函数类型、函数名和放在圆括号内的若⼲个参数。
函数体由声明部分和执⾏部分组成。
(3) C程序书写格式⾃由,⼀⾏内可以写多条语句,⼀个语句也可以分写在多⾏中,每个语句必须以分号结尾。
(4)程序的注释内容放在“/*”和“*/之”间,在‘/’和‘*’之间不允许有空格;注释部分允许出现在程序中的任何位置处。
2. 分析例1.3程序的结构。
答:下⾯是例1.3的程序,它的结构是:有且只有⼀个主函数main以及若⼲个其它函数,还有⼀个被主函数调⽤的sumab函数。
函数有⾸部,包括类型和名称,⾸部下的⼤括号中有变量定义、输⼊、计算和输出等语句。
#includeint sumab (int x, int y); /*函数声明*/int main () /*主函数*/{ int a,b,sum; /*定义变量*/printf("请输⼊变量a与b的值:"); /*提⽰信息*/scanf ("%d %d", &a, &b); /*输⼊变量a和b的值*/sum=sumab(a,b); /*调⽤sumab函数*/printf("a与b的和等于%d", sum);/*输出sum的值*/return 0;}int sumab (int x, int y) /*定义sumab函数,并定义形参x、y */{ int z;z=x+y;return z;}3. 分别编写完成如下任务的程序,然后上机编译、连接并运⾏。
(1) 输出两⾏字符,第1⾏是“The computer is our good friends!”,第2⾏是“We learnC language.”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
(4)不同函数中的局部变量可以同名。
返回
2019/2/26 《C与C++程序设计教程》-第五章 6
5.1.2 C语言程序的组成
源文件
大 程 序
包含文件 宏定义 条件编译 函数预说明 全局变量说明 函数模块定义 ……
函数模块定义
1 、程序的结构: 一个大的程序由许 多源程序文件(也叫程序模块, 通常是一些相关函数的集合)组成, 而源程序文件由预编译和许多函 数组成。 2、C语言程序源文件(程序模块)结构: 包含文件:#include <stdio.h>。 宏定义: #define PI 3.14159。 条件编译:#if…#else…#endif 函数预说明:定义函数的原型 全局变量说明:函数外定义的变量 函数模块定义
z=x>y?x:y;9/2/26
《C与C++程序设计教程》-第五章
9
5.2.2 形式参数和实际参数:
[例5.3]输入两个整型数,并求出较大者。
main( ) 形式参数(简称形参): 是指在函数定义时函数名 注: (1) 形参在调用时才被分配内存空间,调 { int a,b,c; 后面括号中的变量名。 用结束后释放。 printf(“Input integers a, b:”); 实际参数(简称实参): (2) 实参可以是常量、变量或表达式,但要求 scanf(“%d,%d”,&a,&b); 是指在函数调用时,函数 有确定值。 c=max(a,b); 名后面括号中的表达式。 printf(“Max is %d\n”,c); } (3)实参与形参的类型应一致。 int max(int x,int y) (4) 实参向形参的单向传递,“值传递”, input integers a,b: { int z; 即只由实参传给形参,而不能由形参传回给实 7,8 键盘 参。 z=x>y?x:y; Max is 8 return(z); } 显示器
函数体 }
z=x+y; return(z);
2019/2/26
《C与C++程序设计教程》-第五章
5
2、函数的定义: 函数体: {} 中的内容,包括说明语句和执行语 函数首部 例:两个数之和的函数。 形式句。 2: (函数头) double add(double x,double y) 空函数:函数体为空的函数,例 {} ,便于扩充 和细化程序。 类型名 函数名(类型名 形参1, { double z; 注:(1)函数的定义是平行的,不允许在一个函 类型名 形参2,……) z=x+y; 数的内部再定义一个函数。 (2) 函数值的类型为 int 或 char 时,可省略;不 return(z); { 说明语句; 函数体 需返回函数值时,可用类型名 void。 } 执行语句; (3)多个形参以逗号分隔。
《C与C++程序设计教程》-第五章 7
2019/2/26
[例5.2]函数实例。
main() { int x=1; void f1(),f2(); f1(); f2(x); printf("x=%d\n",x); } void f1(void) { int x=3; printf("x=%d\t",x); } void f2(x) int x; { printf("x=%d\t",++x); }
x=3
x=2
x=1
返回
2019/2/26 《C与C++程序设计教程》-第五章 8
5.2 函数的参数
一个函数与其他函数之间存在数据 传递问题,可以通过函数的参数实 现。 5.2.1 带参数函数定义的一般形式 类型说明 函数名(形式参数表) 形式参数说明; { 函数体 } 例:两个数之较大者 的函数。 int max(int x, int y) { int z;
2019/2/26 《C与C++程序设计教程》-第五章 10
main() int large(int x,int y) { int a[10],b[10],i,n=0,m=0,k=0; { int flag; printf("enter arry a: \n"); if(x>y) for(i=0;i<10;i++) flag=1; scanf("%d",&a[i]); else if(x<y) printf("\n"); flag=-1; printf("enter arry b: \n"); else for(i=0;i<10;i++) flag=0; scanf("%d",&b[i]); return(flag); printf("\n"); } for(i=0;i<10;i++) { if(large(a[i],b[i])==1) n=n+1; else if(large(a[i],b[i])==0) 输入数组a:1 3 5 7 9 8 6 4 2 0 m=m+1; 数组b:5 3 8 9 –1 –3 5 6 0 4 else k=k+1; } 输出结果:a[i]>b[i] 4 次 printf("a[i]>b[i]%dtimes\n",n); printf("a[i]=b[i]%dtimes\n",m); a[i]=b[i] 1 次 printf("a[i]<b[i]%dtimes\n",k); a[i]<b[i] 5 次 if(n>k) printf("array a is larger than array b\n"); “数组a比数组b小。” else if(n<k) printf("array a is smaller than array b\n"); else printf("array a is equal to array b\n"); 2019/2/26 11 《C与C++程序设计教程》-第五章 }
5.1.1 C语言函数的结构
5.1.2 C语言程序的组成
返回
2019/2/26 《C与C++程序设计教程》-第五章 3
5.1.1 C语言函数的结构
1、函数的分类: 系统函数(库函数): 由 C 语言函数库提供,用户可 以直接引用。 用户函数(自定义函数): 是用户根据需要定义的完 成某一特定功能的一段程序。用户函数分为带参数的 函数和不带参数的函数。 系统函数(库函数)
C语言程序
2019/2/26
函数
用户函数(自定义函数)
《C与C++程序设计教程》-第五章 4
2、函数的定义:
形式1:
函数首部 (函数头)
例:两个数之和的函数。
double add(x,y)
double x,y; { double z;
类型名 函数名(形式参数表) 形式参数说明; { 说明语句; 执行语句; }
第五章 C语言函数
5.1 C语言程序的组成 5.2 函数的参数 5.3 函数的调用 5.4 程序编译预处理
退出
2019/2/26 《C与C++程序设计教程》-第五章 2
5.1 C语言程序的组成
C语言程序:是一个或多个函数组合而成的。 C语言函数:具有相对独立的、完整功能的实体。是完成某 一功能的一段程序,是程序的基本组成成分。