C语言程序设计立体化教程(第二版) 课件 项目5 简易的通讯录管理_第1页
C语言程序设计立体化教程(第二版) 课件 项目5 简易的通讯录管理_第2页
C语言程序设计立体化教程(第二版) 课件 项目5 简易的通讯录管理_第3页
C语言程序设计立体化教程(第二版) 课件 项目5 简易的通讯录管理_第4页
C语言程序设计立体化教程(第二版) 课件 项目5 简易的通讯录管理_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

主讲:廖智蓉项目5简易的通讯录管理一维数组问题导入请编写如下程序:输入60名学生的C语言成绩,要求输出高于平均分的成绩以及不及格的人数。分析:为了保存60名学生的成绩,需要定义60个变量(假定为a1,a2,…a60)来存放,且用变量与平均分(假定为pj)一一比较如下:if(a1>pj)printf(“%f\n”,a1);if(a2>pj)printf(“%f\n”,a2);……if(a60>pj)printf(“%f\n”,a60);问题解决请编写如下程序:输入60名学生的C语言成绩,要求输出高于平均分的成绩以及不及格的人数。关键技术:数组1、什么是数组?一组具有相同数据类型的数据的有序的集合一维数组的定义一维数组的定义类型说明符数组名[常量表达式];2.例:inta[10];定义一个数组,数组名a,有10个元素,每个元素的类型均为int。这10个数组元素分别是:a[0]、a[1]、a[2]、a[3]、a[4]、....、a[8]、a[9]。一维数组的定义3.说明(3)常量表达式表示元素的个数,即数组的长度。下标从0开始!例如:intn;scanf("%d",&n);inta[n];

(4)数组大小可以是整型常量和符号常量,但不能是变量(2)数组名后是[],不能是()。×(1)数组名:按标识符规则。本例a就是数组名。ints[100];floatb[8];#defineN50inta[N];(5)同类型数组可以一起定义,只需逗号隔开。inta[10],b[20];一维数组的初始化(1)定义数组时对数组元素赋以初值。intx[5]={1,2,3,4,5};(2)可以只给一部分元素赋初值。intx[5]={1,2};系统自动给指定值的数组元素赋值:x[0]=1,x[1]=2,其他元素值均为0。(3)如果一个数组的全部元素值都为0,可以写成:intx[5]={0,0,0,0,0};或intx[5]={0};(4)对全部元素赋初值时,可以不指定长度。intx[5]={1,2,3,4,5};等价于intx[]={1,2,3,4,5};(5)利用scanf函数任意输入方式进行数组元素的初始化。inta[5],i;for(i=0;i<5;i++)scanf(“%d”,&a[i]);数组元素的引用引用形式:数组名[下标]说明:(1)下标的取值范围:0≤下标≤元素个数-1(2)下标可以是整型常量或表达式。例如:a[0]=a[5]+a[7]-a[2*3]

举例

数组元素初始化和引用。从键盘输入十个学生的成绩,并将其输出。#include"stdio.h"main(){inti,a[10];printf("输入数组元素:");printf("输出数组元素:");}for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%5d",a[i]);

举例

将从1开始的10个奇数逆序输出。#include"stdio.h"main(){inti,a[10]={1,3,5,7,9,11,13,15,17,19};printf("输出数组元素:\n");}for(i=0;i<10;i++)a[i]=2*i+1;for(i=9;i>=0;i++)printf("%5d",a[i]);

问题实现

输入60名学生的C语言成绩,要求输出高于平均分的成绩以及不及格的人数。#include"stdio.h“#defineN60main(){floatcj[N],sum,pj;inti,count;sum=0;count=0;printf(“请输入学生成绩:\n");printf(“不及格的人数:%d\n”,count);}for(i=0;i<N;i++)scanf(“%f”,&cj[i]);for(i=0;i<N;i++){if(cj[i]>pj)printf("%.2f",cj[i]);if(cj[i]<60)count++;}for(i=0;i<N;i++)sum=sum+cj[i];pj=sum/N;

课后练一练

