/*
输入3个数,从小大排列
*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
void daxiao(int *p,int n);
printf("请输入3个数字:");
int a[3];
for(int i = 0; i < 3; i++)
{
scanf("%d",&a[i]);
getchar();
}
daxiao(a,3);
printf("从小到大排列:");
for(int i = 0; i < 3; i++)
{
printf("%d
",a[i]);
}
return 0;
}
void daxiao(int *p,int n)
{
int temp;
for(int i = 0; i < (n-1); i++)
{
for(int j = i+1; j < n; j++)
{
if(p[i] > p[j])
{
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*
输入3个字符串,从小大排列,和数字有很大区别
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
void daxiao(char *x,char *y);
char a[10],b[10],c[10];
gets(a);
gets(b);
gets(c);
if(strcmp(a,b) > 0) daxiao(a,b);
if(strcmp(b,c) > 0) daxiao(b,c);
if(strcmp(a,c) > 0) daxiao(a,c);
printf("%s
%s
%s",a,b,c);
}
void daxiao(char *x,char *y)
{
char z[10];
strcpy(z , x);
strcpy(x , y);
strcpy(y , z);
}
--------------------------------------------------------------------------------------------------------------------------------
/*
输入10个数字
把最小的跟第一个互换,最大的跟最后一个互换
打印数字
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
void shuru(int *p);
void shuchu(int *p);
void caozuo(int *p);
int *p;
int num[10];
p = num;
shuru(p);
caozuo(p);
shuchu(p);
return 0;
}
void shuru(int *p)
{
for(int i = 0; i < 10; i++)
{
scanf("%d",&p[i]);
getchar();
}
}
void shuchu(int *p)
{
for(int i = 0; i < 10; i++)
{
printf("%d,",p[i]);
}
}
void caozuo(int *p)
{
int *max = p;
int *min = p;
int temp;
for(int i = 1; i < 10; i++)
{
if(*max < p[i]) max = &p[i];
}
for(int i = 1; i < 10; i++)
{
if(*min > p[i]) min = &p[i];
}
temp = p[0];
p[0] = *min;
*min = temp;
temp = p[9];
p[9] = *max;
*max = temp;
}
------------------------------------------------------------------------------------------------------------------------
/*
有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成前面的m个数,
写一函数实现以上功能,在主函数中输入n个整数和输出调正后的n个数
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
void tiaozheng(int *p,int *p1,int n,int m);
int n,m;
int *p,*p1;
printf("请输入你要输入的数字的个数:");
scanf("%d",&n);
getchar();
printf("请输入要调整的数字的个数:");
scanf("%d",&m);
getchar();
p = (int *)malloc(sizeof(int) * n);
p1 = (int *)malloc(sizeof(int) * n);
for(int i = 0; i < n; i++)
{
scanf("%d",&p[i]);
getchar();
}
tiaozheng(p,p1,n,m);
for(int i = 0; i < n; i++)
{
printf("%d
",p1[i]);
}
free(p);
free(p1);
return 0;
}
void tiaozheng(int *p,int *p1,int n,int m)
{
for(int i = 0;i < n; i++)
{
if(i < m)
p1[i] = p[n-m+i];
else
p1[i] = p[i-m];
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------/*
有n个人围城一圈,顺序排号,从第一个人开始报数,从1到3报数,
凡报到3的人出局,问最后剩下的是原来的第几号
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
int *jiajia(int *p,int *p_end,int n); //声明函数
int n;
printf("有几个人参加游戏:");
scanf("%d",&n); //参加游戏的人数
getchar();
int a[n];
for(int i = 1; i<=n; i++) //从1开始排列游戏人数
a[i-1] = i;
int *p = a;
int count = n; //计数器
int *p_end; //最后一个元素的地址
p_end = p + n - 1;
while(count > 1)
{
p = jiajia(p,p_end,n); //开始数
p = jiajia(p,p_end,n);
p = jiajia(p,p_end,n);
while (*p == 0) //当碰到已经出局的人,往下移一位
{
p = jiajia(p,p_end,n);
}
*p = 0; //点到的人出局
count -= 1; //出局一人计数器减一
for(int i = 0; i < n; i++) //这三行是用来核对答案用的
printf("%d",a[i]);
printf("
");
}
for(int i = 0; i < n; i++)
{
if(a[i]!= 0)
printf("最后留下的时原来的%d号",a[i]);
//printf("%d
",a[i]);
}
return 0;
}
int *jiajia(int *p,int *p_end,int n) //移动指针用的函数
{
if (p == p_end) //当指针指到最后一位,就从第一位开始
{
p = p - (n-1);
}
else
{
p++; //不是最后一位就往后移
}
return p;
}
--------------------------------------------------------------------------------------------------------------
/*
写一个函数,求字符串长度
*/
#include<stdio.h>
int stringlen(char *p)
{
int count = 0;
while (*p != ' ')
{
p++;
count += 1;
}
return count;
}
int main(void)
{
printf("请输入一个字符串:
");
char s[20]; //字符数组,都可以表示字符串,但是还是有很多区别
//char *s; //字符指针变量,不能用scanf赋值,因为他是指向字符串的首字符
/* 这样也就可以使用scanf输入,字符串指针变量指向字符串的首字母地址
char *a;
a = s;
scanf("%s",a);
*/
scanf("%s",s);
getchar();
printf("%s",s);
printf("字符串长度是:%d",stringlen(s));
return 0;
}
--------------------------------------------------------------------------------------------------------