当前位置:文档之家› 实验十指针应用一(da)

实验十指针应用一(da)

实验十指针应用一(da)
实验十指针应用一(da)

实验十指针应用(一)

一?实验目的

1.重点掌握指针变量的定义和赋值;

2.掌握指针变量的引用;

3.初步掌握指向数组的指针的定义和使用;

4.掌握数组与指针的关系并能够利用指针解决数组的相关问题。

5.掌握字符串与指针的关系并能够利用指针处理字符串的问题。二?实验学时数

3学时

三?实验步骤

(一)阅读程序

1.main()

{ int *p,a=15,b=5;

p=&a;

a=*p+b;

printf(“a=%d , %d \n”,a , *p);

2.main()

{ int i ,k;

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

{ k= sub(&i);

printf(“k= %d\n”,k);

}

}

int sub(int *p)

{static int t=0;

t=*p +t ;

return t;}

3. main()

{ int a[ ]={1,2,3,4,5,6};

int *p ,i ;

p=a;

*(p+4)+=3;

printf(“n1=%d ,n2=%d,n3=%d \n”,*p , *(p+3),

*(p+4));

{ int a[ ]={2,4,6,8,10};

int *p=a;

printf(“%d\n”,(*p++));

printf(“%d\n”,(* ++p));

printf(“%d\n”,(* ++p)++);

5.以下程序的输出结果是:

#include

#include

main()

{ char b1[8]="abcdef",b2[8],*pb=b1+4;

while (--pb>=b1) strcpy(b2,pb);

printf("%d\n",strlen(b2));

}

要求:依据题目要求,分析已给出的语句,填写空白?但是不要增行或删行,改动程序的结构?

1.以下程序通过指针实现求a数组中各元素的和,请在____________填写正确内容。

main()

{ int a[6]={2,4,6,8,10,12};

int s, i,*p ;

s=0;

p=a;

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

____________________

printf(“s=%d\n”,s);

}

#include

main()

{ int a[6]={2,4,6,8,10,12};

int s, i,*p ;

s=0;

p=a;

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

s+=*p++;

printf("s=%d\n",s);

}

2.下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。

#include

main()

{ char str[61],*sptr;

int i;

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

{ str[i]=getchar();

if(str[i]=='\n') break;

}

str[i]='\0';

sptr=str;

while(*sptr)

putchar(____________);

}

#include

main()

{ char str[61],*sptr;

int i;

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

{ str[i]=getchar();

if(str[i]=='\n') break;

}

str[i]='\0';

sptr=str;

while(*sptr)

putchar(*sptr++);

}

3.编写一个程序,实现将任意输入的两个字符串,连接成一个字符串,在子函数中实现连接,形参用字符指针变量,在____________填写正确内容。

#include

void mystrcat(char *pa,char *pb)

{ for(;*pa!='\0';pa++) ;

for(;*pb!='\0';______________)

______________;

*pa='\0';

}

main()

{ char a[90],b[30];

gets(a);

gets(b);

___________________;

printf("\nLink string:%s\n",a);

}

#include

void mystrcat(char *pa,char *pb)

{

for(;*pa!='\0';pa++) ;

for(;*pb!='\0';pb++)

*pa++=*pb;

*pa='\0';

}

main()

{ char a[90],b[30];

gets(a);

gets(b);

mystrcat(a,b);

printf("\nLink string:%s\n",a);

}

(三)调试程序

要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。

1.行号 main()

1 { int a , b ;

2 int *p ,*q ;

3 printf(“Input a ,b”);

4 scanf(“%d,%d”, p ,q);

5 printf(“%d,%d\n”,a ,b);

6 printf(“%d,%d\n”,*p ,*q);

#include

main()

{ int a , b ;

int *p=&a ,*q=&b;

printf("Input a ,b");

scanf("%d,%d", p ,q);

printf("%d,%d\n",a ,b);

printf("%d,%d\n",*p ,*q);

}

2.以下程序实现求数组中的元素的和。

行号main()

1 { int a[10]={1,2,3,4,5,6,7,8,9,0};

2 int sum ,*p ;

3 sum=0;

4 p=&a;

5 while( p

6 s + = *p;

7 printf(“sum=%d\n”,sum);}

#include

main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0};

int sum ,*p ;

sum=0;

p=a;

while( p

sum+= *p++;

printf("sum=%d\n",sum);

}

3.以下程序的功能是:输入三个字符串,按由小到大的顺序输出;

行号#include

1 main()

2 {

3 char str1[20],str2[20],str3[20];

4 char swap(char *p1,char *p2);

5 printf("\nPlease enter three string:\n");

6 gets(str1); gets(str2);gets(str3);

7 if (strcmp(str1,str2)>0) swap(str1,str2);

8 if (strcmp(str1,str3)>0) swap(str1,str3);

9 if (strcmp(str2,str3)>0) swap(str2,str3);

10 printf("\n");

11 printf("%s\n%s\n%s\n",str1,str2,str3); }

12 char swap(char *p1,char *p2)

13 { char *p;

14 p=p1;p1=p2;p2=p;

}

main()

{

char str1[20],str2[20],str3[20];

char swap(char *p1,char *p2);

printf("\nPlease enter three string:\n");

gets(str1); gets(str2);gets(str3);

if (strcmp(str1,str2)>0) swap(str1,str2);

if (strcmp(str1,str3)>0) swap(str1,str3);

if (strcmp(str2,str3)>0) swap(str2,str3);

printf("\n");

printf("%s\n%s\n%s\n",str1,str2,str3); }

char swap(char *p1,char *p2)

{ char p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

(四)编写程序

将一个数组中的15个值已经按升序排列好,输入一个数,编程查找是否有该数,有显示其所在的位置,没有,显示“No Found”,通过指针实现。

#include

main()

{int a[15]={1,2,5,7,8,12,14,15,17,20,21,25,34,37,40};

int *p=a,i,x;

scanf("%d",&x);

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

if(x==*p++)

{printf("%d在下标为%d的位置",x,i);break;}

if(i>=15)

printf("经查找无此数\n");

}

实验8 指针

实验8 指针 一、实验目的 1. 熟练掌握指针的定义、赋值的方法 2. 掌握间接引用运算符的使用方法 3. 掌握通过指针引用数组元素的方法 4. 掌握使用指针处理字串的方法 二、实验内容 实训1 循环输入学生某门课的成绩,将成绩存储到数组中,统计最高分和获得最高分的学生人数,最后输出统计信息。 1)在VS2013中新建项目,在项目中新建C++源文件,输入下面程序。 #include// 包含输入输出接口文件 using namespace std; // 引用标准命名空间 int main() // 主函数 { const int n = 5; // 使用常变量定义学生人数 int score[n]; // 定义成绩数组,有n个整型元素 int maxScore = 0; // 最高分,并初始化为 int maxStudent = 0; // 得到最高分的学生人数 int i; // 循环变量 int *p = 0; p = score; // p指向score[0] for (i = 0; i < n; i++) // 计数循环 { // 开始循环 cout << "请输入第" << i << "位学生的成绩:"; cin >> p[i]; // 输入第i位学生的成绩,并存储到score[i] if (maxScore < p[i]) // 如果第i位学生的成绩高于原最高分 { maxScore = p[i]; // 将最高分修改为第i位学生的成绩} } // 结束循环 cout << "本班最高分为" << maxScore << endl; cout << "得到最高分的学生序号为:" << endl; for (i = 0; i < n; i++) // 计数循环 { // 循环开始 if (*(p + i) == maxScore) // 如果第i位学生的成绩等于最高分 { maxStudent++; // 得最高分的学生人数增1 cout << i << endl; // 输出该生序号

【实验指导书】实验7:指针 (1)

(2014~2015学年-第1学期) 1. 理解指针、地址和数组间的关系。 2. 掌握通过指针操作数组元素的方法; 3. 掌握数组名作为函数参数的编程方式。 4. 掌握通过指针操作字符串的方法。 5. 了解掌握使用断点调试程序的方法。 二、实验环境: 操作系统:Window 8 编译环境:CodeBlock 13.02 三、实验要求及内容(根据实验要求,将整个实验过程需要的数据和截屏记录于此,并整理成实验步骤。): 1.设计一个程序计算输入的两个数的和与差,要求自定义一个函数sum_diff(float op1,float op2,float *psum,float *pdiff),其中op1和op2是输入的两个数,*psum和*pdiff是计算得出的和与差。 解: (1)流程图如图1所示: 图1 程序7-1的流程图

图2 实验7-1实验源代码 (3)运行结果(测试用例) 实验7-1运行结果如图3所示 图3 实验7-1运行结果 2. 输入n 个正整数,使用选择法将它们从小到大排序后输出。要求:利用所学指针的内容实现。 提示:在指针这一章所学的冒泡排序算法基础上改写。 解: (1)流程图如图1所示: 图1 程序7-2的流程图

图2 实验7-2实验源代码(3)运行结果(测试用例)实验7-2运行结果如图3所示 图3 实验7-2运行结果

3. 输入10个整数存入数组a ,再输入一个整数x ,在数组a 中查找x ,若找到则输出相应的下标,否则显示“Not found ”。要求定义和调用函数seach(int list[],int n ,int x),在数组list 中查找元素x ,若找到则返回相应的下标,否则返回-1,参数n 代表数组list 中元素的数量。试编写相应程序。 解:(1)流程图如图1 7-3的流程图 (2)源代码 源代码如图2所示

实验10 指针作为函数的参数

实验10 指针作为函数的参数 一、实验目的 1、学会使用指针变量作为函数的参数。 2、学会使用数组作为函数的参数。 3、正确理解和掌握指针与数组的关系。 二、实验知识点 1、指针变量的定义。注意:指针变量和一般简单变量的区别。 2、简单变量作为函数的参数是一种值传递方式。 3、指针作为函数参数是一种地址传递方式。 4、数组作为函数的参数也是一种地址传递方式。 三、实验内容和步骤 1、分析下面程序的运行结果,并调试程序。 //指针作为函数的参数 #include int fun(char *s); void main() { cout<

# include #include fun(char *s); //函数fun声明 void main() {char a[]=”abcdefgh”; fun(a); cout< #include void f(int b[]) //函数f的定义 {int i=0;

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

《指针程序设计》实验解答 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]);

实验7-指针

《C语言程序设计》实验报告实验序号:7 实验项目:指针 一、实验目的及要求 1、通过实验掌握指针的定义和使用指针变量; 2、掌握使用指针对数组和字符串进行操作; 3、掌握函数中指针类型参数的使用; 4、要求采用指针方法完成。 二、实验设备(环境)及要求 使用Turbo C 或Visual C++ 6.0;windows系列操作系统的环境。 三、实验内容与步骤 1.输入运行下面这个程序,观察并分析结果: #include "stdio.h" void main() { int a[]={2,3,4,5,6}; int *p1; char *p2="computer\n"; p1=a; printf("%d\n",p1+2); printf("%d\n",*(p1+2)); p1=a+2; printf("%d\n",p1+2); printf("%d\n",*(p1+2)); printf(p2+2); printf("%s",p2+2); } 运行结果截图:

2.以下程序调用invert 函数按逆序重新放置a 数组中的值,a 数组中的值在main 函数中读入,请填空。 #include "stdio.h" void invert(int *s,int i,int j) { int t; if(i

实验10指针做函数参数编程训练

实验10指针做函数参数编程训练 实验目的: 1.掌握指针的定义及使用; 2.体会使用指针的作用; 3.掌握指针做函数参数的作用; 4.掌握指针做函数参数的基本步骤; 实验题目: 1.输入某年某月某日,计算并输出它是这一年的第几天。 /*函数功能:对给定的某年某月某日,计算它是这一年第几天 函数参数:整型变量year,month,day,分别代表年,月,日 函数返回值:这一年的第几天*/ int DayofYear(int year,int month,int day); 2.输入某一年的第几天,计算并输出它是这一年的第几月第几日。 /*函数功能:对给定的某一年的第几天,计算它是这一年的第几月第几日函数入口参数:整型变量year,存储年 整型变量yearDay,存储这一年的第几天 函数出口参数:整型指针pMonth,指向存储这一年第几月的整型变量 整型指针pDay,指向存储第几日的整型变量 函数返回值:无*/ void MonthDay(int year,int yearDay,int *pMonth,int *pDay); 3.输出如下菜单,用switch语句实现根据用户输入的选择执行相应的操作。 1.year/month/day->yearDay 2.yearDay->year/month/day 3.Exit Please enter your choice: 参考程序及注释: #include #include int DayofYear(int year, int month, int day); void MonthDay(int year, int yearDay, int *pMonth, int *pDay); void Menu(void); int dayTab[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; int main() { int year, month, day, yearDay; char c; Menu(); /* 调用Menu函数显示一个固定式菜单*/ c = getchar(); /* 输入选择*/ switch (c) /* 判断选择的是何种操作*/ { case '1': printf("Please enter year, month, day:"); scanf("%d,%d,%d", &year, &month, &day);

实验八实验报告_卓越14_彭佳伟

C语言程序设计实验报告 专业计算机科学与技术班级卓越工程师班 日期2014年12月17日成绩 第八次实验指针实验指导教师李开 学生姓名彭佳伟学号U201414716 实验组别同组人姓名 实验名称指针实验 一、实验目的 (1)熟练掌握指针的说明、赋值、使用。 (2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。 (3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。 (4)掌握指针函数与函数指针的用法。 (5)掌握带有参数的main函数的用法。 二、实验任务 1.源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个源程序进行调试修改,使之能够正确执行。 源程序1 #include int main(void) { float *p; scanf("%f", p); printf("%f\n", *p); return 0; } 2.源程序完善、修改、替换 (1)下面的源程序的功能是:通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。 #include #include int main(void) { char a[80], b[80], c[160], *result = c; int choice, i; do { printf("\t\t1 copy string.\n"); printf("\t\t2 connect string.\n");

printf("\t\t3 exit. \n"); printf("\t\tinput a number(1-3) please! \n"); scanf ("%d", &choice); }while(choice < 1|| choice > 5); switch(choice) { case 1: p = strcpy; break; case 2: p = strcat; break; case 3: goto dowm; } getchar(); printf("input the first string please! \n"); i = 0; printf("input the second string please! \n"); i = 0; result = (a, b); printf("the result is %s\n", result); dowm: ; return 0; } (2)请上机运行第(1)题程序,使之能按下面要求输出结果: 1 copy string. 2 connet string. 3 exit input a number(1-2) please! 2(输入) Input the first string please! the more you learn,(输入) input the second string please! the more you get.(输入) the result is the more you learn, the more you get. 3.跟踪调试源程序 请按下面的要求对所给的源程序进行操作,并回答问题和排除错误。 (1)单步执行源程序。进入strcpy时,watches窗口中s为何值?返回main时,watches 窗口中s为何值? (2)排除源程序中的错误,使程序输出结果为:there is a bote on the lake. 源程序3 #include char *strcpy(char *, char*); int main(void) {

上机实验十 指针与数组

上机实验十指针与数组 学号: 姓名: 一、目的要求: 1.了解或掌握指针与数组的关系,指针与数组有关的算术运算、比较运算。 2.了解或掌握运用指针处理数组。 二、实验内容: 第1题、分别用下标法和指针变量p访问数组a[5]={1,3,5,7,9},至少用三种方法输出数组各元素的值,每种方法输出的五个元素在一行上。 第2题、书上P211例10-4。并仔细体会P212“使用指针实现数组元素逆序存放”的指针移动思想。 第3题、编写程序,使用指针实现逆序打印一维整型数组所有元素的操作。 数组a: 1 3 7 2 9 6 5 8 2 0 4 8 2 0 4 第4题、书上P213冒泡排序。 第5题、编写一个函数s(a,n),其中a是一个指向整型的指针接受一维整型数组首地址,n 是数组长度,功能是通过指针求数组中元素的平均值,并编写主函数测试函数。 第6题、编写一个函数void sort(int *a, int n), 用选择法对数组a中的元素按降序排序。在main()函数中输入10个数,调用sort函数排序后,然后输出。

第7题、使用指针把从键盘输入的2个数按从大到小的顺序输出(不改变变量的值),请补充完整并上机调试。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 第8题、输入10个整数存入一维数组,然后逆置数组,最后输出。下面给出部分程序的内容,请将程序补充完整,然后上机调试。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 第9题、上机调试下面程序,看哪些程序实现了交换主函数中两个变量值的操作,哪些没有实现,并分析原因。 第10题、调试修改下面程序,函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下标值),最大数可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。例如: 若输入 2 8 5 7 8 4 5 3 2 8 则应输出:The max: 8 The positions: 1 4 9 请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

C++上机实验报告(指针)

C++上机实验报告 实验名称:指针 专业班级: 姓名: 学号: 实验日期:

目录 1.实验目的 2.实验内容 3.程序代码 4.调试结果 5.实验心得

1.实验目的 (1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能正确使用数组的指针和指向数组的指针变量; (3)能正确使用字符串的指针和指向字符串的指针变量; (4)能正确使用引用型变量。 2.实验内容 编程序并上机调试运行程序(要求用指针或引用处理)。 (1)输入3个整数,按由小到大的顺序输出。编译一个程序,用指针变量作为参数。 (2)在上题的基础上将程序改为:输入3个字符串,按由小到大的顺序输出。 (3)用引用指针变量作为形参,实现3个整数由小到大输出。(4)有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡是到3的人退出圈子,问最后留下的人原来排在第几号。(5)在主函数中输入10个字符串。用另一个函数最它们排序。然后在主函数输出这10个已排好的字符串。 要求用以下方法编程: Ⅰ.指向一维数组的指针座函数参数; Ⅱ.用string数组方法。

3.程序代码 (1) #include using namespace std; int main() {void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3; cout<<"input three integers n1,n2,n3:"; cin>>n1>>n2>>n3; p1=&n1; p2=&n2; p3=&n3; if(n1>n2) swap(p1,p2); if(n1>n3) swap(p1,p3); if(n2>n3) swap(p2,p3); cout<<"Now,the order is:"<

实验七 指针

实验七指针(1) 一、实验目的 1.掌握指针变量的定义与引用 2.掌握指针与变量、指针与数组的关系 3.掌握用数组指针作为函数参数的方法。 4.熟悉TC集成环境的调试指针程序的方法 二、实验内容 以下均用指针方法编程: 1. 调试下列程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。写出调试过程。 main() { int j,k,a[12],*p; for(j=0;j<12;j++) scanf("%d",p++); for(j=0;j<12;j++) { printf("%d",*p++); if(j%4 == 0) printf("\n"); } } 调试此程序时将a设置为一个"watch",数组a所有元素的值在一行显示出来。调试时注意指针变量指向哪个目标变量。 2. 在主函数中任意输入10个数存入一个数组,然后按照从小到大的顺序输出这10个数,要求数组中元素按照输入时的顺序不能改变位置。 三、实验要求 1.复习指针的定义与使用方法。 2.编写程序,运行程序并记录运行结果。 3.将源程序、目标文件、可执行文件和实验报告存在软盘上。 实验八指针(2) 一、实验目的 1.掌握C语言中函数指针的使用方法。 2.掌握C语言中指针数组的使用方法。 3.熟悉TC集成环境的调试指针程序的方法 二、实验内容 1.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴ 2个数的和, ⑵ 2个数交换值。 要求用函数指针调用这两个函数,结果在主函数中输出。 main() { int a,b,c,(*p)(); scanf("%d,%d",&a,&b);

实验十一指针应用二daan

实验十一指针应用(二) 一?实验目的 1.了解指针与函数的关系并能够初步利用指针处理函数问题。 2.了解指向数组的指针的概念及其使用方法。 3.了解指向指针的指针的概念及其使用方法。 二?实验学时数 1学时 三?实验步骤 (一)阅读程序 #include #include fun(char *s) {char a[7]; s=a; strcpy(a,"look"); puts(s); } main() {char *p; fun(p); 2.#include main() {int a[5]={2,4,6,8,10},*p,**pp; p=a; pp=&p; printf("%d",*p++); printf("%3d\n",**pp); }

3. #include main() {char *str[]={"Pascal","C language","Cobol","Dbase"}; char **p; int k; p=str; for(k=0;k<4;k++) printf("%s\n",*(p++)); 4. #include main() {int a[2][3]={2,4,6,8,10,12},(*p)[3],i,j; p=a; scanf("%d,%d",&i,&j); printf("a[%d][%d]=%d",i,j,*(*(p+i)+j)); } (二)调试程序 要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。 1.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:⑴ 2个数的和,⑵ 2个数交换值。要求用函数指针调用这两个函数,结果在主函数中输出。 行号sum(int a,int b,int c) 1{ c=a+b; 2 return c;

实验10 指针2 (修复的)

《C语言程序设计》 实验报告 实验时间: 6月7号 实验班级:计算机双学位1501 实验报告总份(片)数: 1 份(片) 实验教师:饶东宁 计算机学院工一实验室 广东工业大学 《C语言程序设计》 实验报告 实验题目: 实验10 实验时间: 6月7号 实验班级:双学位1501

实验人学号: 3213010359 实验人姓名:梁雪卿 实验教师:饶东宁 计算机学院工一实验室 广东工业大学 实验10 指针2 1 实验目得 (1)进一步掌握指针得应用 (2)能正确使用数组得指针与指向数组得指针变量 (3)能正确使用字符串得指针与指向字符串得指针变量 (4)了解指向指针得指针得用法 2 实验内容 根据题目要求,编写程序(要求用指针处理),运行程序,分析结果,并进行必要得讨论分析。 (1)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3得人退出圈子,问最后留下得就是原来得第几号得人。 算法说明:

#include int main { int i,k,m,n,num[50],*p; scanf("n=%d",&n); p=num; for(i=0;i

{ *(p+i)=0; k=0; m++; } i++; if(i==n) i=0; } while(*p==0) p++; printf("The last one is NO、%d\n",*p); return 0; } 运行结果: 分析与思考: 以1到n为序给每个人编号,i为每次循环时计数变量,k为按

实验报告8

实验八:指针及其应用 班级: 学生姓名:李林 学号:20141060101 一、实验目的 1、掌握指针的概念 2、掌握指针变量的定义和基本使用方法 3、掌握使用指针操作数组元素的方法 4、掌握使用指针操作字符串的方法 二、知识要点 1、变量的直接访问和间接访问的概念 2、指针和指针变量的概念 3、简单变量的指针及指向简单变量的指针变量的定义、赋值及使用 4、数组的指针及指向数组的指针变量的定义、赋值及使用 5、字符串的指针及指向字符串的指针变量的定义、赋值及使用 三、实验预习(要求做实验前完成) 1、写出一个C语句,使得指针变量u指向变量x: 2、写出一个C语句,输出“指针变量p指向的整型变量”的值: 3、把“指针变量u所指向的变量”的值变为40,其语句是: 4、定义三个变量,其中x1是整型变量;y1、y2是指向整数的指针变量: 5、若有语句:char t[20]= “abcdefgh”,*p;则使p指向字符串的第一个 字符的语句是: 四、实验内容(以下题目要求使用指针方法完成) 1、已知一个整数数组x[4],它的各元素值分别为3、11、8和22。使用指针表 示法编程序,求该数组各元素之积。#include #include int main() { int x[4]={3,11,8,22};

int *p=&x,ji=1,i; for(i=0;i<4;i++) { ji=ji*(*p); p++; } printf("%d\n",ji); return 0; } 2、编写程序,输入10个整数至一数组,将其中最小的数与第一个数对调,把 最大的数与最后一个数对调。(要求输出对调前后的数组)#include #include void ha(int *p,int n) { int i; for(i=0; i

