C语言练习——for、if 练习(水仙花数、冒泡排序、99乘法表)

编写程序的算法套路是:

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、冒泡算法

1、什么是冒泡排序算法:https://baike.baidu.com/item/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/4602306#:~:text=%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F%EF%BC%88Bubble%20Sort%EF%BC%89%EF%BC%8C%E6%98%AF%E4%B8%80%E7%A7%8D%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E9%A2%86%E5%9F%9F%E7%9A%84%E8%BE%83%E7%AE%80%E5%8D%95%E7%9A%84%20%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95,%E3%80%82%20%E5%AE%83%E9%87%8D%E5%A4%8D%E5%9C%B0%E8%B5%B0%E8%AE%BF%E8%BF%87%E8%A6%81%E6%8E%92%E5%BA%8F%E7%9A%84%E5%85%83%E7%B4%A0%E5%88%97%EF%BC%8C%E4%BE%9D%E6%AC%A1%E6%AF%94%E8%BE%83%E4%B8%A4%E4%B8%AA%E7%9B%B8%E9%82%BB%E7%9A%84%E5%85%83%E7%B4%A0%EF%BC%8C%E5%A6%82%E6%9E%9C%E9%A1%BA%E5%BA%8F%EF%BC%88%E5%A6%82%E4%BB%8E%E5%A4%A7%E5%88%B0%E5%B0%8F%E3%80%81%E9%A6%96%E5%AD%97%E6%AF%8D%E4%BB%8EZ%E5%88%B0A%EF%BC%89%E9%94%99%E8%AF%AF%E5%B0%B1%E6%8A%8A%E4%BB%96%E4%BB%AC%E4%BA%A4%E6%8D%A2%E8%BF%87%E6%9D%A5%E3%80%82%20%E8%B5%B0%E8%AE%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%98%AF%E9%87%8D%E5%A4%8D%E5%9C%B0%E8%BF%9B%E8%A1%8C%EF%BC%8C%E7%9B%B4%E5%88%B0%E6%B2%A1%E6%9C%89%E7%9B%B8%E9%82%BB%E5%85%83%E7%B4%A0%E9%9C%80%E8%A6%81%E4%BA%A4%E6%8D%A2%EF%BC%8C%E4%B9%9F%E5%B0%B1%E6%98%AF%E8%AF%B4%E8%AF%A5%E5%85%83%E7%B4%A0%E5%88%97%E5%B7%B2%E7%BB%8F%E6%8E%92%E5%BA%8F%E5%AE%8C%E6%88%90%E3%80%82

#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;
} 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值