1、从键盘输入10个整数,找出其中的最大数并输出。2、求学生的总评成绩。现有十个学生,从键盘上输入他们的平时成绩、期终成绩,输出总评成绩。总评成绩=平时成绩*40%+期终成绩*60%.预习下讲字符数组主讲:廖智蓉项目5简易的通讯录管理字符数组一维字符数组的定义1.一维字符数组的定义例如:charc[10];意思是定义一个字符数组c,它有10个元素。字符数组的初始化(1)定义时逐个字符给数组中各元素。charc[5]={‘c’,’h’,’i’,’n’,’a’};china\0china\0\0\0\0\0(2)可省略数组长度。charc[]={‘c’,’h’,’i’,’n’,’a’};系统根据初值个数确定数组的长度,数组c的长度自动为5。(3)字符数组可以用字符串来初始化。

charc[6]=”china”;charc[10]={“china”};/*花括号可以省略*/

引用

(1)“%s”格式输入时,遇空格或回车结束,但获得的字符中不包含回车及空格本身,而是在字符串末尾添’\0’。方法一:用%c格式符逐个输入输出。例如:charc[6];for(i=0;i<6;i++){scanf(“%c”,&c[i]);printf(“%c”,c[i]);}方法二:用%s格式符进行字符串输入输出。例如:charc[6];scanf(“%s”,c);printf(“%s”,c);

举例

三个同学姓名的输入输出。程序如下:#include"stdio.h"main(){charname1[10],name2[10],name3[10];printf("请输入姓名:\n");scanf("%s%s%s",name1,name2,name3);printf("输出的姓名为:\n");printf("%s,%s,%s\n",name1,name2,name3);}

程序的运行结果表明:%s输入时,空格或回车表示输入的分隔符

字符串处理函数

(1)输入字符串函数——gets()格式:gets(字符数组名)

例如:chars[12];gets(s);功能:从键盘输入1个字符串。允许输入空格,而是以回车作为输入结束。将上例修改为gets()输入:#include"stdio.h"main(){charname1[10],name2[10],name3[10];printf("请输入姓名:\n");gets(name1);gets(name2);gets(name3);printf("输出的姓名为:\n");printf("%s,%s,%s\n",name1,name2,name3);}

字符串处理函数

(2)输出字符串函数——puts()格式:puts(字符数组名)

例如:chars[12]=“hangzhou”;puts(s);功能:输出1个字符串在屏幕上。将上例修改为puts()输出:#include"stdio.h"main(){charname1[10],name2[10],name3[10];printf("请输入姓名:\n");gets(name1);gets(name2);gets(name3);printf("输出的姓名为:\n");puts(name1);puts(name2);puts(name3);}上面两个函数的使用仍然是需要“stdio.h”包含,接下介绍的字符串函数,我们应使用包含头文件“string.h”

串连接函数(strcat)

(1)格式:strcat(字符数组名1,字符数组名2);(2)功能:把字符数组2中的字符串(连同尾部的’\0’)连接到字符数组1中字符串的后面,并删去字符串1后的串结束标志’\0’

。本函数返回值是字符数组1的首地址。(3)说明:字符数组1必须足够大。

举例

#include"string.h"voidmain(){charst1[30]="Mynameis";charst2[10];printf("请输入姓名:\n");gets(st2);

strcat(st1,st2);puts(st1);}写出下面程序的运行情况。

程序运行情况输入Zhangyi↙时,输出结果是什么?MynameisZhangyi输出结果:

串拷贝函数(strcpy)

(1)格式:strcpy(字符数组名1,字符数组名2);(2)功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“\0”也一同拷贝。

举例

写出下面程序的运行情况。输出结果:#include"string.h"voidmain(){charst1[15],st2[]="CLanguage";

strcpy(st1,st2);puts(st1);}CLanguage

说明

(3)说明:①字符数组1必须写成数组名形式,字符数组2可以是数组名形式也可以是字符串常量。

②不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。例如:charstr1[20],str2[]=“program”;

str1=“program”;str1=str2;

串比较函数(strcmp)

