C语言程序设计7

合集下载

C语言程序设计实训教程第7章 指 针

C语言程序设计实训教程第7章 指 针

12
2)指针与一维数组 【例 7.6】 下列程序的运行结果是( )。[读 程序写结果,重庆市 2001年第 2次等级考试]
13
14
3)指向字符的指针
15
16
17
18
4)指针与二维数组
19
5)指向一维数组的指针(行指针) 【例 7.18】 对 int(﹡p)[5];的正确描述 是( )。[多选题,重庆市 2003年第 1次等级考 试] A. p是数组名 B. p是指针变量名 C. p数组中有 5个元素 D .p指向一个包含 5个元素的整型数组 E. p是一个整型数组 答案:B D
22
7)指针数组 当数组的元素类型为指针时,叫做指针数组。 【例 7.21】 下列程序的运行结果是( )。 [读程序写结果,重庆市 2004年第 2 次等级考试]
23
8)指针做函数参数 指针做函数参数的主要目的是利用在函数中, 利用指针去操作主调函数中的变量。 【例 7.22】 下列程序在数组中同时查找最大 值下标和最小值下标,并分别存放在 main函数的 变量 max和 min中,请填空。[读程序写结果,重 庆市 2003年第 2次等级考试]
10
【例 7.3】 由于指针的数据类型实际上是指定 指针所能指向对象的数据类型,所以不同数据类型 的指针变量不能相互赋值。( )[判断题,重庆市 2005年第 2次等级考试] 答案:对 分析:在某些特定情况下,可以在不同数据类 型指针之间通过强制类型转换赋值。
11
【例 7.4】 若有定义:long intj,﹡p;,则操 作 j=(long int)p;是合法操作。( )[判断题, 重庆市 2004年第 1次等级考试] 答案:对 【例 7.5】 在 C 语言中,程序

C语言程序设计(李圣良)章 (7)

C语言程序设计(李圣良)章 (7)

一般形式如下:
struct
{
成员列表;
}变量名列表;
例如,可以直接定义结构体变量st1、st2:
struct
{
char id[9];
/* 学号 */
char name[10];
/* 姓名 */
char sex;
/* 性别 */
int age;
/* 年龄 */
float score;
/* 成绩 */
}st1,st2;
型变量x和y表示点的x坐标和y坐标。
# include <stdio.h>
# include <math.h>
struct point
/* 点 */
{ float x;
/* x坐标 */
float y; /* y坐标 */
};
main()
第7nt p1;
float l;
采用定义变量的方式来定义数据成员。
第7单元 结构体和共用体 (4) 结构体类型定义必须以分号结束。 例如,根据图7-1的分析可以设计结构体类型如下:
struct student
{
char id[9];
char name[10];
char sex;
int age;
float score;
};
/* 学号 */ /* 姓名 */
\n",tomor.year,tomor.month,tomor.day); }
第7单元 结构体和共用体 图7-3 例7-1程序运行结果
第7单元 结构体和共用体 3. 结构体变量的初始化 在结构体变量定义的同时可以为其整体赋初值,方法与数
组的初始化相似,将各个数据成员的值按声明类型时的顺序依 次排列,使用逗号间隔,全部放在大括号中,整体赋值给变量。 例如:

C语言程序设计第四版_谭浩强7章

C语言程序设计第四版_谭浩强7章

➢函数的功能
return z; }
函数体
函数首部,不是语 句,行尾无分号
精选课件ppt
函数的返回值,类 型与首部定义一致14
函数的定义
关于函数类型的说明
无返回值的函数类型为void; 有返回值的函数,其类型根据返回值 类型决定;省略类型时默认为int(建议 不要省略)
精选课件ppt
15
函数的调用
int main( )
{ int max(int a[ ],int n);
int x[6],i;
for(i=0;i<=5;i++)
scanf("%d",&x[i]);
printf("max=%d",max(x,6));
return 0;
}
实参为数组名
精选课件ppt
int max(int a[ ],int n) { int m,i; m=a[0]; for (i=1;i<n;i++)
float fac; fac=1; for(i=1;i<=n;i++)
fac=fac*i; return fac;
printf("c="); scanf("%d",&c);
}
sum=factorial(a)+factorial(b)+factorial(c);
printf("%d!+%d!+%d!=%.0f",a,b,c,sum);
函数1 函数2 函数3
函数1 函数2
精选课件ppt
34
变量作用域——局部变量和全局变量