实验11 指针(1)

实验11 指针(1) 一、实验目的: 1、通过查看变量地址,了解不同类型数据在内存存储情况;理解用指针获取内存数据的两个关键点:首地址、数据类型(决定占用的存储单元的个数、数据存储方式); 2、掌握指针变量的定义方法、=(赋值)、&(取地址)、*(取内容,间接访问); 3、能够用指针变量作函数参数,实现通过函数调用得到n个要改变的值: 4、掌握指针变量p的算术运算:p±n(n为整数)、p++(p--)、++p(--p),理解移动一个数据单位的真实含义; 5、能够用数组名或指针变量作函数形参,在函数中实现对数据的批量处理。 二、实验内容 1、(基础题)根据注释填写程序所缺代码,然后运行程序,并回答相关问题: #include int main() { char ch1='I',ch2='Q'; int n1=1, n2=6; double d1=1.25,d2=20.5; //定义两个指针变量pch_1、pch_2分别指向ch1、ch2 ___________(1)____________ //定义两个指针变量pn_1、pn_2分别指向n1、n2 ___________(2)____________ //定义两个指针变量pd_1、pd_2分别指向d1、d2 ___________(3)____________ //分别输出上述ch1、ch2、n1、n2、d1、d2六个变量的地址(即六个指针变量的值) ___ ________(4)__ _________ ___ ________(5)__ _________ ___ ________(6)__ _________ //用间接存取方式输出ch1、ch2、n1、n2、d1、d2六个变量的值 ___ ________(7)__ _________ ___ ________(8)__ _________ ___ ________(9)__ _________

