number1:
输入10个整数,将其中最小的数与第一个数对换,最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。
#include<iostream>
using namespace std;
int min=0,max=0;
int m,p;
void Input(int arry[],int n)
{
for(int i=0;i<n;i++)
cin>>arry[i];
}
/*void Cmp(int arry[],int n)
{
int *max,*min,*p,*arry_end;
arry_end=arry+10;
max=min=arry;
for(p=arry+1;p<arry_end;p++)
{
if(*p>*max) max=p;
else if(*p<*min) min=p;
}
*p=arry[0];
arry[0]=*min;
*min=*p;
*p=arry[n-1];
arry[n-1]=*max;
*max=*p;
}*/
void Cmp(int arry[],int n)
{
int min=max=arry[0];
int m=p=0;
int t1,t2;
for(int i=1;i<n;i++)
{
if(arry[i]<min)
{
min=arry[i];
m=i;
}
else if(arry[i]>max)
{
max=arry[i];
p=i;
}
t1=arry[0];
arry[0]=arry[m];
arry[m]=t1;
t2=arry[n-1];
arry[n-1]=arry[p];
arry[p]=t2;
for(int j=0;j<10;j++)
cout<<arry[j]<<endl;
}
void Output(int arry[],int n)
{
// int *p=arry;
for(int j=0;j<n;j++)
cout<<arry[j]<<endl;
// for(;p<=arry+n-1;p++)
// cout<<*p<<endl;
}
int main()
{
int a[10];
Input(a,10);
Cmp(a,10);
Output(a,10);
// for(int j=0;j<10;j++)
// cout<<a[j]<<endl;
return 0;
}
第一个Cmp函数可以完成过程(2),而第二个Cmp函数会报错:(没明白问题出在哪里)
E:\program\test\test1.cpp(59) : error C2601: 'Output' : local function definitions are illegal
E:\program\test\test1.cpp(67) : error C2601: 'main' : local function definitions are illegal
E:\program\test\test1.cpp(79) : fatal error C1004: unexpected end of file found
注:1)当用数组名作参数时,如果形参数组中各元素的值发生变化,实参数组元素的值随之变化;
2)调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值;
number2
输入3个字符串,按由小到大的顺序输出。
number3
现在水平对字符的操作很混乱
number4
实现从字符串的第m位开始全部复制。
void copy(char str[],int m)
{
cout<<str<<endl;
// int i=0;
char *s,*s1;
char string[N];
s=str;
s1=string;
cout<<*s<<endl;
while(m-1)
{
s++;
m--;
}
while(*s!='\0')
{
*s1=*s;
s++;
s1++;
}
*s1='\0';
cout<<string<<endl;
}
在该函数中,首次进行复制采取的是指针s的内容复制给数组string,但最后显示的结果为所需结果之后还有若干字符。(没明白问题出在哪里,感觉这个问题与number1中的Cmp类似)