编写程序的算法套路是:
1、分析问题,设变量。
2、找变量间的数学关系。数学是基础,程序的编写最终要靠数学。
3、建立代码语句。最重要的是设循环结构。
1、水仙花数
水仙花数是三位数,指100到999之间一个数等于该数个位,十位和百位的数字的立方和
分析如下:
1. 设变量:因为是100到999之间的数,则设循环变量为i;要取i的百位,十位,个位
数字,则分别设为变量a, b, c。
2. 建立变量之间的数学关系则有:c=i/100取整;b=(i/10)%10;a=i%10;
3. 得到水仙花数语句:if ( a*a*a+b*b*b+c*c*c == i )
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
for(int i = 100;i<1000;i++)
{
int a = i % 10; // a = 个位数字
int b = (i /10) %10; // b = 十位数字
int c = i / 100; // c = 百位数字
if(pow(a,3) +pow(b,3) +pow(c,3) == i) //判断三个数的立方和是否等于该数
{
printf("->%d is a Daffodils\n",i); //如果是,则打印出来
}
}
return 0;
}
2、9*9乘法表
1、格式:http://xiaoxue.xdf.cn/enj/202004/11051910.html
2、设变量:因为都是1到9之间的数,则设循环变量为 i、j 。
2. 建立变量之间的数学关系,每层都是由 i 来控制列数,从 1*i 到 i*i ,由 j 递增到 i;
3. 得到语句:for(int j = 1; j <= i; j++)
#include <stdio.h>
int main(int argc, char *argv[])
{
for(int i = 1;i < 10; i++) // 控制打印行
{
for(int j = 1; j <= i; j++) // 控制打印列
{
printf("%dx%d=%2d ",j,i,i*j); //格式输出
}
printf("\n"); // 每一行换行
}
return 0;
}
3、冒泡算法
#include <stdio.h>
int main(int argc, char *argv[])
{
//---------获取一个数组----------
int num[10]={0};
printf("enter 10 number:\n");
for(int i=0;i<10;i++) //循环获取
scanf("%d",&num[i]);
//----------冒泡排序-------------
for(int i=0;i<9;i++)
{
for(int j=0;j<9-i;j++)
{
if(num[j] > num[j+1]) // 判断后一个数是否小于前一个数,如果为真,则交换两数
{
num[j] ^= num[j+1];
num[j+1] ^= num[j];
num[j] ^= num[j+1];
}
}
}
//---------循环打印数组----------
for(int i=0;i<10;i++)
printf("%-3d",num[i]);
puts("");
return 0;
}