输入两个正整数m和n,求其最大公约数和最小公倍数。
#include <stdio.h>
int main()
{
int m,n,i,gcd = 1,lcm = 0;
printf("请输入两个正整数m和n:\n");
scanf("%d%d",&m,&n);
for(i = 1;i <= m && i <= n;i++){
if(m % i == 0 && n % i == 0){
gcd = i;
}
}
lcm = (m * n) / gcd;
printf("最大公约数是%d\n",gcd);
printf("最小公倍数是%d\n",lcm);
return 0;
}
对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出
#include <stdio.h>
int main()
{
int array[10];
int i;
for(i = 0;i < 10;i++){//用for循环对数组进行初始化
array[i] = i;
}
puts("数组初始化完毕");
for(i = 0;i < 10;i++){//输出正序数组
printf("%d ",array[i]);
}
printf("\n");
puts("下面进行逆序");
for(i = 9;i >= 0;i--){//输出逆序数组
printf("%d ",array[i]);
}
return 0;
}
斐波那契数列
#include <stdio.h>
int main()
{
int arr[10];
int i;
int arrSize;
arrSize = sizeof(arr)/sizeof(arr[0]);
arr[0] = 0;
arr[1] = 1;
for(i = 2;i < arrSize;i++){
arr[i] = arr[i-1] + arr[i-2];//斐波那契数列的核心算法
}
for(i = 0;i < arrSize;i++){//注意i = 0,因为要从第一个元素开始输出,下标为0
printf("%d ",arr[i]);
}
puts("done\n");
return 0;
}
冒泡排序法(从大到小)
#include <stdio.h>
int main()
{
int arr[] = {12,8,13,9,1536,46,3456,23,23};
int i;
int j;
int tmp;
int len = sizeof(arr)/sizeof(arr[0]);
for(i = 0;i < len -1;i++){
for(j = 0;j < len - i - 1;j++){//冒泡排序主要理解为什么J的界限是len-i-1
//靠画图辅助理解最佳
if(arr[j] < arr[j+1]){
tmp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = tmp;
}
}
}
for(i = 0;i < len -1;i++){
printf("%d ",arr[i]);
}
return 0;
}

从小到大只需将 if(arr[j] < arr[j+1])中的小于号改成大于号即可
简单排序法(从大到小)
#include <stdio.h>
int main()
{
int arr[] = {12,8,13,9,1536,46,3456,23,23};
int i;
int j;
int tmp;
for(i = 0;i < len-1;i++){
for(j = i+1;j < len;j++){//简单排序主要理解这一步,取的是轮数对应下标数的后一个元素
//因为不可能和自身比较
if(arr[i] < arr[j]){
tmp = arr[j];
arr[j] = arr[i];
arr [i] = tmp;
}
}
}
for(i = 0;i < len;i++){
printf("%d ",arr[i]);
}
return 0;
}
同样,从小到大只需将 if(arr[i] < arr[j])中的小于号改成大于号即可
1万+

被折叠的 条评论
为什么被折叠?



