1、
#include <stdio.h>
void scan(int num[10],int i);
void deal(int num[10],int i);
void print(int num[10],int i);
/*
1.输人10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写3个函数:①输人10个数;②进行处理;③输出10 个数。
*/
int main()
{
int a[10]={0};
scan(a,10);
deal(a,10);
print(a,10);
return 0;
}
void scan(int num[10],int i)//输入
{
printf("请输入十个整数,用回车隔开:\n");
for(i=0;i<10;i++)
{
scanf("%d",&num[i]);
}
}
void deal(int num[10],int i)
{
// int *max,*min;
// *min=num[0];
// printf("%d\n",*min);
int a,b;
int j=0,z=num[0];
for(i=0;i<10;i++)
{
if(num[i]>j)
{
// *max=num[i];//找出最大值并记录下标
// printf("%d\n",*max);
a=i;
j=num[i];
}
if(num[i]<z)
{
// *min=num[i];//找出最小值并记录下标
b=i;
// z=*min;
z=num[i];
}
}
int temp;
int *p_a=&num[9];
int *p_b=&num[a];
temp=*p_a;
*p_a=*p_b;
*p_b=temp;
p_a=&num[0];
p_b=&num[b];
temp=*p_a;
*p_a=*p_b;
*p_b=temp;
// p=p_a;
// p_a=p_b;
// p_b=p;
//
// p_a=&num[0];
// p_b=&num[a];
//
// p=p_a;
// p_a=p_b;
// p_b=p;
// for(i=0;i<10;i++)
// {
// printf("%d ",num[i]);
// }
// num[b]=num[9];//调换
// num[9]=j;
//
// num[a]=num[1];
// num[0]=z;
//print(num,10);
}
void print(int num[10],int i)
{
for(i=0;i<10;i++)
{
printf("%d ",num[i]);
}
}
2、
#include <stdio.h>
void liu(int a);
/*
2.有n个人围成一-圈,顺序排号。从第1个人开始报数(从1到3报数),
凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
*/
int main()
{
int a;
printf("请输入人数(小于200):");
scanf("%d",&a);
liu(a);
return 0;
}
void liu(int a)
{
int i,j,n=a,m=0;
int b[200]={0};
int *p;
p=b;
for(i=0;i<a;i++)
{
b[i]=i+1;//给人排序 1~a-1
}
// for(i=0;i<a;i++)
// {
// printf("%d ",*(p+i));
if(*(p+i)!=0)
printf("留下来是原来的第%d位\n",*(p+i));
//
// }
i=0;
j=0;
// for(i=0;m<n-1; )
while(m<n-1)
{
if(*(p+i)!=0)//开始报数
j++;
if(j==3)//去除三的 重新开始报数
{
b[i]=0;
// n-=1;
j=0;
m++;
}
i++;
if(i==n)
{
i=0;
}
// printf("%d ",j);
}
for(i=0;i<a;i++)
{
// printf("%d ",*(p+i));
if(b[i]!=0)
printf("留下来是原来的第%d位\n",b[i]);
}
// while(*p==0)
// {
// p++;
// }
// printf("留下来是原来的第%d位\n",*p);
//
// p[0]=&b[0];
// for(i=0;i<a;i+=3)
// {
// // for(j=1;j<4;j++)
// // {
// // p=&b[i];
// b[i]=1;
// b[i+1]=2;
// b[i+2]=3;
// // }
// }
//
}