文档库 最新最全的文档下载
当前位置:文档库 › 第6章 指针--编程

第6章 指针--编程

第6章 指针--编程
第6章 指针--编程

第6章指针

1 fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N

个最大值中的最小的那个数作为函数值返回。请填空。

#include "stdio.h"

#include

#define N 100

int fun(int(*a)[N])

{ int row,col,max,min;

for(row=0;row

{ for(max=a[row][0],col=1;col

if( [13] )max=a[row][col];

if( row==0)min=max;

else if( [14] )min=max;

}

return min;

}

2 以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数

值返回,并通过形参传回此最大值所在的行下标。请填空。

#include "stdio.h"

#define N 3

#define M 3

select(int a[N][M],int *n)

{ int i,j,row=1,colum=1;

for(i=0;i

for(j=0;j

if(a[i][j]>a[row][colum]){row=i;colum=j;}

*n= 【17】;

return 【18】;

}

main()

{int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;

max=select(a,&n);

printf("max=%d,line=%d\n",max,n);

}

3. mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

int mystrlen(char *str)

{ int i;

for(i=0; 【19】!=‘\0';i++);

return(【20】);}

4、函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,

返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。

#include "stdio.h"

#include

int sstrcmp(char *s,char *t)

{ while(*s&&*t&& *s== [15] )

{ s++;t++;}

return [16] ;

}

5 输入整型变量a、b的值,利用指针使它们的值交换,并输出交换后a、b的值。

6 有三个整型变量i、j、k。请编一程序,设置三个指针变量p1、p2、p3,分别指向i、j、k。然后通过指针变量使i、j、k三个变量的值顺序交换,即把i的原值赋给k,把j的原值赋给i,把k的原值赋给j。i、j、k的原值由键盘输入,要求输出i、j、k的原值和新值。

7 从键盘输入三个整数,要求设三个指针变量p1,p2,p3,使p1指向三个数的最大者,p2

指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数。

8 请编写程序,判断一个字符串是否是回文。若是回文,输出“yes”,否则输出“no”。回文是顺读和到读都一样的字符串。要求用指针实现。

9 编一个程序,输入n个互不相等的整数存于数组中,并输出。程序如发现输入的数据已输入过,则要求重新输入。要求用指针实现。

10 利用指针,向一整型数组a中输入数据并将数组a中的数据复制到另一个数组b中。

11 编写函数把任意十进制正整数转换成二进制数。提示:把十进制数不断被2除余数放在一个一维数组中,直到商为0。结果在主函数中输出。

12 编写函数对字符数组中的字母,按由大到小的顺序进行排序。

13 编一个程序,输入n个整数存于数组。编写函数找出数组中出现次数最多且是最早出现的整数。

14 编写函数调用随机函数产生0到99之间的随机数,在数组中存入20个互不重复的整数。要求在主函数中输出结果。若已定义x为int类型,调用随机函数步骤如下:

#include “stdlib.h”

……

……

x=rand()%100; /*产生0到99的随机数*/

15 有一个数列,有20个整数,今要求编一个函数,它能够对从指定位置开始的n个数按相反顺序重新排列。例如数列原为:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

若要求对从第五个数开始的10个数进行逆序处理,则得到的新数列为:

1,2,3,4,14,13,12,11,10,9,8,7,6,5,15,16,17,18,19,20

数列中的数在main()函数中输入,在调用函数时应给出从第几个位置开始(以m表示)和要处理的是多少个数(以n表示),例如对上面的情况,m=5,n=10。最后在main函数中输出新的数列。

16 调用随机函数为5×4的矩阵置100以内的整数,求出每行元素之和,并把和值最大的那一行与第一行上的元素对调。以上功能都通过函数实现,最后在主函数中输出最终的矩阵。

17 有一个整型二维数组,大小为5×4,要求找出其中最大值所在的行和列,以及该最大值。请编一个函数max,m和n是该函数形参,数组元素的值在main函数中输入,结果在函数max中输出。

18 编写一个str_len函数,它能对一个字符串测出其长度,函数的返回值就是字符串的长度(说明:长度不包括字符串结束标志“\0”)。

19 请编写函数,判断一个字符串是否是回文。若是回文,函数返回值为1;否则返回值为0。回文是顺读和到读都一样的字符串。

20 请编写函数,删除字符串中指定位置上的字符。删除成功函数返回被删字符;否则返回空值。

C语言程序设计实验答案数组、指针与字符串

实验06 数组、指针与字符串(4学时) (第6章数组、指针与字符串) 一、实验目的 二、实验任务 6_1(习题6-25)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。 6_2(习题6-26)使用动态内存分配生成动态数组来重新完成上题(n阶方阵),使用指针实现函数的功能。 6_3 编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 6_4 使用string类声明字符串对象,重新实现上一小题。 6_5(习题6-27)声明一个Employee类。 其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。 6_6(习题6-27)声明包含5个元素的对象数组,每个元素都是Employee 类型的对象。 6_7 修改实验4中的people(人员)类。 具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”声明为一个“日期”类内嵌子对象。 用成员函数实现对人员信息的录入和显示。 要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。 在测试程序中声明people类的对象数组,录入数据并显示。

三、实验步骤 1.(编程,习题6-25)编写矩阵转置函数,输入参数为3×3整型数组。 使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入输出。程序名:lab6_1.cpp。 参考运行结果: ★程序及运行结果: //lab6_1.cpp #include using namespace std; void move(int matrix[][3]){ int temp; for(int i=0;i<3;i++) for(int j=0;j>mat[i][j]; } cout<<"\n输入的3×3矩阵为:"<

c语言实验报告6 指针

实验6 指针1.实验目的和要求 (1)掌握指针的概念、指针变量定义格式和引用。 (2)掌握指针的运算方法。 (3)掌握数组的指针和指向数组的指针变量。 (4)掌握指针与函数的关系。 (5)能正确使用字符串的指针和指向字符串的指针变量。(6)了解指向函数的指针。 (7)了解指向指针变量的指针。 2.实验内容:实验指导书中的实验九。 3.实验步骤 9.1 调试程序,找出程序的错误。 改正后的程序代码(贴图): 运行结果(帖图): 9.2 运行程序:

运行结果:; 9.3 修改程序错误,并运行。 改正后程序代码: 运行结果(帖图): 9.4. 程序填空:

运行结果(请帖图):9.5. 程序填空:

程序填空: #include main() { int a[5][5]={0},*p[5],i,j; for(i=0; i<5; i++) p[i]= &a[i][0] ; for(i=0; i<5; i++) { *(p[i]+ i )=1; *(p[i]+5- (i+1) )=1; } for(i=0; i<5; i++) { for(j=0; j<5; j++) printf("%2d", p[i][j]); Printf("\n") ; } } 运行结果(请帖图):

9.6 编程(选作) #include main() { int *p,a[20],i,k,m,n; p=a; printf("请输入人数n:"); scanf("%d",&n); for(i=0;i

实验八 指针程序设计(解答)

《指针程序设计》实验解答 1、改错题 (1) include int digits(char *s) { int c=0; while(*s) //s改为*s { if(*s>='0' && *s<='9') //*s>=0 && *s<=9改为*s>='0' && *s<='9' c++; s++; } return c; } void main() { char s[80]; printf("请输入一行字符\n"); gets(s); printf("字符长度是:%d\n",digits(s)); } (2) #include swap(int *p1,int *p2) { int p; //int *p改为int p p=*p1; //*p=*p1改为p=*p1 *p1=*p2; *p2= p; //*p2=*p 改为*p2=*p } void main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d\tb=%d\n",a,b); swap(&a,&b); printf("a=%d\tb=%d\n",a,b); }

(3) #include void move(int *pointer) ; //添加 void main(void) { int a[3][3],*p,i; printf("输入数组元素:\n"); for(i=0;i<3;i++) scanf("%d%d%d",&a[i][0], &a[i][1], &a[i][2]); //scanf("%d%d%d",a[i][0], a[i][1], a[i][2]) p=&a[0][0]; // p=a[0][0]; move(p); printf("转置后的数组为:\n"); for(i=0;i<3;i++) printf("%d %d %d\n",a[i][0], a[i][1], a[i][2]); } void move(int *pointer) { int i,j,t; for(i=0;i<3;i++) for(j=i;j<3;j++) { t=*(pointer+3*i+j); //t=(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; //*(pointer+3*j+i)=*t; } } 2、程序填空 (1) #include int findmax(int *s,int t ) { int i,k=0; for(i=0;i< t ;i++) //1 if( s[i]>s[k]) k=i; // 2 return k ; //3 } void main() { int a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add; int j; for(j=0;j<10;j++) printf("%4d%4d%10xh\n",j+1,a[j],&a[j]);

实验6、指针和结构体(有答案)

实验6、指针和结构体 【实验目的】 1.掌握地址和指针的基本概念,学会定义和使用指针变量; 2.熟悉指针与数组之间的关系,能正确使用数组的指针和指向数组的指针变量; 3.掌握指针形参的作用,熟练掌握编写指针形参的函数; 4.掌握结构体类型变量和结构体指针的定义及结构体成员的引用方式; 5.掌握结构体数组的定义及应用方法; 6.掌握链表的定义及操作,并能熟练编写链表应用程序。 【实验内容】 1、程序填空 给定程序中函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。 例如,形参s所指字符串为baawrskjghzlicda,执行后p所指字符数组中的字符串应为aachjlsw。 在以下程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。不得增行或删行,也不得更改程序结构。 程序填空如下: #include void fun(char *s,char *p) { int i,j,n,x,t; n=0; for(i=0;s[i]!=’\0’;i++) n++; for(i=1;i

C语言程序设计—指针—实验报告

实验报告 专业软件工程班级X 班学号_ _ 姓名 实验日期:201X年X月X日报告退发(订正、重做) 课程C程序设计实验实验名称指针 一、实验目的 二、实验环境(描述实验的软件、硬件环境) ①软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器; ②硬件环境:PC机一台 三、实验内容、步骤和结果分析 题目一:输入3个整数,按由小到大的顺序输出 要求: 使用指针方法实现; #include void function(int *a, int *b) { int temp; if (*a<*b) { temp = *a; *a = *b; *b = temp; } } int main() { int a, b, c; int *p1, *p2, *p3; p1 = &a; p2 = &b; p3 = &c; scanf("%d%d%d", &a, &b, &c); function(p1, p2); function(p1, p3); function(p2, p3); printf("%d %d %d\n", *p3, *p2, *p1); return 0;

题目二:将长度为10的整型数组arr中的元素按照从小到大排列并输出 要求: 使用指针方法实现; #include int main() { struct METRIC { float m; float cm; } m1, m2; struct BRITISH{ float foot; float inches; } b1, b2; printf("Enter the info of m1(米,厘米):"); scanf("%f%f", &m1.m, &m1.cm); printf("Enter the info of m2(米,厘米):"); scanf("%f%f", &m2.m, &m2.cm); printf("\nEnter the info of m2(英尺,英寸):"); scanf("%f%f", &b1.foot, &b1.inches); printf("Enter the info of m2(英尺,英寸):"); scanf("%f%f", &b2.foot, &b2.inches); printf("\nSum of m1 and m2 is:%.2f(厘米)\n", (m1.m + m2.m) * 100 + m1.cm + m2.cm); printf("Sum of b1 and b2 is:%.2f(厘米)\n\n", (b1.inches + b2.inches)*30.48 + (b1.foot + b2.foot)*2.54); return 0;

C语言实验六实验报告——指针

一、实验项目名称 指针 二、实验目的 1.掌握指针的基本概念和基本用法。包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等; 2.掌握数组与指针的关系并能够利用指针解决数组的相关问题; 3.掌握字符串与指针的关系并能够利用指针处理字符串的问题; 4.掌握指针与函数的关系并能够利用指针处理函数问题; 5.了解指向指针的指针的概念及其使用方法; 6.能够使用指针进行程序设计。 三、实验内容 有关指针的程序设计 1.编程实现:任意输入的10个数,求其平均值。 要求: (1)10个数采用scanf语句读入。 (2)利用指针实现对这10个数的访问。 (3)要求平均值的精度为小数后面2位。 2.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。 要求: (1)整数数组由初始化方式输入。任意整数由scanf函数输入; (2)实现过程采用指针处理; (3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。 3.编写函数newcopy(char *new,char *old),它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中。 要求: (1)在主函数中以初始化方式输入一个字符串; (2)调用newcopy()函数; (3)在主函数中输出处理后的结果。 4.编程实现:输入三个整数,按由大到小的顺序输出。

要求: (1)通过scanf函数输入三个数据并存入三个变量中; (2)利用指针实现从大到小输出; (3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出; (4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出; (5)体会指针对不同数据处理的特点。 四、实验步骤及结果 一、 #include <> void main() { int a[10],n,sum=0; float aver;/* 定义平均数为浮点型*/ int *p=a;/*初始化*/ printf("Please input 10 numbers:\n"); for (n=0;n<10;++n) scanf("%d",&a[n]);/*输入十个数*/ for (n=0;n<10;++n) sum=sum+*(p+n);/*使用指针访问数据*/ aver=(float)sum/n; printf("Average is %.2f",aver);/*精确到小数点后两位*/ } 二、 #include <> void arr(int *a,int n);/*定义排序函数*/ void insert(int *a,int num);/*插入并排序函数*/ int n=10;/*定义数据个数,可修改*/ void main()

实验六 指针(题目)

实验六指针 一、实验目的及要求 1.通用实验进一步掌握指针的概念,会定义和使用指针变量; 2.能正确使用数组的指针和指向数组的指针变量; 3.能正确使用字符串的指针和指向字符串的指针变量; 4.能正确使用指向函数的指针变量; 5.了解指向指针的指针的概念及其使用方法。 二、实验学时 4学时 三、实验任务 编程序并上机调试运行程序(都要求用指针处理)。 1.上机验证以下c70101.c程序的运行结果 #include void main() { inti,j,*pi,*pj; pi=&i; pj=&j; i=5; j=7; printf("\n%d\t%d\t%d\t%d",i,j,pi,pj); printf("\n%d\t%d\t%d\t%d",&i,*&i,&j,*&j); } 运行结果: 5 7 -34 -32 -34 5 -32 7 相关知识:指针的值与指针指向的变量值的区别。在VC环境下,以上运行结果中的负数是另一个值。 2.上机验证以下c70102.c程序的运行结果 #include void main() { inti,a[]={1,2,3},*p; p=a;/*将数组a首地址赋给指针p*/ for (i=0;i<3;i++) printf("%d,%d,%d,%d\n",a[i],p[i],*(p+i),*(a+i)); } 运行结果: 1,1,1,1 2,2,2,2

3,3,3,3 相关知识:①指针指向数组的方法;②指针表示数组元素的方法。③数组元素的多种表示方法。 3.调试下列c70103.c程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。写出调试过程。 #include void main() { intj,a[12],*p=a; for(j=0;j<12;j++) scanf("%d",p++); p=a; for(j=1;j<=12;j++) { printf("%4d",*p++); if(j%4 == 0) printf("\n"); } } 相关知识:①调试时指针变量指向哪个目标变量;②区分指针的值和指针指向变量的值; ③通过指针操作数组元素。 4.调试下列c70104.c程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:⑴2个数的和,⑵2个数交换值。 #include void main( ) { inta,b,c,*p=&c; void sum(int ,int ,int *); void swap(int * ,int * ); scanf("%d,%d",&a,&b); sum(a,b,p); swap(&a,&b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); } void sum(inta,intb,int *c) { *c=a+b; } void swap(int *a,int *b) { int *t; t=a; a=b; b=t; } 相关知识:①调试程序时注意参数传递的是数值还是地址。②指针作为参数;③利用指针得到多个返回值。

C语言_实验六 指针剖析

实验六指针 一、实验目的 1、掌握指针的概念,定义和使用指针变量; 2、掌握指针与数组的关系,指针与数组有关的算术运算、比较运算。 3、掌握字符串指针作的用法。 二、相关知识点 ●地址和指针的概念; ●数组和指针的关系; ●字符串和指针的关系; 三、实验内容一(验证及程序分析) Eg5-1: 输入两个整数,并使其从大到小输出,用指针变量实现数的比较。 (1)源程序: #include void main() { int *p1,*p2,*p,a,b; scanf("%d,%d",&a,&b); p1=&a; p2=&b; if(a

printf("a=%d,b=%d\n",a,b); printf("max=%d,min=%d\n",*p1,*p2); } (2)程序运行结果: (3)在程序中的定义一个整型变量t,然后将语句段if(a

Eg5-2:运行并改正下面程序中的错误。#include void main() { int a=3,b; int *p; *p=a; b=*p; printf("%d\n",b); a=100; b=*p; printf("%d\n",b); } (1)程序运行结果:

(2)请简要分析程序错误的原因: (3)请将程序中的错误改正后重新运行: Eg5-3:用指针法输入12 个数,然后按每行4 个数输出。 (1)算法分析:定义一个整型数组和一个整型指针,这样通过数组就可以静态分配内存空间,存储数据;然后将指针与数组相关,使指针指向与数组相同

《C++程序设计1》实验6参考答案、程序

《C++程序设计1》实验6参考程序与答案 6.1、填空题 1. 一个指针类型的对象占用内存的__4__个字节的存储空间。 #include void main() { int a,*p=&a; cout<

C++实验6 数组与指针

一、实验名称 实验6 数组与指针 二、实验目的 指针是C++最灵活最有特色的部分,没有熟练掌握指针,则不能说学会了C++。数组在处理同类型的多个数据问题时非常有效,是C++的重要数据类型。数组与指针之间有着密切关系。通过实践要求掌握: 1、指针的定义和使用; 2、指针与数组的相互关系; 3、数组或指针作为函数参数的函数定义及调用方法; 三、实验内容 1、课本6-18,6-20 2、按一定的规则可以将一个字符串经加密转换为一个新的串。 【提示】例如加密的简单方法是当为‘a’~‘y’的小写字母时用后一个字母代替前一个字母,其中‘z’变换为‘a’,其他字符时不变。例如:原串为This is a secret code! 加密后的串为Tijt jt b tfdsfu dpef! 编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。自己另设计一个带密钥的加密算法,例如密钥是一个常数,字符串加密的方法是将每个字符的ASCII 码值加上该常数,然后对128 求模。 【要求】编写程序,以密钥将输入的字符串加密输出,再以相同的密钥,将加密字符串解密输出。 四、实验环境 PC微机 Windows 操作系统 Microsoft Visual Studio 6.0集成开发环境; Microsoft Visual Studio 6.0集成开发环境的MSDN 五、实验步骤 1、6-18:#include

using namespace std; int *Fn1(); int main() { int *a=Fn1(); cout<<"the value of a is:"<<*a; delete a; return 0; } int *Fn1() { int *p=new int (5); return p; } 6-20: #include using namespace std; class SimpleCircle { public: SimpleCircle(); SimpleCircle(int); SimpleCircle(const SimpleCircle &); ~SimpleCircle(){} void SetRadius(int); int GetRadius()const; private: int *itsRadius; }; SimpleCircle::SimpleCircle() { itsRadius=new int(5); } SimpleCircle::SimpleCircle(int radius) { itsRadius=new int(radius); } SimpleCircle::SimpleCircle(const SimpleCircle & rhs) { int val=rhs.GetRadius(); itsRadius=new int(val); } int SimpleCircle::GetRadius() const { return *itsRadius; } int main() { SimpleCircle CircleOne,CircleTwo(9); cout<<"CircleOne:"< #include using namespace std; const int key=12; void main() { string str; cout<<"请输入需要加密的字符:"<

实验的七指针程序设计

实验七指针程序设计 一、实验目的 1.掌握指针和指针变量的概念。 2.掌握简单指针变量的定义和基本使用方法。 3.熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。 4.了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。5.了解指针与字符串的关系,能熟练使用指针处理字符串。 二、实验内容 1.用指针访问简单变量。从键盘输入三个整数,要求设三个指针变量 p1,p2,p3,使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数。 2.用指针法在一维有序数组中插入数据。如下是具有10整数的升序数列,存储在一维数组中,要求在其中插入任意一个整数后数列仍然有序。数列:10,20,30,40,50,60,70,80,90,99 3.用指针实现选择法排序程序。输入20个整数,并用指针实现选择法 升序排序。 三、实验指导 1.用指针访问简单变量。 ⑴编程分析 定义指向整型变量的指针变量,然后通过“*指针变量”的形式即可访 问相应的简单变量。 ⑵参考程序 /* 用指针访问简单变量的程序 */ #include "stdio.h" void main() { int a,b,c,temp; int *p1,*p2,*p3; printf("请输入三个整数值(a,b,c):\n"); scanf("%d,%d,%d",&a,&b,&c); p1=&a; /* 使指针p1指向简单变量a */ p2=&b; /* 使指针p2指向简单变量b */ p3=&c; /* 使指针p3指向简单变量c */ if(*p1<*p2) { temp=*p1;*p1=*p2;*p2=temp; } if(*p1<*p3) { temp=*p1;*p1=*p3;*p3=temp; } /* 至此p1指向了三个数中的最大数 */ if(*p2<*p3) { temp=*p2;*p2=*p3;*p3=temp; } /* 至此p3指向了最小数,p2指向了中间数 */ printf("%d,%d,%d\n",*p3,*p2,*p1); } ⑶程序调试 ①运行程序,任意输入三个整数(之间以逗号分隔),察看并分析程 序运行结果。

实验6指针程序设计

C语言程序设计实验报告 实验六指针程序设计 一、实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用数组的指针和指向数组的指针变量; (3)熟悉指针做函数参数的使用方法; (4)能正确使用字符串的指针和指向字符串的指针变量。 二、实验内容及步骤 1、按要求完善程序 下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even返回偶数之和。例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。 程序代码如下所示:粗体部分为补充程序 #include #define N 20 void fun(int *a,int n,int *odd,int *even) { int i; for(i=0;i

实验六

C语言程序设计实验报告 实验六使用指针的程序设计(2) 班级2010196 学号201219628 姓名李明月 一、实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用字符串的指针和指向字符串的指针变量。 (3)能正确使用指向函数的指针变量; (4)了解指向指针的指针的概念及其使用方法。 二、实验内容及步骤 1.从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。 程序代码: #include #include int main() { void nixu(char *to,int n); //声明函数 char c[30]; int n; printf("请输入一个字符串:"); gets(c); //输入字符串 printf("\n"); n=strlen(c); //计算输入的字符串的个数printf("您输入的字符串是:%s\n",c); nixu(c,n); //调用函数实现逆序输出功能 printf("\n"); printf("将您输入的字符串逆序输出:%s\n",c); return 0; } void nixu(char *to,int n) //定义nixu函数实现对函数的逆序排列 { int temp,i,j,m=(n-1)/2; for(i=0;i<=m;i++) { j=n-1-i; temp=*(to+i); *(to+i)=*(to+j); *(to+j)=temp; }

} 运行结果: 2.写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:用****作为结束输入的标志。)程序代码: #include #include void main() { void MaxString(char(*p)[81],char **max,int num); i nt n,i=0; c har str[10][81],*pt=NULL; p rintf("请输入几个字符串,以字符串****作为结束标志!:\n"); while(!strcmp(str[i-1],"****")==0) { gets(str[i]); i++; } n=i; M axString(str,&pt,n); p rintf("在您输入的字符串中,最长的字符串为:\n"); p uts(pt); } void MaxString(char(*p)[81],char **max,int num)//形参二维指针max 用于接收main()中最长字符串指针的地址 { *max=p[0]; f or(int i=1;istrlen(*max)) { *max=p[i]; } } }

实验报告6-指针实验

南京工程学院 电力工程学院 学年第 1 学期 实验报告 课程名称 C语言程序设计 实验项目名称指针 实验学生班级 实验学生姓名 同组学生姓名 实验时间 实验地点电力工程基础实验室 实验报告成绩:评阅教师签字: 年月日电力工程学院二O一O年制

说明 1. 实验报告为实验的重要考核依据之一,每个实验必须定一份实验报告. 本实验报告原则上要求手写。 2.本实验报告各项内容的具体格式、字数可由指导教师根据实验具体情况提出具体要求。各项内容可另附页,为便于归档,附页尺寸不得大于本实验报告尺寸,并注意粘牢于附页粘贴处。 3. 实验报告封面中的“实验名称”应为实验教学大纲上所列的规范名称,“实验地点”应写出实验室的具体名称。请确认无误后再填写。 4. 实验报告的建议格式为: 一、实验目的和要求; 二、主要实验仪器和设备; 三、本次实验内容 (一)实验项目名称(按本次实验各项目填写) 1、原理或接线图 2、实验步骤及注意事项 3、实验预习过程中所遇到问题 …… 四、实验记录及数据处理(主要内容包括实验具体实施步骤、 实验原始数据、计算过程与结果、数据曲线、图表等。具体 格式按指导教师要求) 五、实验结论(主要内容包括本实验小结、实验体会或疑 问等。具体格式按指导教师要求) 5. 实验成绩由实验预习、实验表现、实验报告三部分组成。其中前两项各占总成绩的30%。实验报告成绩依据报告的科学性、全面性、规范性及书写态度综合考核。实验报告采用百分制,占实验总成绩的40%,教师请阅本报告后需签字并给出实验报告百分制成绩。 6. 实验报告需按要求时间以班级为单位交给指导教师,最长时间不得超过两周,实验报告如有明显抄袭者或不交者,实验总评成绩按 0 分记。

实验六指针的应用64

一、在以下程序中,主函数main调用了3个函数swap1、swap2和swap3,还定义了变量a 和b,程序设计的目的是要求通过函数调用,交换main中变量a和b的值。请分析在swap1、swap2和swap3这3个函数中,哪个函数可以实现这样的功能。 分别使用变量和指针作为函数参数的示例程序 # include void main () { int a = 1, b = 2; int *pa = &a, *pb = &b; void swap1(int x, int y), swap2( int *px, int *py ), swap3 (int *px, int *py); swap1 (a, b); /* 使用变量a,b调用函数swap1() */ printf ("After calling swap1: a=%d b=%d\n", a, b); a = 1; b = 2; swap2(pa, pb); /* 使用指针pa,pb调用函数swap2()*/ printf ("After calling swap2: a=%d b=%d\n", a, b); a = 1; b = 2; swap3(pa, pb); /* 使用指针pa,pb调用swap3() */ printf ("After calling swap3: a=%d b=%d\n", a, b); } void swap1 (int x, int y) { int t; t= x; x = y; y = t; } void swap2 (int *px, int *py) { int t; t = *px; *px = *py; *py = t; }

实验八指针

上机实验八指针 一.目的要求 1.掌握指针的基本概念。 2.掌握指针变量的定义和初始化。 二.实验内容 【实验题1】程序填空,交换指针p1,p2所指向的变量。 # include void main ( ) { int a=1,b=2, *p1, *p2, *pt; p1=&a; p2=&b; printf(“p1=%d, p2=%d \n”, p1,p2); //交换指针变量p1,p2所指向的变量 pt= p1; p1=p2 ; p2=pt; //注意:这三个指针变量前均无间接引用符* printf(“p1=%d, p2=%d \n”, p1,p2); } 运行结果:(注意:输出的是p1、p2所指变量的地址,即变量a或b的地址) 【实验题2】程序填空,交换指针p1,p2所指变量的值。 # include void main ( ) { int a=1,b=2, *p1, *p2, temp; p1=&a; p2=&b; printf(“*p1=%d, *p2=%d \n”, *p1,*p2); //交换p1,p2所指向的变量的值 temp= *p1 ; *p1= *p2 ; *p2= temp ; //注意:temp是普通变量,而指针p1,p2前均使用间接引用符* printf(“*p1=%d, *p2=%d \n”, *p1,*p2); } 运行结果:(注意:指针前加*, 代表指针所指变量) 【实验题3】程序填空:输入三个整型变量i,j,k的值。请设置三个指针变量p1,p2,p3,分别指向i,j,k。然后通过p1,p2,p3使i,j,k三个变量的值依次交换,即原来i的值赋给j, 原来j的值赋给k, 原来k的值赋给i。输出交换后i,j,k的值。

C语言实验报告之指针、结构体等综合程序设计

一、实验的目的、要求及内容 1、通过实验掌握指针的概念,学会定义和使用指针变量。 2、能正确使用数组的指针和指向数组的指针变量。 3、能正确使用字符串指针和指向字符串的指针变量。 4、掌握结构体类型变量的定义和使用。 二、算法设计思想及内容 本实验主要完成指针和结构体的应用训练,总共要求完成三个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。具体要求完成的问题如下: 1、采用指针方式编写程序输入10个整数,将其中最小的数与第一个数对换,把最 大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3) 输出处理后的10个数。 2、采用指针方式在主函数中输入字符串,在函数中求出字符串的长度,然后输出求 出的长度。 3、有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个 学生的数据,要求输出3门课程的总平均成绩,以及最高分数的学生的数据(包 括学号、姓名、3门课的成绩、平均分)。 三、所使用的软硬件平台 软件平台:Microsoft Windows XP专业版SP3,Microsoft Visual C++ 6.0。 硬件平台:联想系列,Intel(R)Core(TM)i3,CPU 3.20Ghz,2.99GB内存,550GB硬盘。 四、源程序代码 1.#include int main() {int a[10]; void shuru(int a[10]); void chuli(int a[10]); void shuchu(int a[10]); printf("请输入10个数:"); shuru(a); chuli(a); printf("输出处理后的10个数为:"); shuchu(a); printf("\n"); return 0; }

实验六指针

实验六指针 1.实验目的 (1)掌握指针变量的定义与引用。 (2)熟练使用数组指针、字符串指针编写应用程序。 (3)掌握C语言中指针数组的使用方法。 2.实验内容 1)验证性实验 (1)教材中188页阅读程序题1、2、3、4、5、8、9,写出程序的运行结果(写在书上),并理解程序的功能 (2) 阅读并运行下面程序,理解指向一维数组元素的指针。 #include void main() { int a[]={1,2,3}; int *p; p=a; /* 将数组a首地址送给p */ printf ("%d, %d, %d, %d\n",a[2],p[2],* (p+2),*(a+2)); printf ("%d, %d, %d, %d\n",a,a+2,p,p+2); } 2)设计性实验 (1)下面的程序是用来从键盘输入十个整数,然后求出其中的最小值。填写空缺部分。 #include void find(int *b,int *x,int n) { int i; *x=b[0]; for(i=1;i #include void main() { int i=0,j=0,k=0,m=0,n=0; char s[100],*p; printf("请输入一行字符:\n"); gets(s); for(p=s; ;p++) { if(*p>='A'&&*p<='Z') i+=1; else if( ) j+=1; /*统计小写字母的个数*/ else if(*p==' ') k+=1;

相关文档
相关文档 最新文档