(1)格式:strcmp(字符数组名1,字符数组名2);(2)功能:按照ASCII码顺序(即字典顺序)比较两个数组中的字符串,并由函数返回值返回比较结果。

字符串1=字符串2,返回值=0;字符串1>字符串2,返回值>0;字符串1<字符串2,返回值<0。(3)说明:不能用比较运算符直接比较两个字符串。错误的用法例如:charstr1[]=“progress”,str2[]=“program”;

if(str1!=str2)……

举例

写出下面程序的运行情况。输出结果:#include"string.h"voidmain(){intk;charst1[15],st2[]="CLanguage";printf("请输入一个字符串:\n");gets(st1);k=strcmp(st1,st2);if(k==0)printf("%s与%s相等。\n",st1,st2);if(k>0)printf("%s大于%s。\n",st1,st2);if(k<0)printf("%s小于%s。\n",st1,st2);}CLang小于CLanguage。

程序运行情况输入CLang↙时,输出结果是什么?

测串长度函数(strlen)

(1)格式:strlen(字符数组名);(2)功能:测字符串的实际长度(不含字符串结束标志‘\0’),并作为函数返回值。

举例

写出下面程序的运行情况。输出结果:#include"string.h"voidmain(){intk;charst[]="CLanguage";k=strlen(st);printf(“字符串(%s)的长度为%d。\n",st,k);}字符串(CLanguage)的长度为10。

单字符输入输出函数

单个字符的输出函数

putchar(字符变量或字符常量);单个字符的输入函数字符变量=getchar();例如:利用单个字符输入输出函数实现从键盘上输入任意一个字符,并将该字符输出在显示器上。#include<stdio.h>main(){charch;puts("请输入任意一个字符:");

ch=getchar();puts("显示输入的字符:");

putchar(ch);}

课后练一练

2、从键盘输入任意一个字符串,统计该字符串中的字母、数字以及其他字符的个数。

1、从键盘输入任意一个字符串,将该字符串中的大写字母都转换成小写,并将转换后的字符串进行输出。

预习下讲结构体主讲:廖智蓉项目5简易的通讯录管理结构体问题导入学号姓名高等数学C语言英语总分101张圣丹758677232102徐丽萍928890270103周京京798868225104申洪伟839382258105胡瀚文768778241106张腾伟688088226107於斌649878222108孙盛兵768460220109任高翔538777197110方辘恒888082238问题解决分析:一个学生的信息包含了学号、姓名、3门课成绩、总分。分别定义简单变量难以反映它们之间的联系将它们组成一个组合项,其中可以包含若干个类型不同的数据项结构体类型:将不同类型的数据进行组合的一种用户自定义的类型。关键技术:结构体(记录)结构体类型的定义结构体类型定义的一般形式为:

struct

结构体名{

成员列表};结构体类型的说明(1)struct是声名结构体类型时必须使用的关键字,不能省略。(2)struct结构体名是一个类型名,它的功能和基本数据类型有着同样的地位和作用,都可以用来定义变量的类型,只不过这种类型是要用户自己制定而已。(3)成员表由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:类型说明符

成员名;(4)大括号和外面的分号都不能省略。问题实现structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

};关键字

不能省略结构体名,和标准类型

名一样可以定义变量成员列表,每个成员又称分量或域.

成员名定名规则与变量同作为语句,必须以分号结束案例结构体类型定义的实现:结构体变量的定义(1)先声明结构体类型再定义结构体变量。struct结构体名{成员表列;};[struct]结构体名变量名表列;structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

};structstudentx,y;structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

};

studentx,y;结构体变量的定义(2)在声明类型的同时定义变量

struct[结构体名]{成员表列;}变量名表列;structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

}x,y;struct

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

}x,y;

说明

1、结构体变量:能够赋值、存取或运算,编译时,分配空间

结构体类型:不能赋值、存取或运算,编译时,不分配空间2、成员可以是一个结构体变量。structstudent

{intnum;

charname[20];

charsex;

floatscore;structdatebirthday;}student1;structdate

{intmonth;

intday;

intyear;};

结构体变量的使用

