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

时间:2019-05-12 20:34:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言程序设计实验七:函数、数组、指针》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《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。上机运行并记录输入输出(主函数已给出)。

s11111 3572n1fun(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 void fun(float *sn,int n){ float s=0.0,w,f=-1.0;int i=0;for(i=0;i<=n;i++);{ f=(-1)*f;w=f/(2*i+1);s+=w;} *sn =s;} main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}

输出结果如下图: 想使指针变量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 void tranf(int(*p)[3]){ int t,i,j;for(i=0;i<3;i++)for(j=0;j

程序修改如下: #include void tranf(int(*p)[N]){ int t,i,j;for(i=0;i<3;i++)for(j=0;j char *strc(char *s1,char *s2){ char *p=s1;while(*s2!='')*p++=*s2++;return s1;} main(){ char s1[30]=“computer ok!”,s2[]=“language”,*pt;pt=strc(s1,s2);printf(“%sn”,pt);/* 第10行 */ } 将程序第10行中的%s改成%c,应该怎样修改?(只允许修改第10行)

应改为: printf(“%cn”,*pt++);

实验总结:本次实验主要掌握指针的概念,学会定义和使用指针变量,掌握指针、变量和数组的关系及使用方法,学会使用指向函数的指针变量,通过本次实验,很好的了解了指针的使用,加深了对指针的认识。

第四篇:C语言函数指针变量

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函数指针的移动是毫无意义的。

函数调用中(*指针变量名)的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号。

第五篇:c语言 二维数组与指针 教案

讲授

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 void main()

{ 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 void main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

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 void main()

{ 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 void main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

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语言程序设计实验七:函数、数组、指针word格式文档
下载C语言程序设计实验七:函数、数组、指针.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言程序设计实验五:函数(5篇范例)

    C语言程序设计实验五:函数 1、 定义函数返回两个数中较大的数,在主函数中通过调用该函数求三个数中较大的数并输出,编写主函数调用该函数。说明:(1)请大家按学号来坐,便于考勤和管......

    C语言必背的典型程序设计题目 - 数组、函数-------参考答案

    数组部分必须会编写的程序(参考答案) 1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。 //选择法 #include void main() { int a[10]={12,45,7,8,96,4,10,48,2,......

    C语言实验六 数组

    实验六 数组 实验目的: 1、通过实验掌握数组在内存中的存放形式;2、掌握一维数组和二维数组的定义和数组元素的引用; 3、掌握各种字符串库函数的用法。实验内容: 1、教材P138页......

    C语言数组补充实验

    C语言程序设计 数组补充实验 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法。 2、掌握字符数组和字符串函数的使用。 3、掌握与数组有关的算法(排序......

    实验七函数实验报告范文

    实验七 函数 一、实验目的 1.掌握定义函数的方法。 2.掌握函数实参及形参的对应关系以及“值传递”方式。 3.掌握函数的嵌套调用和递归调用的方法。 4.掌握全局变量和局部变量,动......

    C语言程序设计—函数—实验报告

    实 验 报 告 专业软 件 工 程班级 X 班学号_ XXXXXXXXXXX_ 姓名实验日期:201X年X月X日报告退发 (订正 、 重做) 课程 C程序设计实验 实验名称 函 数一、实验目的 ① 熟练掌......

    C语言程序设计教案 第十章指针(推荐五篇)

    第十章 指 针 课题: 教学目的: 教学重点: 教学难点: 第十章 指针§1-§2 1、了解指针与地址的概念 2、掌握指针变量的定义、初始化及指针的运算 指针变量的定义、初始化及指针......

    《c语言程序设计新视角》第六章指针小结

    《c语言程序设计新视角》第六章 指针小结 指针特殊存地址,变量运算受限的。 指针类型要注意,不一定是整型的。 想要存取单元值,先定地址是哪的。 指针若要移一下,步长类型确定的......