作业7

/*
//使用指针处理数组元素
//输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个子函数并在main函数中调用:①输入10个数;②进行处理;③输出10个数。
样例输入
2 3 6 8 9 0 1 -1 5 7
样例输出
-1 3 6 8 7 0 1 2 5 9
提示/说明
#include <iostream>
using namespace std;
void input(int *p, int n) //输入n个数据,从p所指向的空间依次存放
{
//请完成函数体
}
void output(int *p,int n) //从p所指向的空间开始,依次输出n个数据
{
//请完成函数体
}
void process(int *p,int n)
//找出从p所指数据开始的n个数据中的最小者和第一个数交换,找出最大者和最后一个数交换
{
//请完成函数体
}
int main()
{
int a[10];
//请完成函数体
return 0;
}


#include<iostream>
using namespace std;
int main()
{
void change(int *x);
int a[10], i, j;
for (i = 0; i<10; i++)cin>>a[i];
change(a);
for (i = 0; i<10; i++)cout<<a[i]<<" ";
}

void change(int *a)
{
int *min, *max, *p, t;
max = min = a;
for (p = a + 1; p<a + 10; p++)if (*p>*max)max = p;
t = a[9]; a[9] = *max; *max = t;// 最大值与第一个数交换
for (p = a + 1; p<a + 10; p++)if (*p<*min) min = p;
t = a[0];
a[0] = *min;
*min = t;// 最小值与第一个数交换
}
*/

 

 

 

/*
//答案
#include <iostream>
using namespace std;

void input(int *p, int n);
void output(int *p,int n);
void process(int *p, int n);

int main()
{
int a[10];
int *b=a;

input(b,10);
process(b,10);
output(b,10);

return 0;
}
//输入n个数据,从p所指向的空间依次存放
void input(int *p, int n)
{
int i;

//printf("Please input %d numbers: \n", n);
for (i=0; i<n; i++)
{
cin>>*(p+i);
}

}

//从p所指向的空间开始,依次输出n个数据
void output(int *p, int n)
{
int i;

//printf("The processed %d numbers:\n", n);
for (i=0; i<n; i++)
{
cout<<*(p+i)<<" ";
}
cout<<endl;

}

// 找出从p所指数据开始的n个数据中的最小者和第一个数交换,找出最大者和最后一个数交换
void process(int *p, int n)
{
int i, tmp;
int max=*p, maxID=0;
int min=*p, minID=0;

//找到最小数和最大数的下标
for (i=0; i<n; i++)
{
if (*(p+i)> max)
{
max = *(p+i);
maxID = i;
}
else if(*(p+i)< min)
{
min = *(p+i);
minID = i;
}
}

//将最小的数与第一个数交换
tmp = *p;
*p = *(p+minID);
*(p+minID) = tmp;

// 判断下标为0的元素是否为最大值,如果其为最大值,此时变为minID
if (maxID == 0)
{
maxID = minID;
}

//将最大的数与最后一个数交换
tmp = *(p+n-1);
*(p+n-1) = *(p+maxID);
*(p+maxID) = tmp;
}
*/

 

 

 

 

/*
//使用指针变量实现字符指定位置的拷贝
//有一个字符串(中间没有空格),包含n个字符。写一个函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。(不能使用字符串库函数。n最大值为127,1<=m<=n)
//输入两行,第一行为源字符串,第二行为一个整数,指定拷贝为位置,即m的值
//将源字符串从第m个字符*(下标为m-1),拷贝为到目标字符串中,再输出目标字符串
样例输入
HelloWorld
6
样例输出
World
#include <iostream>
#include <stdlib.h>
#include <cstring>
int main()
{
char s[100];
char a[100];
int n, len, i, j = 0;
// cout<<"请输入一个字符串:"<<endl;
gets_s(s); //gets_s
//cout<<"从第几个字符开始复制?";
cin>>n;
len = strlen(s);
for (i = n - 1; s[i] != '\0'; i++)a[j++] = s[i];
a[j] = '\0';
//cout<<"复制结果为:";
coout<< a;
return 0;
}
*/

 

/*另一种
使用指针变量实现字符指定位置的拷贝
#include <iostream>
using namespace std;
int main()
{
char str[127];
int n;
cin >> str;
cin >> n;
char* p = str;
p = p + n - 1;
cout << p;
return 0;

}
*/

 

 


/*
//答案
#include <iostream>
using namespace std;

void strcpy_from(char *dst, char *src, int from);

int main()
{

char dst[128] = {0};
char src[128];
int m;
cin>>src;
cin>>m;
strcpy_from(dst, src, m);
cout << dst ;
return 0;
}

// 指定位置的字符串拷贝(复制)函数,
// 从源字符串src的第from个字符开始,拷贝到目的字符串dst中
void strcpy_from(char *dst, char *src, int from)
{
src = src+(from-1); // 源字符串指针移动到待拷贝的位置(第from个字符位置)
while (*dst = *src) // 逐个字符进行拷贝
{
dst++;
src++;
}
}
*/

 

 

 

 

/*
//使用指针变量求字符串长度
//写一个函数,求一个字符串的长度
样例输入
abcd
样例输出
4
#include<iostream>
#include<stdlib.h>
using namespace std;
#define N 1024
int main()
{
int Strlen(char* str);
char str[N];
char* p = str;
for (int i = 0, ch = '\0'; ch != '\n'; ++i)
{
ch = getchar();
if (i >= N)continue;
if (ch == '\n' || i == N - 1)
{
p[i] = '\0';
continue;
}
p[i] = ch;
}
cout<<Strlen(p)<<endl;
system("pause");
return 0;
}

int Strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count += 1;
++str;
}
return count;
}
*/


/*另一种
#include<iostream>
using namespace std;
int main()
{
char str[127];
int n = 0;
cin >> str;
char* p = str;
for (; *p != '\0'; p++)
n++;
cout << n;
return 0;
}
*/

 

 

 

/*
//答案
#include <iostream>
using namespace std;

int my_strlen(char *str); // 计算字符串长度函数

int main()
{
char str1[128];
cin>>str1;
cout<<my_strlen(str1);
return 0;
}

// 计算字符串长度函数:计算字符串 str 的长度,
// 直到遇到结束字符'\0',但不包括该结束字符
int my_strlen(char *str)
{
int length = 0;
while (*str != '\0') // while (*str)
{
length++;
str++;
}

return length;
}

*/

posted @ 2023-03-21 22:43  BKYNEKO  阅读(25)  评论(1)    收藏  举报