一般形式:结构体变量名.成员名“.”是成员(又叫分量)运算符。它的优先级最高structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

}x,y;x.math=60;x.c_language=85;x.english=77;x.sum=x.math+x.c_language+x.english;

结构体变量的初始化

1、直接用赋值运算初始化structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

}x,y;x.math=60;x.c_language=85;x.english=77;2、通过scanf函数初始化scanf(“%f%f%f”,&x.math,&x.c_language,&x.english);

问题实现

#include"stdio.h”main(){structstudent{intnum;

charname[20];

floatmath,c_language,english,sum;

}x;printf(“请输入x学生学号、姓名、三门成绩:\n");

printf(“学号\t姓名\t数学\tC语言\t英语\t总分\n”);printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",x.num,x.name,x.math,x.c_language,x.english,x.sum);}scanf(“%d%s%f%f%f”,&x.num,x.name,&x.math,&x.c_language,&x.english);x.sum=x.math+x.c_language+x.english;

课后练一练

1、仿照一位学生成绩信息的实现,自己编写一个学生通讯录信息(学号、姓名、性别、QQ号、手机号),通过键盘输入信息,并且按照表格的形式输出。预习下讲结构体数组主讲:廖智蓉项目5简易的通讯录管理结构体数组问题导入学号姓名高等数学C语言英语总分101张圣丹758677232102徐丽萍928890270103周京京798868225104申洪伟839382258105胡瀚文768778241106张腾伟688088226107於斌649878222108孙盛兵768460220109任高翔538777197110方辘恒888082238结构体实现了一条信息的输入和输出,那么怎样实现一个班级成绩表的输入和输出呢?问题解决结构体数组:数组元素都是结构体类型的数组。关键技术:结构体数组结构体数组的定义(1)先声明结构体类型再定义结构体数组。struct结构体名{成员表列;};[struct]结构体名数组名[数组大小];structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

};structstudentx[5];structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

};

studentx[5];结构体数组的定义(2)在声明类型的同时定义结构体数组

struct[结构体名]{成员表列;}数组名[数组大小];structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

}x[5];struct

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

}x[5];

结构体数组的初始化

1、直接用赋值运算初始化structstudent

{intnum;

charname[20];

floatmath;

floatc_language;

floatenglish;

floatsum;

}

x[3]={{101,”张力”,60,70,80},{102,”王强”,66,78,80},{103,”李斯”,63,70,90}};2、通过循环+scanf函数初始化for(i=0;i<3;i++)scanf(“%d%s%f%f%f”,&x[i].num,x[i].name,&x[i].math,&x[i].c_language,&x[i].english);

问题实现

#include"stdio.h”#defineN3main(){structstudent{intnum;

charname[20];

floatmath,c_language,english,sum;

}x[N];inti;printf(“请输入3个学生学号、姓名、三门成绩:\n");

}for(i=0;i<N;i++){scanf(“%d%s%f%f%f”,&x[i].num,x[i].name,&x[i].math,&x[i].c_language,&x[i].english);x[i].sum=x[i].math+x[i].c_language+x[i].english;}printf(“学号\t姓名\t数学\tC语言\t英语\t总分\n”);for(i=0;i<N;i++)printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",x[i].num,x[i].name,x[i].math,x[i].c_language,x[i].english,x[i].sum);

课后练一练

1、仿照3位学生成绩信息的实现,自己编写5个学生通讯录信息(学号、姓名、性别、QQ号、手机号),通过键盘输入信息,并且按照表格的形式输出。预习下讲二维数组主讲:廖智蓉项目5简易的通讯录管理我们生活中表格数据是很常见的,比如要描述5个学生3门课成绩大家最熟悉的Excel表就很容易表达出来,那么我们如何在C语言中来表达这类数据呢?二维数组知识引入二维数组的定义1.二维数组定义的一般形式类型说明符数组名[行大小常量表达式][列大小常量表达式]例如:inta[3][4]定义了一个3×4(3行4列)的整型数组a二维数组初始化二维数组初始化的方法如下。(1)分行给二维数组赋初值(推荐使用)inta[3][4]={{1,2,3,4},{4,5,6,7},{6,7,8,9}};(2)将所有数据写在一个花括弧内,按数值排列的顺序对各元素赋初值。inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}