《C语言程序设计》(江宝钏著)实验八答案

江宝钏实验八 3.一般编程题 1.用指针法统计10个数中正数、负数与零的个数,并分别求正数的总与,负数的总与。#include void main() { int a[10]; int i,*p,sum1,sum2,c1,c2,c3; printf("输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); c1=c2=c3=0;sum1=sum2=0; for(p=a;p<(a+10);p++) { if(*p<0){ sum1+=*p;c1++;} if(*p==0){ c2++;} if(*p>0) {sum2+=*p;c3++;} } printf("正数,负数的与:%d %d\n",sum2,sum1); printf("正数、零、负数的个数:%d %d %d \n",c3,c2,c1); }

4.较难编程题 1.输入一行字符,开始用一个指针指向这行字符的开头,并依次向后移,分别统计出其中英 文字母、空格、数字与其它字符的个数。 #include #include #define N 100 void main() { char *p; char str[N]; int c1,c2,c3,c4,i; printf("input a string:"); gets(str); i=strlen(str); c1=c2=c3=c4=0; for(p=str;p='a'&&*p<='z'||*p>='A'&&*p<='Z') c1++;

实验10 指针2 (修复的)

实验报告 实验时间:6月7号 实验班级:计算机双学位1501 实验报告总份(片)数: 1 份(片)实验教师:饶东宁 计算机学院工一实验室 广东工业大学

