函数和指针程序设计(二)

原创 2012年03月22日 13:18:21

实验七  函数和指针程序设计(二)

一.实验目的

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++程序设计学习笔记二:C语言的函数中,如何使用指针交换两个数的值,深入理解指针

使用外部函数交换两个变量的值,一个再简单不过的事情,但是在C/C++中,正确实现该功能反应了你对指针和引用等重要知识的掌握程度。本文列举了几种常见的写法,其中前三种是错误的,后两种是正确的。第四种使用...

C/C++程序设计——指针与函数

在一个函数内部用指针访问代替对象直接访问、代替数组和字符串访问,实际意义并不大。指针最重要的应用是作为函数参数,它使得被调函数除了返回值之外能够将更多的运算结果返回到主调函数中,即指针是函数参数传递的...

C程序设计笔记6-8章 数组/函数/指针

[ TOP ]数组定义 int a[3]={1,2,3}二维数组内存中二维数组的排放是线性的 int a[2][3]={{1,3,4},{2,4,6}}字符数组字符串即字符数组。 对于定义了长度但...

指针程序设计(二)

实验八  指针程序设计(二) 一.实验目的 1. 掌握指针的基本概念与操作方法; 2. 掌握字符指针、指针函数访问方式的程序设计。 二.实验环境 1. 硬件:PII以上计算机; 2. 软件...

c程序设计语言阅读笔记(二)字符指针和字符数组

话不多说,直接见代码:int main() { char p[] = "abcdef"; p[0] = 'c'; for (int i = 0; p[i]!='\0'; i++...

C程序设计语言- 指针与数组-4.1----指针与地址、指针与函数参数、指针与数组、地址算术运算

前言:继续C系列。 1.指针与地址

C程序设计语言- 指针与数组-4.2----字符指针与函数、指针数组以及指向指针的指针、指针数组的初始化

前言:快过年了,好想回家! 1.字符指针与函数 2.指针数组以及指向指针的指针(也就是二级指针)     2.1  指针数组与数组指针的区别 来自于爱思考的人: 数组指针(也称行指针)...

windows程序设计二 播放声音的函数

这次我们来编写一个简易的声音播放程序,首先来看一个例子:#include #pragma comment(lib, "winmm.lib") int WINAPI WinMain(_In_ HINST...

谭浩强C++程序设计_指针习题11

【1.题目】  11. 在主函数中输入10个等长的字符串。 用另一函数对它们排序。 然后在主函数 出这 10 个已排好序的字符串。 12. 用指针数组处理上一题目, 字符串不等长。  【2....

网易云课堂程序设计入门--C语言第七周:指针与字符串学习笔记

第七周:指针与字符串学习笔记 网易云课堂 程序设计入门--C语言
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)