C语言小白,求源程序(最好每行代码给出解释)

从键盘输入三组3位正整数(也就是100-999之间的正整数),统计每组正整数中含数字3的个数,含数字3多的排在前面。含数字3的个数相同的正整数,它们之间排序的前后顺序不作... 从键盘输入三组3位正整数(也就是100-999之间的正整数),统计每组正整数中含数字3的个数,含数字3多的排在前面。含数字3的个数相同的正整数,它们之间排序的前后顺序不作要求。 展开
 我来答
shine1991
科技发烧友

2020-09-02 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部

#include <stdio.h>

int count(int n)

{

    int cnt;

    for(cnt=0;n;n/=10)

        if(n%10==3)

            cnt++;

    return cnt;

}

void sort(int a[],int n)

{

    int i,j,t;

    for(i=0;i<n-1;++i)

    {

        for(j=0;j<n-i-1;++j)

        {

            if(count(a[j])<count(a[j+1]))

            {

                t=a[j];

                a[j]=a[j+1];

                a[j+1]=t;

            }

        }

    }

}

int main()

{

    int a[3],i;

    for(i=0;i<3;++i)

        scanf("%d",&a[i]);

    sort(a,3);

    for(i=0;i<3;++i)

        printf("%d ",a[i]);

    return 0;

}

追问
因为是小白,能否给出每行代码的解释?
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
百好佳
2020-09-02 · TA获得超过301个赞
知道小有建树答主
回答量:702
采纳率:75%
帮助的人:175万
展开全部
不知道你学到什么程度了,这题的主要思维就是在一个任意整数中判断有没有3的出现,然后做一个简单的排序,
判断有没有3的出现 可以采用%(取模运算)的方式;
排序可以采用 逻辑符号 &&(逻辑非) ||(逻辑与)进行判断 也可以使用冒泡排序;
楼上的回答已经很好了,我做一个注释吧:
#include <stdio.h>
int count(int n) //返回值为int类型的自定义函数(参数为要判断的值)
{
int cnt; //声明一个临时变量
for(cnt=0;n;n/=10) //for循环传递进来的值 每循环一次除以10
** 注 整形除以整形的结果一定是整形,小数部分会自动忽略,199/10=19;即n小于10的时候不会进入循环体内部 **
if(n%10==3) //判断n对10取模是否等于3,在c语言中 = 表示赋值,== 表示对比
cnt++; //上边的语句如果为真 cnt加1
return cnt; // for循环执行完毕后 返回cnt的值,该函数运行完毕
}
void sort(int a[],int n) //冒泡排序函数(参数为 存放需要判断的值的数组,数组元素个数)
{
int i,j,t; //声明三个变量
for(i=0;i<n-1;++i) //for循环
{
for(j=0;j<n-i-1;++j) //嵌套for循环
{
if(count(a[j])<count(a[j+1])) //调用count函数并对比返回值
{
t=a[j]; //以下三条语句完成数值的交换,即每次循环都把小的数值后移
a[j]=a[j+1];
a[j+1]=t; //这个冒泡排序的函数看不懂的话可以搜一下视频教程
}
}
}
}
int main()
{
int a[3],i; //声明一个数组和变量
for(i=0;i<3;++i) //for循环3次
scanf("%d",&a[i]); //循环一次 等待输入一个数值
sort(a,3); //调用冒泡排序函数
for(i=0;i<3;++i) //for循环遍历输出数组
printf("%d ",a[i]);
return 0;
}
追问
非常感谢这位大侠这么详细的注释,可加速我的学习进程。我原有最早BASIC基础。目前想学C和C++。因先入为主,我先采纳SHINE1991这位大侠的答案了。我另外还有一个C++的问题,恳请您能象这题一样解答,如能过机运行,我会采纳您的答案。谢谢了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式