(3)可以对部分元素赋初值。inta[3][4]={{1,2},{4},{6,7,8}};a数组分布如图所示。(4)如果对全部数组元素赋值,则第一维的长度可以不指定,但必须指定第二维的长度,全部数据写在一个大括号内。如:inta[][3]={1,2,3,4,5,6,7,8,9,10,11,12};第一维长度4省略。120040006780二维数组的引用二维数组元素的表示形式:数组名[下标][下标]例:inta[3][4],表示行下标值最小从0开始,最大为3-1=2;列下标值最小为0,最大为4-1=3,即: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]2.二维数组的理解二维数组是一种特殊的一维数组

应用

#include"stdio.h"#defineN5main(){inti,j;intscore[N][3];printf("请输入五个同学三门课的成绩:\n");for(i=0;i<N;i++)for(j=0;j<3;j++)scanf("%d",&score[i][j]);printf("输出五个同学三门课的成绩:\n");for(i=0;i<N;i++){printf("第%d位同学:",i+1);for(j=0;j<3;j++)printf("%5d",score[i][j]);printf("\n");}}输入五个同学三门课的成绩并输出真题解析1#include<stdio.h>

voidmain()

{intj,k,sum=0;inta[3][2];printf("Enteranarray:\n");for(j=0;j<3;j++)for(k=0;k<2;k++)scanf("%d",(1));for(j=0;j<3;j++){(2)for(k=0;k<2;k++)sum=

(3);printf("sumofrow%dis%d\n",

(4),sum);}}

输入一个3行2列的矩阵,分别输出各行元素之和。运行示例:Enteranarray:

63-81312

sumofrow0is9

sumofrow1is-7

sumofrow2is15(1)A、a[j][k]B、a[k][j]C、&a[j][k]D、&a[k][j]

(2)A、;B、sum=-1;C、sum=1;D、sum=0;

(3)A、sum+a[j][k]B、sum+a[j][j]C、sum+a[k][k]D、0

(4)A、kB、jC、0D、1

CDAB真题解析2#include<stdio.h>main(){intcol,row,i,j;inta[2][3];printf("Enterarray(2*3):");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);(1);row=0;输入一个2*3的二维数组,找出最大值以及它的行下标和列下标,并输出该结果。

运行示例:

Enterarray(2*3):3210-96-1max=a[0][2]=103210-96-1(1)A、col=0;B、col=1;C、col=0D、col=1

(2)A、a[i][j]>a[row][col]B、a[i][j]<a[row][col]C、a[i][j]==a[row][col]D、a[i][j]=a[row][col]

(3)A、row=j;B、row=i;C、row=j+1;D、row=i+1;

(4)A、a[i][j]B、a[col][row]C、a[row][col]D、a[j][i]CABCfor(i=0;i<2;i++)for(j=0;j<3;j++)if((2)){(3)col=j;}printf("max=a[%d][%d]=%d\n",row,col,(4));for(i=0;i<2;i++){for(j=0;j<3;j++)printf("%4d",a[i][j]);printf("\n");}}

课后练一练

1、将数组a的每一行均除以该行上的主对角元素(第一行同除以a[0][0],第二行同除以a[1][1]……),然后输出a数组。预习下讲冒泡排序主讲:廖智蓉项目5简易的通讯录管理冒泡排序

冒泡排序思想

将数据按由小到大(升序)进行冒泡排序的具体思路:(1)通过相邻两个数之间的比较和交换;(2)使排序码(数值)较小的数逐渐从底部移向顶部,

排序码较大的数逐渐从顶部移向底部;(3)这个过程就像水底的气泡一样逐渐向上冒,故而得名。

冒泡排序演示动画

输入6个数,(34,2,56,5,13,23)用“冒泡法”对6个数排序(由小到大)。3425651323趟数-i每趟比较次数—j交换i=1不交换交换交换交换第1趟排完后:23451323565