实验报告 实验题目:实验10 实验时间:6月7号 实验班级:双学位1501 实验人学号:3213010359 实验人姓名:梁雪卿 实验教师:饶东宁 计算机学院工一实验室 广东工业大学

实验10 指针2 1 实验目的 (1)进一步掌握指针的应用 (2)能正确使用数组的指针和指向数组的指针变量 (3)能正确使用字符串的指针和指向字符串的指针变量 (4)了解指向指针的指针的用法 2 实验内容 根据题目要求,编写程序(要求用指针处理),运行程序,分析结果,并进行必要的讨论分析。 (1)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的人。 算法说明:

程序清单: #include int main() { int i,k,m,n,num[50],*p; scanf("n=%d",&n); p=num; for(i=0;i

if(i==n) i=0; } while(*p==0) p++; printf("The last one is NO.%d\n",*p); return 0; } 运行结果: 分析与思考: 以1到n为序给每个人编号,i为每次循环时计数变量,k为按1,2,3报数时的计数变量,m为退出人数,当退出人数比n-1少时执行循环体,对推村恩编号为0,报数到尾i恢复为0,循环继续。 (2)将一个5*5的矩阵(二维数组)中最大元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。

实验08-1参考答案

实验八指针程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、理解指针、地址和数组间的关系。 2、掌握通过指针操作数组元素的方法。 3、掌握数组名作为函数参数的编程方式。 4、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:有n个整数,使各数顺序往后循环移动m个位置(m void mov(int *, int, int); int main() { int m, n, i, a[80], *p; printf("Input n, m:"); scanf("%d%d",&n,&m); for(p=a,i=0;i0;j--) x[j]=x[j-1]; /* 调试时设置断点 */ x[0]=k; } } ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。

