C语言程序设计实验七:函数、数组、指针

第一篇:C语言程序设计实验七:函数、数组、指针
C语言程序设计实验七:函数、数组、指针
1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个 数。不能使用strlen函数。
求字符串长度函数的函数原型必须如下:
int MyStrLenPt(char *str)
若输入:nihao123!
则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。
要求:
写两个函数,一个主函数,一个sort函数。在主函数中完成数组的输入和输出,通过调 用sort函数对数组进行排序。
sort函数的原型为:voidsort(int*p, intn);
说明:
(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
(4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。
第二篇:C语言程序设计实验十指针
C语言程序设计实验十——指针
【实验1】
实验题目:
1、下列代码片段哪里有错误?
char var1,ptr1;
var1 = „x‟;
ptr1 = &var1;
2、设有如下定义:
Double var1, *ptr1, *ptr2;
Float* ptr3;
Int var2, *var4;
那么,var1, *ptr1, ptr2,*ptr2,ptr3,* ptr3,var2, var4,*var4个属于哪种数据类型?
3、下列代码片段在哪里有错误?
Char c = ‟ A ‟;
Char * p;
p = c;或*p=‟A‟;
4、下列代码片段的输出结果是什么?
charvar1 = „ S „;
charvar2 = „ X ‟;
char*ptr1, *ptr2;
ptr1 = &var1;
ptr2 = &var2;
*ptr2 = *ptr1;
printf(“%ct%cn”, *ptr1, var2);
【实验2】
实验题目:输入3个整数,按由小到大的顺序输出。
【实验3】
实验题目:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
实验要求:写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。
【实验4】输入年和天数,输出对应的年、月、日。
例如:输入2000和61,输出2000-3-1。
要求:都用指针实现。
第三篇:C语言实验程序、总结 实验七 指针
一 实验目的
实验七 指针 了解指针的概念,学会定义和使用指针变量。2 掌握指针、变量和数组的关系及使用方法。3 学会使用指向函数的指针变量。
二 实验内容 编写函数fun(float *sn,int n),其功能是:根据以下公式计算s,计算结果通过形参sn传回;n通过实参传入,n的值大于等于0。上机运行并记录输入输出(主函数已给出)。
s11111 3572n1fun(float *sn,int n){ 定义变量:和s,通项w,符号f,循环控制变量i; /* 其中s、f要初始化 */ 循环求累加和s { 改变符号;/* 由负变正或由正变负 */ 求通项w;累加:s+=w;} 形参指针变量sn赋值;/* 通过形参sn传回累加和s */ } main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}
完整程序如下:
#include
输出结果如下图: 想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的? swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p } main(){ int a,b;int *pt1,*pt2;scanf(“%d,%d”,&a,&b);pt1=&a;pt2=&b;if(a
上机调试此程序。如果不能实现题目要求,指出原因并修改之。
子函数swap改成下面程序方可实现目的,主函数不变: swap(int *p1,int *p2){ int p;p=*p1;*p1=*p2;*p2=p;} 下面的程序用来实现将一个3×3的矩阵转置。#include 程序修改如下: #include 应改为: printf(“%cn”,*pt++); 实验总结:本次实验主要掌握指针的概念,学会定义和使用指针变量,掌握指针、变量和数组的关系及使用方法,学会使用指向函数的指针变量,通过本次实验,很好的了解了指针的使用,加深了对指针的认识。 C语言函数指针变量 在C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为函数指针变量。 函数指针变量定义的一般形式为: 类型说明符(*指针变量名)();其中类型说明符表示现金网96y.org被指函数的返回值的类型。(* 指针变量名)表示*后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。例如: int(*pf)(); 表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。 本例用来说明用指针形式实现对函数调用的方法。 int max(int a,int b){ if(ab)return a; else return b; } main(){ int max(int a,int b); int(*pmax)(); int x,y,z; pmax=max; printf(input two numbers:n); scanf(%d%d,x,y); z=(*pmax)(x,y); printf(maxmum=%d,z); } 从上述程序可以看出用,函数指针变量形式调用函数的步骤如下: 先定义函数指针变量,如后一程序中第9行 int(*pmax)();定义 pmax为函数指针变量。 把被调函数的入口地址(函数名)赋予该函数指针变量,如程序中第11行 pmax=max; 用函数指针变量形式调用函数,如程序第14行 z=(*pmax)(x,y); 调用函数的一般形式为:(*指针变量名)(实参表) 使用函数指针变量还应注意以下两点: 函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而博彩娱乐棋牌q07i5.org函数指针的移动是毫无意义的。 函数调用中(*指针变量名)的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号。 讲授 9.6二维数组和指针 2课时 掌握二维数组的地址表示方法 掌握指向数组元素的指针变量 掌握指向数组元素的指针变量 掌握用指向由m个元素组成的一维数组的指针变量 指向一维数组的指针变量 无 作业见后 一、二维数组的地址 例:定义二维数组int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 则二维数组a是数组的数组,由3个一维数组所组成的,即3个元素:a[0],a[1],a[2]。而每个元素又是一个一维数组。 二、指向二维数组元素的指针变量 1、指向数组元素的指针变量 例1 用指向元素的指针变量输出二维数组元素的值 #include { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0];p {if((p-a[0])%4==0)printf(″\n″); printf(″%4d″,*p); } }用指向由m个元素组成的一维数组的指针变量 例2 输出二维数组任一行任一列元素的值 #include int(*p)[4],i,j; p=a; scanf(“i=%d,j=%d”,&i,&j); printf(“a[%d,%d]=%d\n”,i,j,*(*(p+i)+j)); } 注意: 指向一维数组的指针变量的定义格式应写成:基类型(*p)[N] 上述语句int(*p)[4],代表p是一个指针变量,它指向包含4个整型元素的一维数组。*p两侧的小括号不可少,如果写成*p[4],由于[]运算级别高于*,*p[4]是指针数组。 p=a;表明p指向数组a中的第0行,此时p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,p+1地址就增加了8个字节。*(p+i)+j是a[i][j]的地址,这里的i是以一维数组的长度为单位,j则是以数组元素的长度为单位的。 复习 新授 讲授 复习默写 1、选择排序的基本思想 2、从键盘输入5个整数,使用选择法从小到大排序,编程实现。 一、二维数组的地址 例:定义二维数组int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 则二维数组a是数组的数组,由3个一维数组所组成的,即3个元素:a[0],a[1],a[2]。而每个元素又是一个一维数组。设二维数组的首行的首地址为2000,则: 二、指向二维数组元素的指针变量 1、指向数组元素的指针变量 例1 用指向元素的指针变量输出二维数组元素的值 #include { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0];p {if((p-a[0])%4==0)printf(″\n″); printf(″%4d″,*p); } } 注意:上例中如果对p赋值p=a[0];不能写成 p=a;因为此时a 是行指针,而p是列指针只能指向一个整型变量,a[0]是第0行的数组名,即第0行的首地址就是a[0][0]的地址。请学生思考上述赋值语句还可以写成什么? p=*a;p=&a[0][0];用指向由m个元素组成的一维数组的指针变量 例2 输出二维数组任一行任一列元素的值 #include int(*p)[4],i,j; p=a; scanf(“i=%d,j=%d”,&i,&j); printf(“a[%d,%d]=%d\n”,i,j,*(*(p+i)+j)); } 注意: 指向一维数组的指针变量的定义格式应写成:基类型(*p)[N] 上述语句int(*p)[4],代表p是一个指针变量,它指向包含4个整型元素的一维数组。*p两侧的小括号不可少,如果写成*p[4],由于[]运算级别高于*,*p[4]是指针数组。 小结 作业 p=a;表明p指向数组a中的第0行,此时p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,p+1地址就增加了8个字节。*(p+i)+j是a[i][j]的地址,这里的i是以一维数组的长度为单位,j则是以数组元素的长度为单位的。 例3: int(*t)[4],a[3][4]={{1,3,5,7}, {11,13,15,17},{21,23,25,27}};t = a;printf(“%d,%d”, **t, t[1][2]);t++;t++;printf(“%d”, **t); 运行结果:1,1521 【课堂小练习】 1、[2010.3.27]若有:int(*p)[3];则正确的是(D)A)定义了基类型为int的三个指针变量 B)p是基类型为int的具有三个元素的指针数组 C)定义了名为*p,具有三个元素的整型数组 D)定义了一个名为p的指针变量,它可以指向每行有三个整数元素的二维数组 2、输入:1 2 3<回车>,则输出结果是 int a[3][2]={0},(*p)[2],i,j;p=a;for(i=0;i<2;i++){ scanf(“%d”,p);p++;} for(i=0;i<3;i++)for(j=0;j<2;j++)printf(“%d”,a[i][j]); 1、二维数组的地址 2、指向数组元素的指针变量 3、指向一维数组的指针变量 1、整理课堂笔记 2、完成深入研究整型指针练习题第四篇:C语言函数指针变量
第五篇:c语言 二维数组与指针 教案
C语言程序设计实验七:函数、数组、指针
本文2025-01-29 05:31:38发表“合同范文”栏目。
本文链接:https://www.wnwk.com/article/328641.html
- 二年级数学下册其中检测卷二年级数学下册其中检测卷附答案#期中测试卷.pdf
- 二年级数学下册期末质检卷(苏教版)二年级数学下册期末质检卷(苏教版)#期末复习 #期末测试卷 #二年级数学 #二年级数学下册#关注我持续更新小学知识.pdf
- 二年级数学下册期末混合运算专项练习二年级数学下册期末混合运算专项练习#二年级#二年级数学下册#关注我持续更新小学知识 #知识分享 #家长收藏孩子受益.pdf
- 二年级数学下册年月日三类周期问题解题方法二年级数学下册年月日三类周期问题解题方法#二年级#二年级数学下册#知识分享 #关注我持续更新小学知识 #家长收藏孩子受益.pdf
- 二年级数学下册解决问题专项训练二年级数学下册解决问题专项训练#专项训练#解决问题#二年级#二年级数学下册#知识分享.pdf
- 二年级数学下册还原问题二年级数学下册还原问题#二年级#二年级数学#关注我持续更新小学知识 #知识分享 #家长收藏孩子受益.pdf
- 二年级数学下册第六单元考试卷家长打印出来给孩子测试测试争取拿到高分!#小学二年级试卷分享 #二年级第六单考试数学 #第六单考试#二年级数学下册.pdf
- 二年级数学下册必背顺口溜口诀汇总二年级数学下册必背顺口溜口诀汇总#二年级#二年级数学下册 #知识分享 #家长收藏孩子受益 #关注我持续更新小学知识.pdf
- 二年级数学下册《重点难点思维题》两大问题解决技巧和方法巧算星期几解决周期问题还原问题强化思维训练老师精心整理家长可以打印出来给孩子练习#家长收藏孩子受益 #学霸秘籍 #思维训练 #二年级 #知识点总结.pdf
- 二年级数学下册 必背公式大全寒假提前背一背开学更轻松#二年级 #二年级数学 #二年级数学下册 #寒假充电计划 #公式.pdf