冒泡排序演示动画

输入6个数,(34,2,56,5,13,23)用“冒泡法”对6个数排序(由小到大)。2513233456趟数-i每趟比较次数—j不交换i=2交换交换交换第2趟排完后:23451323564

冒泡排序演示动画

输入6个数,(34,2,56,5,13,23)用“冒泡法”对6个数排序(由小到大)。2513233456趟数-i每趟比较次数—j不交换i=3不交换不交换第3趟排完后:32513233456

冒泡演示结论

(2)对于n个数的排序,需进行n-1趟冒泡,第i趟比较次数需进行n-j次两两比较。(1)对于6个数的排序,需进行5趟冒泡,第i趟比较次数需进行6-i次两两比较。

冒泡排序实现

for(i=1;i<=5;i++)

//i是控制冒泡的趟数

for(j=0;j<6-i;j++)

//j是每趟比较次数的控制if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}//当遇到前者a[j]比后者a[j+1]大时,进行交换,否则不交换#include<stdio.h>main(){inta[6],i,j,t;printf("请输入任意的6个整数:\n");for(i=0;i<6;i++)scanf("%d",&a[i]);printf(“排序后输出序列:\n”);for(i=0;i<6;i++)printf("%3d",a[i]);}输入任意6个整数用“冒泡法”对6个数排序(由小到大)。

真题练一练

AABC

课后练一练

1、从键盘输入任意10个同学的大学英语成绩,用“冒泡法”对10个分数排序(由大到小)后输出相应的名次。预习下讲选择排序算法主讲:廖智蓉项目5简易的通讯录管理选择排序数组名作为函数参数

选择排序

将数据按由小到大进行简单选择排序的具体思路:(1)首先从(K1,K2,…,Kn)中选择最小值,假如它是Kz,则将Kz与K1对换;(2)然后从(K2,K3,…,Kn)中选择最小值Kz,再将Kz与K2对换;(3)如此进行选择和调换n-2趟。(4)第(n-1)趟,从Kn-1和Kn中选择较小的值Kz,将Kz与Kn-1对换,最后剩下的就是该序列中的最大值,一个由小到大的有序序列就这样形成了。

选择排序

输入6个数,用“选择法”对6个数排序(由小到大)。j=i+161955323趟数i=0kijjjkjjj扫描完后,且k!=i,则a[k]与a[i]进行交换参数说明:i是控制趟数的同时也是每趟的第一个数下标。k是跟踪每趟最小值下标j是扫描每趟待排序下标去找最小值,直到扫描到最后一个数16955323第0趟排完后:

选择排序

输入6个数,用“选择法”对6个数排序(由小到大)。j=i+1趟数i=1kijjkjjj扫描完后,且k!=i,则a[k]与a[i]进行交换1695532313955623第一趟排完后:136

95523第二趟排完后:13655923第三趟排完后:136

9

2355第四趟排完后:

选择排序的实现

for(i=0;i<5;i++)

//做第i趟排序

{k=i;for(j=i+1;j<6;j++)

//选最小的记录if(a[k]>a[j])k=j;//记下目前找到的最小值所在的位置//在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换

if(k!=i){t=a[i];a[i]=a[k];a[k]=t}}#include<stdio.h>main(){inta[6],i,j,t,k;for(i=0;i<6;i++)scanf("%d",&a[i]);for(i=0;i<6;i++)printf("%3d",a[i]);}

数组名作为函数参数

使用数组名作为函数参数时,实参与形参都应使用数组名(或指针变量,见项目六)。当数组名作为函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,实参和形参的地址是相同的,即当形参的值发生变化时,实参的值也发生了变化。

举例

输入十个同学的成绩,要求用函数进行冒泡排序(降序)main(){inta[10],i;printf("请输入十个同学的成绩\n");for(i=0;i<10;i++)scanf("%d",&a[i]);sort(a);printf("排序后的成绩为:\n");for(i=0;i<10;i++)printf("%3d",a[i]);printf("\n");}#include"stdio.h“#d

温馨提示

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

评论

0/150

提交评论