目录
1、比较大小
输入三个数a,b,c,比较输出其中的最大值
思路:将a分别与b、c比较,并将较大值赋给a。
#include <stdio.h>
int main()
{
int a , b , c;
printf("请你输入三个数字:");
scanf("%d %d %d",&a,&b,&c);
if (a<b) //将a与b比较,若a小于b,将b值赋予a,使a的值为原a,b中最大。
a=b;
if (a<c) //同上
a=c;
printf("最大值为:%d",a);
return 0;
}
2、数的倒置
输入一个数(12345678),输出这个数的倒置(87654321)
思路:用数组。用循环将第一个数与最后一个数交换,第二个数与倒数第二个交换,其他数同理。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s[100]="12345678";
int length=0, i;
for (i=0;i<100;i++) //用for循环求出字符串长度
{
if (s[i]=='8') //读到"8"退出循环
break;
else
length++; //计算字符串长度
}
for (i=0; i<=length/2;i++) //交换数字,得新的字符串
{
char a = s[i];
s[i] = hj[length-i];
s[length-i] = a;
}
printf("%s",hj);
return 0;
}
3、最大公约数
写一个函数,完成输入两个整数,输出最大公约数的功能
思路:用相减法求最大公约数
相减法:
已知有两整数m
和n
,① 若m>n,
则m=m-n
;②若m<n
,则n=n-m
;③若m=n
,则m
(或n
)即为两数的最大公约数;④若m≠n,
则再回去执行①。
例:求m=27
和n=15
的最大公约数过程为:①m=27-15=12 n=15
②m=12 n=15-12=3
③m=12-3=9 n=3
④m=9-3=6 n=3
⑤m=6-3=3 n=3
因此,n=3
即为最大公约数。
#include<stdio.h>
void a(int m,int n) //写函数实现求最大公约数(此处用相减法求)
{
int a,b;
b=m*n;
while(m!=n)
{
if(m>n)
m=m-n;
else
n=n-m;
}
a=n;
b=b/a;
printf("最大公约数是:%d",a);
}
int main(void)
{
int m,n;
scanf("%d,%d",&m,&n);
a(m,n);
return 0;
}
4、附加题
首先输入一个数组的大小,如何输入数组的数据,接下来对数组排序后输出
提示:冒泡排序与选择排序
(1)冒泡排序
重复比较相邻的元素。如果第一个比第二个大,就交换他们两个。
#include <stdio.h>
int main()
{
int l,i,j,t,a;
scanf("%d", &l);
int n[l];
for(i=0;i<l;i++)
{
scanf("%d",&n[i]);
} //输入数组长度和数据
for(j=1;j<=l-1;j++) //用for循环嵌套对数组数据进行排序
{
for(a=0;a<=l-1-j;a++)
{
if(n[a]>n[a+1])
{
t=n[a];
n[a]=n[a+1];
n[a+1]=t;
}
}
}
for(i=0;i<l;i++)
printf("%d ",n[i]);
return 0;
}
(2)选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复直到所有元素均排序完毕。
#include <stdio.h>
int main()
{
int l,i,j,t,a;
scanf("%d", &l);
int n[l];
for(i=0;i<l;i++)
{
scanf("%d",&n[i]);
} //输入数组长度和数组数据
for(j=1;j<=l-1;j++) //用for循环嵌套对数组数据进行排序
{
for (a=i+1;a<=l-1-a;a++)
{
if(n[j]>n[a])
{
t=n[j];
n[j]=n[a];
n[a]=t;
}
}
}
for(i=0;i<l;i++)
printf("%d ", n[i]);
return 0;
}