C语言实验七
一、实验目的
1.掌握指针变量的定义和引用。 2.掌握指针与变量的程序设计方法 3.掌握指针与数组的程序设计方法 4.掌握指针与字符串的程序设计方法 5.掌握指针与函数的程序设计方法 应用。
二、实验设备
pc、vc 二、实验内容
1.[目的]指针与函数
[题目内容] 使用指针作函数参数,编写用于交换两个参数值的函数。调用该函数用于对从键盘输入的两个整数进行交换。 [输入] x=100,y=200 [输出] x=200,y=100
#include
void exchange(int *a,int *b); int x,y;
printf(\ scanf(\
printf(\ y=%d\\n\ exchange(&x,&y);
printf(\ y=%d\\n\ return 0; }
void exchange(int *a,int *b) { int t; t=*a; *a=*b; *b=t; }
2.[目的]函数返回指针
[题目内容] 有函数:int *larger(int *a,int *b) {
if(*a>*b) return a; else
return b; }
和主函数:
#include
int *larger(int *a,int *b); int x=10,y=20; int *p;
p=larger(&x,&y); printf(\return 0 ; }
运行程序,给出运行结果,并说明此程序的功能。
函数功能为输出10与20中较大的一个。
3.[目的]指针综合应用 [题目内容] 假设已有函数: void swap(int *p1,int*p2) {
int temp;
temp=*p1;*p1=*p2;*p2=temp; }
编写程序,输入3个整数,调用swap函数,完成将3个整数按从小到大顺序输出的功能。 [输入] 3个数
[输出] 从小到大顺序输出 #include
void swap(int *p1,int*p2) {
int temp; temp=*p1; *p1=*p2; *p2=temp;
}
int main() {
int a,b,c;
int *p1,*p2,*p3;
printf(\请输入三个数:\\n\ scanf(\ p1=&a; p2=&b; p3=&c;
if(a
printf(\ return 0; }
4.[目的]指针综合应用
[题目内容]一个数组中的15个值已经按升序排列存放,输入一个数,编程查找是否有该数,有显示其所在的位置,没有,显示“No Found”,通过指针实现。 #include
int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int i=0,num=0,*ptr=a; scanf(\ for(i=0;i<15;i++) {
if(num==*ptr) {
printf(\你输入的在第%d个\\n\ break; }
ptr++; }
if(i==15)printf(\ return 0; }
5、完成程序
要求:依据题目要求,分析已给出的语句,填写空白?但是不要增行或删行,改动程序的结构?
1.以下程序通过指针实现求a数组中各元素的和,请在____________填写正确○
内容。
#include
{ int a[6]={2,4,6,8,10,12}; int s, i,*p ; s=0; p=a;
for (i=0;i<6;i++)
s=s+*(p++); //求各元素的和。 printf(“s=%d\\n”,s); return 0; }
2.下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输○
出该字符串。 #include
{ char str[61],*p; int i;
for (i=0;i<60;i++) { str[i]=getchar();
if(str[i]=='\\n') break; }
str[i]='\\0'; p=str; while(*p)
putchar(*p++);//输出p指向单元的内容,并使得p指针指向下一下单元。 return 0; }
3.编写一个程序,实现将任意输入的两个字符串,连接成一个字符串,在子函○
数中实现连接,形参用字符指针变量,在____________填写正确内容。
#include
void mystrcat(char *pa,char *pb) {
while(*pa!='\\0')pa++;//pa指向第一个字符串的尾部 while(*pb!='\\0') {*pa=*pb; pa++;
pb++; }//把pb指向单元的内容 //连接在pa之后,可用一句或多句实现 *pa='\\0'; }
int main()
{ char a[90],b[30]; gets(a); gets(b);
mystrcat(a,b); //调用函数,实现两个字符串的连接。 printf(\链接后的字符串是:%s\\n\ return 0; }