C语言程序设计实验实验报告7

C语言程序设计实验实验报告7

C语言程序设计实验实验报告7实验名称:链表实现学生信息管理系统实验目的:通过设计链表实现学生信息管理系统,掌握链表的操作方法及其应用。

实验内容:设计一个学生信息结构体,包括学号、姓名、性别、年龄和成绩五个成员变量,并选择链式结构存储这些数据。

实现以下功能:1. 添加学生信息:从键盘输入学号、姓名、性别、年龄和成绩等信息,添加到链表中。

2. 删除学生信息:从链表中删除指定学号的学生信息。

5. 按成绩排序:按学生的成绩从高到低排序,并输出所有学生的信息。

7. 退出程序:退出学生信息管理系统。

实验方法:1. 设计学生信息结构体,定义链表节点结构体,并编写初始化链表和销毁链表的函数。

2. 编写添加学生信息函数,新建链表节点并插入链表末尾。

3. 编写删除学生信息函数,根据学号查找需要删除的节点,先将该节点从链表中删除,再释放节点空间。

4. 编写修改学生信息函数,根据学号查找需要修改的节点,并修改其成员变量。

6. 编写按成绩排序函数,使用冒泡排序法对链表进行排序,并输出所有学生的信息。

7. 编写输出所有学生信息函数,遍历链表并输出每个节点的信息。

8. 完成学生信息管理系统的主函数,实现菜单及相应功能的选择。

实验结果:依次选择菜单中的各个功能,添加、修改、删除、查找、排序和输出学生信息都能实现。

经测试,程序稳定运行,功能正常,符合需求。

本次实验主要让我们掌握了链式结构的概念、链表节点的定义、链表的初始化、插入、查找、删除和销毁链表的操作方法,以及在实际应用中如何使用链表来实现数据管理。

虽然链表操作相对于数组稍微有些繁琐,但其可以灵活处理数据结构的长度变化,具有更高的可扩展性和更好的操作效率,可以更好的适应各种实际需求。

在实验中,还需要注意节点指针的正确使用、各个函数之间的调用关系和输入输出数据格式的合理选择等问题,以保证程序能够正常运行。

同时,还需要保持认真细致的态度,严格按照实验需求和要求来完成每个步骤,以达到更好的实验效果和运行效率。

大学生C语言程序设计(第四版 谭洪强)实验7 答案

大学生C语言程序设计(第四版 谭洪强)实验7 答案