实验8-1 指针

实验8-1 指针(一) 1 【实验目的】 (1)掌握指针的概念和定义和使用指针变量的方法 (2)能正确使用数组的指针和指向数组的指针变量 (3)能正确使用字符串的指针和指向字符串的指针变量 【实验要求】 (1)熟练掌握和使用一维数组的指针和指向一维数组的指针变量 (2)能正确使用字符串的指针和指向字符串的指针变量 【实验环境】 (1) Microsoft XP操作系统 (2) Microsoft VC++ 6.0 【实验内容】 1、两个数比较https://www.doczj.com/doc/ff6266156.html,/acmhome/problemdetail.do?&method=showdetail&id=1002 题目描述:求2个数中较大者。 输入:第一行为测试的数据组数N,接下来的N行分别是两个待比较的整数 输出:输出N行,每一行的值为每组数中较大的整数 样例输入 2 1 2

15 10 样例输出 2 15 2、三个数排序https://www.doczj.com/doc/ff6266156.html,/JudgeOnline/problem.php?id=1511 题目描述:输入三个整数,按由小到大的顺序输出。 输入:三个整数 输出:由小到大输出成一行,每个数字后面跟一个空格 样例输入:2 3 1 样例输出:1 2 3 3、字符串排序https://www.doczj.com/doc/ff6266156.html,/acmhome/problemdetail.do?&method=showdetail&id=1484 描述:输入3个字符串,按字典序从小到大进行排序。 输入:输入数据有一行,分别为3个字符串,用空格分隔。 输出:输出排序后的三个字符串,用空格分隔。 样例输入:abcd cdef bcde 样例输出:abcd bcde cdef 4、重置最值https://www.doczj.com/doc/ff6266156.html,/JudgeOnline/problem.php?id=1513 题目描述:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数;①输入10个数;②进行处理;③输出10个数。

