函数和指针程序设计(二)
来源:互联网 发布:链表java 编辑:程序博客网 时间:2024/06/04 18:58
实验七 函数和指针程序设计(二)
一.实验目的
1. 掌握函数的操作方法;
2. 掌握指针、指针数组访问方式的程序设计。
二.实验环境
1. 硬件:PII以上计算机;
2. 软件:Windows、Visual C++ 6.0;
3. 其它:一张软盘或者U盘等可移动的存储设备。
三.实验内容
练习1.用指针变量的处理方法编写一个程序,功能为读入一组(10个)数据后,逆向输出。
程序要求:
运行结果示例:
练习2.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。
程序要求:程序中对数组的处理全部使用指针方式。
运行结果示例:
练习3.用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好序的数组(共10个数),再输入一个数,将此数按次序规律将它插入到数组中后输出结果。
函数要求:
实参为指针变量,形参为数组名,且形式为:void insert(int x[ ],int m);
其中:形参m为要插入的数据;函数无返回值。
运行结果示例:
练习4.用指针变量的处理方法编写一个函数,功能为把读入的一维数组(10个数据)中的所有奇数放在另一个数组中,并输出新数组的内容。
函数要求:
实参为指针变量;形参为指针变量,且形式为:int select(int *p, int*q);
其中:指针p用来接收原数组(的地址),指针q用来接收新数组(的地址);函数返回新数组元素的个数。
提示:两个数组全部在主函数中定义。
运行结果示例:
练习5.用指针变量的处理方法编写一个程序,功能为将一维数组s(数组元素的个数和数值均由用户即时输入的值决定)中的数据进行逆置,并输出结果。
程序要求:使用两个指针,指针p从数组首部向后移动,指针q从数组尾部与之同步向前移动。
运行结果示例:
练习6.编写一个程序,其中包含一个子函数,功能为删除字符串中指定的某个字符,并显示删除后的字符串。
子函数要求:
形式为:voiddelete_string(char str[],char ch);
运行结果示例:
指定的程序测试数据:
练习一:
#include<iostream.h>
voidmain()
{
inta[10],*p;
for(p=a;p<(a+10);p++)cin>>*p;
for(;p>a;)cout<<*(--p)<<" ";
cout<<endl;
}
练习2:
#include<iostream.h>
#include<stdio.h>
voidmain()
{
int sow(int n);
int a[10],i,t;
int *p=a;
printf("原数组:");
for(i=0;i<10;i++)
cin>>*p++;
printf("调整后:");
p=a;
for(i=0;i<10;i++)
if(i%2==0)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(p=a;p<(a+10);p++)
cout<<*p<<"";
cout<<endl;
}
练习3:
#include<iostream.h>
#include<stdio.h>
voidmain()
{
void insert(int x[ ], int m);
int a[11],*p=a,i,m;
cout<<"输入10个数组:"<<endl;
for(i=0;i<10;i++)
cin>>*p++;
cout<<"要插入的数值:";
cin>>m;
p=a;
insert(a,m);
cout<<"插入数据后的结果:";
for(i=0;i<11;i++,p++)
cout<<*p<<"";
cout<<endl;
}
voidinsert(int x[ ], int m)
{
int i,j;
for(i=0;i<10;i++)
if(m<x[i])
{
for(j=9;j>=i;j--)
x[j+1]=x[j];
x[j+1]=m;
i=10;
}
return;
}
练习4:
#include<iostream.h>
inta[10],b[10];
voidmain()
{
int select(int *p, int *q);
int i,*p=a,*q=b,c;
cout<<"输入10个数组元数:"<<endl;
for(p=a,i=0;i<10;i++)
cin>>*p++;
cout<<"挑选后的新数组:";
p=a;
c=select(a,b);
for(q=b;q<(b+c);q++)
cout<<*q<<"";
cout<<endl;
}
intselect(int *p, int *q)
{
int i,w=0;
for(i=0;i<10;i++)
if(a[i]%2!=0)
{*q=a[i];q++;w++;}
return(w);
}
练习5:
#include<iostream.h>
voidmain()
{
void ivn(int *x,int n);
int a[20],i,m;
cout<<"输入数组元数的个数m:"<<endl;
cin>>m;
cout<<"输入数组的"<<m<<"个元数值:"<<endl;
for(i=0;i<m;i++)cin>>a[i];
cout<<endl;
ivn(a,m);
cout<<"数组逆值后的结果:";
for(i=0;i<m;i++)
cout<<a[i]<<"";
cout<<endl;
}
voidivn(int *x,int n)
{
int *p,temp,*q=(x+n-1),m=(n-1)/2;
for(p=x;p<=(x+m);p++,q--)
{
temp=*p;
*p=*q;
*q=temp;
}
return;
}
练习6
法一:
#include<stdio.h>
#include<string.h>
#include<iostream.h>
voidmain()
{
void delete_string(char str[],char ch);
char a[20],c;
printf("input orignalstring:");
gets(a);
cout<<endl;
printf("input char <todelete>:");
c=getchar();
cout<<"the string afterdelete:";
cout<<endl;
delete_string(a,c);
puts(a);
cout<<endl;
}
voiddelete_string(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
法二:
#include"iostream.h"
#include<string.h>
void main()
{
char line[80];
char ch;
int i,j;
int len;
cout<<"Input originalstring:";
cin.getline(line,80);
cout<<"Input char <todelete>:";
cin>>ch;
i=0;
while(line[i]!='\0')
{while(line[i]!='\0'&&line[i]!=ch)i++;
len=strlen(line);
for(j=i;j<len-1;j++)
line[j]=line[j+1];
line[j]='\0';}
cout<<"The string afterdelete:"<<line<<endl;
}
- 函数和指针程序设计(二)
- 指针程序设计(二)
- 关于函数(二)数组指针和指针数组
- C++指针探讨 (二)函数指针
- C++函数指针(二)
- (二)数组、指针、函数
- javascript高级程序设计学习(二)----函数
- Transact-SQL 程序设计(二) --------自定义函数
- 函数指针和指针函数(返回指针的函数)
- 指向函数的指针(函数指针)和指针函数
- C程序设计语言--指针与数组(二) 指针数组 数组指针 函数指针 指针函数
- 【程序设计】typedef与函数指针
- C++编程入门系列之二十(C++程序设计必知:数据和函数)
- C和指针(二)
- 《c和指针》(二)
- 《c和指针》(二)
- 数组和指针(二)
- 了解指针(5)-- 指针和函数
- Android高手应该精通哪些内容?
- web.xml中的字符过滤器的设置
- windows7安装VS2008、SQL2008
- 面向对象的设计原则
- mysql
- 函数和指针程序设计(二)
- 分享一下我是如何用Proteus做微机原理实验的
- IIS自动停止,iis自动关闭。应用程序池假死、自动重启以及iis权限等解决办法
- 海盗分金
- 分页
- 生成id
- Java之IO流操作
- C++ 学习笔记 <1> C++ 语法基础知识
- Object-C难以理解的一些概念