实验七 参考答案(参考答案)(1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。

例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。

注意:n 的值要求不大于100。

算法分析:使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。

注意:i 的倒数要表示成:1.0/i;参考子函数如下:double fun(int n){double sum=0;int i;for(i=5;i<=n;i++)if(i%5==0||i%9==0)sum=sum+1.0/i;return sum;}(2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。

n s ⋯++++⋯++++++=321132112111例如:若n 的值为11时,函数的值为1.83333算法分析:等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。

参考子函数如下:float fun(int n){float sum=1; //sum 中已经累加了第一项的值int i,m=1; //m 表示每项的分母;for(i=2;i<=n;i++){ m=m+i;sum=sum+1.0/m;}return sum;}(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。

合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。

例如,当a=45,b=12,调用该函数后,c=5241。

算法分析:对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。

电大C语言程序设计 第7章 结构和联合

电大C语言程序设计 第7章 结构和联合

第7章 结构和联合 章 7.3 结构成员的访问 1.访问结构成员:通过点操作符“.”进行。 访问结构成员: 进行。 访问结构成员 通过点操作符“ 进行 访问code成员 例:person.code//访问 访问 成员 person.salary//访问 访问salary成员 访问 成员 2. 同类型的结构变量可相互赋值。 同类型的结构变量可相互赋值。 struct person { char name[20]; unsigned long id; float salary; }; person pr1={“Frank voltaire”,12345678,3.35}; person pr2; pr2=pr1; //同类型的结构变量可相互赋值 同类型的结构变量可相互赋值
第7章 结构和联合 章 7.2 结构变量的定义和初始化 结构变量定义方法有三种。 结构变量定义方法有三种。 1. 先定义结构类型,再定义变量 先定义结构类型, struct Arith { char op; int a,b; }; int xx=40; (1)struct Arith x,y; (2)struct Arith z1={'+',10,xx},z2={'*',60},z3=z1; (3)struct Arith *d=&z1; (4)struct Arith a[4]={{'+',3,7},{'-',10,5},{'*',6,4}, {'/',8,5}}; (5)struct Arith *b[ ]={&z1,&z2,a+2,&a[3]};
struct D{ int * a; int * ap; int maxsize; }; struct E{ int d,* e; struct B b; }; struct F{ double data; struct F * next; };

C语言程序设计_课件_第七章(适于清华谭浩强版)

C语言程序设计_课件_第七章(适于清华谭浩强版)

注意:
(1) return(表达式); 和return 表达式;都 是正确的。 (2) 带返回值的函数只能返回一个值。 (3) 在函数定义时,允许使用多个return语句, 但是应尽量在末尾使用一个return语句。 (4) return语句中的表达式与函数的返回值类 型不匹配时,以函数定义时的返回类型为准。

问题的提出 函数基础 函数的定义 函数说明 函数调用 参数传递 程序举例 递归调用 变量的存储类别
7.1 问题的提出
例6.20它可以解决的问题有: ①输入若干个学生的姓名、某课程的期中 和期末成绩,并计算每个学生的总评成绩; ②计算总评成绩的分数段情况; ③输出所有学生的姓名、期中、期末和总 评成绩; ④查询某个学生的总评成绩。
函数调用时需要传递数据。调用函数要将 实参的值传送给被调用函数的形参。 若函数定义首部是 double power(double x,int n) /*函数定义 */ 调 用 形 式 是 可 以 是 power(y,m) , 也 可 以 是 power(3.0,5)。 其中,x和n是形式参数,y和m是实际参数,3.0 和可以是一个变量 名,因为变量名也构成一个表达式,形式参数只 能是变量名。当实际参数是变量名时,它与形参 的名称既可以相同,也可以不同,只是要注意, 在函数定义内部应该使用形参的名称。 (2) 实际参数与形式参数的参数个数、数据类型 和顺序都应该一致,如果数据类型不一致,系统 将按照自动转换规则进行转换。
7.3 函数的定义
7.3.1 函数的定义形式 在C语言中函数定义的形式有两种。
第一种:
函数返回值的数据类型说明 函数名称(带有类型说明的参数表)
{
函数内部数据说明; 语句;
}
第二种:

C语言程序设计课件第7章-模块化程序设计

C语言程序设计课件第7章-模块化程序设计
• 该例中,有三个模块,两个外部函数A和B,一个内部函数F, 该例中,有三个模块,两个外部函数A 一个内部函数F 只在Main.c文件中起作用,一个main Main.c文件中起作用 main函数 只在Main.c文件中起作用,一个main函数
20112011-3-28
7
动 过 演示 态 程
外部变量
在多模块程序设计中某函数可以被多个模块调用: 在多模块程序设计中某函数可以被多个模块调用:
此关键字虽然可缺省, 此关键字虽然可缺省,但 • 它的声明可以出现在多个模块中 写上则表明所声明的函 • 它的定义只能出现在一个模块中 数在其他模块中定义 这就是同一模块中的 外部函数:该函数在模块B中定义,但是在模块A 外部函数:该函数在模块B中定义,但是在模块A中需要 函数原型声明形式
• (1)在模块A的所有函数之外(一般最前面)声明 (1)在模块A的所有函数之外(一般最前面) 在模块 演示版作了简化) 表7.5 外部变量的全局作用域 (演示版作了简化) 该例中有一个外部变量,数组dys 该例中有一个外部变量,数组dys • (2)在模块A的某个需要使用外部变量的函数体内声明 (2)在模块 在模块A
20112011-3-28 13
const常量(选讲) pc不 const常量(选讲) *pc不 pc是变量 但是pc所指向的内容* 是变量, pc所指向的内容 pc是变量,但是pc所指向的内容
允许修改,通常用于作函数的形参,以保 允许修改,通常用于作函数的形参, 在定义指针时根据const与指针相对位置的不同, 在定义指针时根据const与指针相对位置的不同,有三 const与指针相对位置的不同 pc是 : pc所 pc是const常量 护对应实参变量不被修改 种指针: 常量,一定要初始化,但是pc 种指针const常量,一定要初始化,但是pc所 指向的内容* 指向的内容*pc不是常量允许修改 (1)指向const常量的指针,例:const int *pc; 指向const常量的指针 常量的指针, (1)指向constpc不是常量允许修改 (2)const常量指针 常量指针, pc是const常量 一定要初始化, (2)const常量指针,例:pc是const常量,一定要初始化,同叶 int a=5; 常量, pc所指向的内容 pc也允许修改 所指向的内容* int *const pc=&a; pc所指向的内容*pc也允许修改 *const 此函数中一定不能出现通过指针pa pa修改对应实 此函数中一定不能出现通过指针pa修改对应实 (3)指向const常量的const常量指针 指向const常量的const常量指针, (3)指向const常量的const常量指针,例: 参数组元素的语句, *pa=1;等 参数组元素的语句,如:pa[i]=10; *pa=1;等 int a[5]={2,4,6,8,10}; const int *const pc=a; 指针作形参时一个常见用法: 指针作形参时一个常见用法: Display(const //输出函数 void Display(const int *pa,int n); //输出函数 主调函数:int 主调函数:int a[3]={23,45,12}; Display(a,3);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计 第1题 题目:编写函数 fun,函数的功能是:计 算 n 门课程的平均值,计算结果作为函数 值返回。例如,若有 5 门课程的成绩是: 92,76,69, 58,88,则函数的值为 72.599998。 答案 int i;
float y=0; for(i=0;i<n;i++) y+=a[i]; y=y/n; return y; 第2题 题目:用函数实现字符串的复制, 不允许 用
str[i]=str[i]+32; 第7题 题目:编写函数 fun,函数的功能是:求 一个给定字符串
中的字母的个数。 答案:int i,k=0;
for(i=0;s[i]!='\0';i++) if(s[i]>='a'&&s[i]<='z'||s[i]>='A'& &s[i]<='Z')
k++; return k; 第8题 题目:编写函数 fun 求一个字符串的长度, 在 main 函数中输入字符串,并输出其长 度。 答案: char *p; int n=0; p=p1; while(*p++) n++; return n; 第9题 题目:输入三个字符串,按由小到大顺序 输出。编写交换函数 fun,用交换指针的 方式实现交换。 答案:char *p=NULL; strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p); ----------------------
1
strcpy()函数。
答案 int i; for(i=0;str1[i]!='\0';i++) str2[i]=str1[i]; str2[i]='\0';
第3题 题目:请编写一个函数 fun,函数的功能 是:将主函数中输入的字符串反序存放。 例如:输入字符串"abcdefg",则应输出 "gfedcba"。 答案 int i,j; char c; for(i=0,j=n-1;i<j;i++,j--)
第5题 题目:下列程序中,函数 fun 的功能是: 实现两个整数的交换。例如给 a 和 b 分别 输入:60 和 65,输入为: a=65 b=60 答案: int t; t=*a;*a=*b;*b=t; 第6题 题目:将字符串中的大写字母转换为对应 的小
写字母,其它字符不变。 答案:int i;
for(i=0;str[i]!='\0';i++) if(str[i]>='A' && str[i]<='Z')
/*或者 for(i=0,j=n-1;i<n/2;i++,j--)*/ {c=*(str+i); *(str+i)=*(str+j); *(str+j)=c;} 第4题 答案:int i,k=0;
for(i=0;s[i]!='\0';i++) if(s[i]!=c) s[k++]=s[i]; s[k]='\0'; ----------------------
相关文档
最新文档