实验(7)-指针
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C 语言程序设
计
实验教学
( 7)
【实验目的】 指针是 C 语言中非常重要的一章内容。通过实验让学生掌握 各类指针的定义与引用、例如:指向一般变量的指针、指向数组的指针应 用、字符指针的应用、指针数组的应用、指向指针的指针的应用。
【实验要求】 使用指针来完成变量的引用,编写程序理解指针的含义。 【实验课时】 8.0
【实验内容】
1. 通过指针变量求三个变量中的最大值和最小值。
#include <stdio.h>
#include <conio.h> void main() { int a,b,c,*pmax,*pmin; clrscr(); printf("Please input three numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); if(a>b) /* 使 pmax 指向 a,b 中大的数, pmin 指向 a,b 中小的数 */ {pmax= /**/
/**/ ;pmin= /**/ else
{pmax= /**/ /**/ ;pmin= /**/ if(c>*pmax) pmax= /**/ /**/; if(c<*pmin) pmin=/**/ /**/; printf("max=%d\nmin=%d\n", /**/ } 2. 输入 3 个整数,按照从小到大的次序输出。
#include <stdio.h>
#include <conio.h> void main( )
{ int a,b,c; int *pa=&a,*pb=&b,*pc=&c,*temp; clrscr();
printf("Please input three numbers:\n");
/**/;} /**/;}
/*使 pmax 指向变量 a,b,c 中最大的数
*/ /*使 pmin 指向变量 a,b,c 中最小的数
*/ /**/,/**/ /**/);
scanf("%d,%d,%d",&a,&b,&c);
if(*pa>*pb)
{/**/ if(*pa>*pc)
{/**/ if(*pb>*pc)
{/**/ /**/;} /*使 pb 指向 a,b,c 中次小的数 */ printf("%d,%d,%d\n",*pa,*pb,*pc);
} 运行结果如下:
Input three in tegers n 1, n2, n3: 34,21,25 /
Now, the order is: 21,25,34 3.将输入的 10 个整数存入一数组 a 中,然后输出数组元素中的最大值与 次最大值。
#include <stdio.h>
#include <conio.h> void main()
{int a[10],i,*p; int *pmax,*pnmax; clrscr();
/**/ /**/; /*使指针变量 p 指向数组 a*/
printf("Please input array a:\n");
for(i=0;i<10;i++)
{printf("input a[%d]:",i);
scanf("%d", /**/
/**/ ); } /*用指针变量 p 表示数组元素地址 */ if(p[0]>p[1])
pmax=p,pnmax=p+1;
else pmax=p+1,pnmax=p;
for(i=2;i<10;i++) if(*pmax<p[i])
{/**/ /**/;} /*将 pmax 指向数组最大值元素 */
else if(*pnmax<p[i]) /**/
/**/;
/*将 pnmax 指向数组次最大值元素 */
printf("max=%d,nmax=%d\n",*pmax,*pnmax);} /*输出最大值与次最大值 */ 4.将输入的10个整数存入一数组a 中,输入待查找的X ,输出x 在数组a 中的位置,若数组 a 中没有值为 x 的元素,则输出“ not found ”;
#include <stdio.h> #include <conio.h> void main() {int a[10],i,x,k, *p; clrscr();
/**/ /**/; /*使指针变量 p 指向数组 a*/
printf("Please input array a:\n"); for(i=0;i<10;i++)
{printf("input a[%d]:",i);
/**/;} /*使 pa 指向 a,b 中小的数 */ /**/;} /*使 pa 指向 a,b,c 中最小的数 */
scanf("%d", /**/ /**/);} /*用指针变量p 表示数组元素地址*/
/*以下使用顺序查找*/ printf("input the data to be located:");
scanf("%d",&x); for(i=0;i<10;i++)
if(x==/**/
/**/) break; /*用指针变量p 引用数组元素*/
if(i==10)
printf("%d is not found.\n",x); else
printf("%d in a[%d].\n",x, /**/ /**/);} /*输出找到的数组元素位置*/ 5.将输入的10 个整数存入一数组 a 中,按从小到大的次序输出。
#include <stdio.h>
#include <conio.h>
void main()
{int a[10],i,j,k,temp, *p; clrscr(); p=a; /*使指针变量p 指向数组a*/ printf("Please input array a:\n"); for(i=0;i<10;i++)
{printf("input a[%d]:",i);