实验的七指针程序设计

实验七指针程序设计 一、实验目的 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); } ⑶程序调试 ①运行程序,任意输入三个整数(之间以逗号分隔),察看并分析程 序运行结果。

实验报告一(指针)

实验报告一(指针) 指针实验一 指向变量得指针变量编程一.实验目得与要求 1、理解指针得概念。 2、掌握指针变量得定义与使用。 3、掌握指针变量作为函数参数得使用方法。 二二. 实验题目1、用指针变量编程,求数组中得最大元素与最小元素. #include "stdio、h”#define N 10 void main() { ;)n tni,2tp* tni,1tp* tni,][rra tni(nimxamdiov?int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; ;b&=2p ;a&=1p? ;)N,2p,1p,yarra(nimxam? printf("max=%d,min=%d\n",a,b); } void maxmin(int arr[],int *pt1,int *pt2,int n)

{ int i; * ;]0[rra=2tp*=1tp? for(i=1;i #define MAXLEN 20 int CountLetter(char *str, char ch) {

C语言程序设计 实验8.1 指针与数组

实验8.1 指针与数组 题目信息表 序号题目名称题目满分题目得分题目编号 1 循环移动(调试示例error08_1) 2 在数组中查找指定元素 3 使用函数的选择法排序 4 报数 1 循环移动(调试示例error08_1) #include int main(void) { int i, m, n,k,j; int a[80]; scanf("%d%d", &n, &m); for(i = 0; i < n; i++) scanf("%d", &a[i]); for(i=0;i0;j--) a[j]=a[j-1]; a[0]=k; } /*-----程序填空,不要改变与输入输出有关的语句。 输入两个正整数n 和m (1

printf("\n"); return 0; } 2 在数组中查找指定元素 #include int main(void) { int i, n, res, x; int repeat, ri; int a[10]; scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%d", &n); for(i = 0; i < n; i++) scanf("%d", &a[i]); scanf("%d", &x); res=-1; for(i=0;i

相关主题
文本预览
相关文档 最新文档