精华内容
下载资源
问答
  • 从输入的一批正整数中求最大值、最小值和平均值,输入0结束数据的输入。C语言程序
  • 找出1到正整数N中出现1的次数》 编程思想:依次求出正整数每个位数上出现1的次数,累加即可得到最后想要的结果;而每位上出现1的个数与和它相邻的其它位数上的数字有关系(以此位置上的数为对称轴,其左边的...

     

                                                                                          《找出1到正整数N中出现1的次数》

    编程思想:依次求出正整数每个位数上出现1的次数,累加即可得到最后想要的结果;而每一位上出现1的个数与和它相邻的其它位数上的数字有关系(以此位置上的数为对称轴,其左边的所有数字作为其最高位,其右边的数字作为其最低位;当然若此位置已处于最低位或最高位,那么它对应的最低位或最高位置0),与它们有一个可求出1的固定的关系式(一个数各个位置上的数分离后,它们都对应着各个位置的基准,例如个位上的数对应的基准为1,以此类推即可),即若此位置上的数字为0,则在此位置上出现1的个数为最高位乘以基准;若为1,则等于最高位乘以基准加最低位再加1;若为其他,则为最高位加1乘以基准即可。即后,各个位上出现1的个数累加即可。

    具体设计:(1)以4个变量high,m,low,f分别作为分离后当前位数的最高,本身,最低位以及分离其的基准;以while语句判断能进行进程的条件,只有当此数不越级别,才能继续进行,即在其中设置了一个判断终止的条件;

    (2)依次按照个位,十位.......等等的顺序把各个位置上的数字分离出来,并以其为对称轴找出其最高位以及最低位:low=n-(n/f)*f;m=(n/f)%10;high=n/(f*10);

    (3)用switch语句根据此位置上的数与最低,最高位上的数的固定关系式,依次累加计算每位上出现1的次数:switch(m){ case 0:count+=high*f; break; case1: count+=high*f+low+1;break;default:count+=(high+1)*f; break; }

    (4)依次按照各位的基准把各位相应的出现的1的次数累加起来直至遇到终止的条件即可得到最终想要的结果。

    源代码:

     

    //找出1到正整数N中出现1的次数
    //June 2th,2015
    #include<iostream>
    using namespace std;
    long int f( long int n)
    {
    
        long int low=0,high=0,m=0,f=1,count=0;
        while(n/f!=0)
        {
            low=n-(n/f)*f;
            m=(n/f)%10;
            high=n/(f*10);
            switch(m)
            {
            case 0:
                count+=high*f;
                break;
            case 1:
                count+=high*f+low+1;
                break;
            default:
                count+=(high+1)*f;
                break;
            }
            f*=10;
        }
        return count;
    
    }
    void main()
    {
        int a,i=0;
        cout<<"请输入一个正整数:"<<endl;
        cin>>a;
        cout<<"f"<<"("<<a<<")"<<"="<<f(a)<<endl;
         long int m;
        cout<<"在32位整数中能找到符合要求的f(n)=n的最大数是:"<<endl;
        for(m=2147483647;m>=1&&i<1;m--)
        {
            if(f(m)==m)
            {
                cout<<m<<endl;
                i++;
            }
        }
    }

     

     

     

    实验结果截图:

     

    编程总结:(1)当老师给出问题的时候,只是单纯混沌的举了一些不相干的例子,并没有从其中总结出什么规律;

    (2)听了同学们的各抒己见,大多数还是不能满足老师想要的结果,继续思索中.......

    (3)课下在查阅了相关资料以及汲取了老师上课的提示后,明了了如何解决问题以及编写代码了;

    总之,多交流,多思考,多汲取别人的优点,多开拓视野是解决问题的必经之路!

     

    转载于:https://www.cnblogs.com/Twinklelittlestar/p/4547991.html

    展开全文
  • 第1关:输入10个整数,按每行4个数输出这些整数,最后输出这批整数的最大值、最小值和平均值 任务描述 本关任务:输入10个整数,按每行4个数输出这些整数,最后输出这批整数的最大值、最小值和平均值。 测试说明 ...

    第1关:输入一批整数,以0为结束标志,找出最大数和最小数所在的位置,并把二者对调
    任务描述
    本关任务:输入一批整数,最多不超过100个,以 0 为结束标志,找出最大数和最小值所在的位置,并把二者对调,然后输出调整后的这批整数。
    测试说明
    平台会对你编写的代码进行测试:

    测试输入:
    21 47 37 69 2 8 76 50 9 41 0

    预期输出:
    最大值:76,下标:6
    最小值:2,下标:4
    21 47 37 69 76 8 2 50 9 41

    #include<stdio.h>
    #define N 100
    int main()
    {
        int a[N],i,j,k,t,n,max,min;
        scanf("%d",&n);
        for(i=0;n!=0;i++)
        {
            a[i]=n;
            scanf("%d",&n);
        }   
        k=i;
        min=0;
        max=0;
        for(j=0;j<i;j++)
    {
        if(a[j]>a[max])max=j;
        if(a[j]<a[min])min=j;
    }
        printf("最大值:%d,下标:%d\n最小值:%d,下标:%d\n",a[max],max,a[min],min);
        t=a[min];
        a[min]=a[max];
        a[max]=t;
        for(i=0;i<k;i++)
        printf("%d ",a[i]);
    	return 0;
    }
    

    ······通关成功······
    如有问题,敬请斧正。

    展开全文
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字...

    习题7-2 求一批整数中出现最多的个位数字 (20分)

    题目来源:浙大C题目集

    给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

    输入格式:

    输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。

    输出格式:

    在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

    输入样例:

    3
    1234 2345 3456

    输出样例:

    3: 3 4

    解题思路:

    利用数组下表
    建立数组 int N[10]; N里面的下标分别表示1个数字,数组里的元素表示这个数字出现的次数。录入结束后,先找出最大次数,然后再用寻找和最大次数相等的下标(即出现次数最多的数字)。

    再写一个求每个数字的每位数字的函数

    以下是我的源码:

    #include<stdio.h>
    int ge(int n );
    int main()
    {
    	int N[10]={0};
    	int n;		//n个数字 
    	scanf("%d",&n);
    	int i;		//用来遍历 
    	int temp;	//临时储存 
    	for(i=0;i<n;i++)
    	{
    		scanf("%d",&temp);
    		while(temp!=0)
    		{		//依次统计没位数字出现的次数
    			N[ge(temp)]++;	 
    			temp/=10; 
    		}
    	}
    	int max=N[0];
    	for(i=0;i<10;i++)
    	{			//寻找最大次数 
    		if(N[i]>max)
    			max=N[i];
    	}
    	printf("%d:",max);
    	for(i=0;i<10;i++)
    	{			//通过最大次数寻找对应的数字 
    		if(N[i]==max)
    			printf(" %d",i);
    	}
    	return 0;
    }
    int ge(int n)
    {
    	return n%10;
    }
    

    如果对你有帮助的话,点个赞再走呗 > o < !

    展开全文
  • #include <stdio.h>int main() { int a,max=0; scanf("%d",&a); while(a!=0) { if(max) max=a; scanf("%d",&a); } printf("%d\n",max); return 0; }运行结果:
    #include <stdio.h>
    
    int main()
    {
        int a,max=0;
        scanf("%d",&a);
    
        while(a!=0)
        {
            if(max<a)
                max=a;
            scanf("%d",&a);
        }
        printf("%d\n",max);
        return 0;
    }

    运行结果:
    这里写图片描述

    展开全文
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字...
  • 题目:找到大于正整数n的最小2的次幂数 int solve (int num) { int base = INT_MIN; if (num >= base) { base = num; base |= (base >> 1); //把base最高位的下位置1 base
  • 浙大版《C语言程序设计(第3版)》题目集习题7-2 求...输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 …”输出,其中M是
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,...
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数, 数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最...
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,...
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,...
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,...
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,...
  • 输入在第1行中给出正整数N(≤1000),在第二行中给N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,...
  • 一批整数中出现最多的个位数字 时间限制:400 ms 内存限制:65536 kB 代码长度限制:8000 B 判题程序:Standard 作者:徐镜春(浙江大学) 题目描述: 给定一批整数,分析每个整数的每一位数字,求出现次数最多的...
  • 输入在第1行中给出正整数N( 输出格式: 在行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多
  • 输入在第1行中给出正整数N( 输出格式: 在行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,009
精华内容 3,603
关键字:

找出出一批正整数