zoukankan      html  css  js  c++  java
  • IO 分支 循环

    求平均数  double=(数字的和)/4.0  除以浮点数 

    IO-04. 混合类型数据格式化输入

    #include <iostream>
    #include <stdio.h>
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char** argv) {
        char a;
        int b;
        double c,d;
        scanf("%lf %d %c %lf",&c,&b,&a,&d);
        printf("%c %d %.2f %.2f",a,b,c,d);
        //输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
        //在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
      return 0;
    }

      

    循环-09. 支票面额(15)

    一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?

    输入格式:

    输入在一行中给出小于100的正整数n。

    输出格式:

    在一行中按格式“y.f”输出该支票的原始面额。如果无解,则输出“No Solution”。

    输入样例1:
    23
    
    输出样例1:
    25.51
    
    输入样例2:
    22
    
    输出样例2:
    No Solution

    分支-02. 三角形判断(15)

     

    给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。

    输入格式:

    输入在一行中顺序给出6个[-100, 100]范围内的数字,即3个点的坐标x1, y1, x2, y2, x3, y3。

    输出格式:

    若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <math.h>
     4 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
     5 
     6 int main(int argc, char** argv) {
     7     double x1,y1,x2,y2,x3,y3;
     8     scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
     9     double a,b,c;
    10     a=sqrt((double)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
    11     b=sqrt((double)((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)));
    12     c=sqrt((double)((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)));
    13     //printf("%f %f %f
    ",a,b,c);
    14     double zhouchang=a+b+c;
    15     double banzhou=zhouchang/2.0;
    16     double mianji=sqrt(banzhou*(banzhou-a)*(banzhou-b)*(banzhou-c));
    17     if(((a+b)>c)&&((b+c)>a)&&((a+c)>b))
    18     {
    19         printf("L = %.2f, A = %.2f",zhouchang,mianji); 
    20     }else
    21     {
    22         printf("Impossible");
    23     }
    24     
    25     
    26     return 0;
    27 }

    分支-18. 求一元二次方程的根(20)

    本题目要求一元二次方程 a*x2+b*x+c=0 的根,结果保留2位小数。

    输入格式:

    输入在一行中给出3个浮点系数a, b, c,中间用空格分开。

    输出格式:

    根据系数情况,输出不同结果:

    1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;
    2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;
    3)如果方程只有一个根,则直接输出此根;
    4)如果系数都为0,则输出"Zero Equation";
    5)如果a和b为0,c不为0,则输出"Not An Equation"。
    

    输入样例 1:

    2.1 8.9 3.5    
    

    输出样例 1:

    -0.44
    -3.80
    

    输入样例 2:

    1 2 3           
    

    输出样例 2:

    -1.00+1.41i
    -1.00-1.41i
    

    输入样例 3:

    0 2 4           
    

    输出样例 3:

    -2.00
    

    输入样例 4:

    0 0 0          
    

    输出样例 4:

    Zero Equation
    

    输入样例 5:

    0 0 1           
    

    输出样例 5:

    Not An Equation
    
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char** argv) {
        double a,b,c;
        scanf("%lf%lf%lf",&a,&b,&c);
        double delta=b*b-4*a*c;
         if(a==0&&b==0&&c==0)
         {
             printf("Zero Equation");
         } 
         else if(a==0&&b==0&&c!=0)
         {
             printf("Not An Equation");
         }
         else if(a==0&&b!=0&&c!=0)
         {
             printf("%.2f",-c/b);
         } 
         else if(a==0&&b!=0&&c==0)
         {
             printf("0.00");
         }
         else if(delta==0)
         {
             printf("%.2f",-b/(2.0*a));
         }
         else if(delta>0)
         {
             
             double gen1=((-b)+sqrt(delta))/(2.0*a);
             double gen2=((-b)-sqrt(delta))/(2.0*a);
             printf("%.2f
    ",gen1);
             printf("%.2f",gen2);
         }
         else if(delta<0)
         {
             double xubu=fabs(sqrt(-delta)/(2.0*a));
            double shibu=-b/(2.0*a);
            if(b!=0)
            {
            printf("%.2f+%.2fi
    ",shibu,xubu);
            printf("%.2f-%.2fi
    ",shibu,xubu);
            }
            else
            {
            printf("0.00+%.2fi
    ",xubu);
            printf("0.00-%.2fi
    ",xubu);    
            }
         }
        return 0;
    }

    循环-01. 求整数段和(15)

    给定两个整数A和B,输出从A到B的所有整数以及这些数的和。

    输入格式:

    输入在一行中给出2个整数A和B,其中-100<=A<=B<=100,其间以空格分隔。

    输出格式:

    首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中输出全部数字的和。

    输入样例:
    -3 8
    
    输出样例:
       -3   -2   -1    0    1
        2    3    4    5    6
        7    8
    Sum = 30
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char** argv) {
        int  a,b;
        scanf("%d%d",&a,&b);
        int i=a;
        int count=0;
        int sum=0;
        for(;i<=b;i++)
        {
            //print in 5    
            printf("%5d",i);
            if(((count%5)==4)&&i!=b)printf("
    ");//注意i不能是最后一个数 否则多一个回车 
            sum=sum+i;
            count++;
            
        } 
        printf("
    Sum = %d",sum);
        return 0;
    }

    循环-03. 求符合给定条件的整数集(15)

    给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

    输入格式:

    输入在一行中给出A。

    输出格式:

    输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

    输入样例:
    2
    
    输出样例:
    234 235 243 245 253 254
    324 325 342 345 352 354
    423 425 432 435 452 453
    523 524 532 534 542 543
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char** argv) {
        int a;
        scanf("%d",&a);
        int b=a+1;
        int c=a+2;
        int d=a+3;
         int count=0;
         for(int i=a;i<=d;i++)
         {
             for(int j=a;j<=d;j++)
             {
                 for(int k=a;k<=d;k++)
                 {
                     if(k==i||k==j||i==j)continue;
                     printf("%d%d%d",i,j,k);
                     if(count%6==5)printf("
    ");
                     else printf(" ");
                     count++;
                 }
             }
         }
        return 0;
    }

    循环-04. 验证“哥德巴赫猜想”(20)

    数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。

    输入格式:

    输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。

    输出格式:

    在一行中按照格式“N = p + q”输出N的素数分解,其中p <= q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。

    输入样例:
    24
    
    输出样例:
    24 = 5 + 19
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    bool isprime(long long x)
    {
    	long long i;
    for( i=2;i<=sqrt(x);i++) { if(x%i==0)break; } if(x>1&&i>sqrt(x)) return true; else return false; }
    int main(){
        long long a;
    	scanf("%lld",&a);
    	long long i;
        for(i=2;!(isprime(i)&&isprime(a-i))&&(i<=a/2);i++)
        {
         	
        }
        
    	printf("%lld = %lld + %lld",a,i,a-i);
    	return 0;
    }
    

      另外一种求素数的方法!

    bool isprime(long long x)
    {
    	long long i;
    	if (x == 1) {   //x==1要特别考虑 
          return false;
        }
    	for( i=2;i<=sqrt(x);i++)
    	{
    		if(x%i==0)return false;
    		
    	}
    	
    	return true;
    
    	
    }
    

      

    循环-05. 兔子繁衍问题(15)

    一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

    输入格式:

    输入在一行中给出一个不超过10000的正整数N。

    输出格式:

    在一行中输出兔子总数达到N最少需要的月数。

    输入样例:
    30
    
    输出样例:
    9

    1 1 2 3 5 8 13 21 34
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    
    
    int cal(int m){
        if(m<=2)
            return 1;
        else
            return (cal(m-1)+cal(m-2));
    }
    int main(){
        int amount;//兔子要达到的总对数
        int month=1;//月数
    
        scanf("%i",&amount);
        while(cal(month)<amount)
            month++;
        printf("%i
    ",month);//第month个月兔子对数达到amount
    
        return 0;
    }

    循环-06. 统计一行文本的单词个数(15)

     

    本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

    输入格式:

    输入给出一行字符。

    输出格式:

    在一行中输出单词个数。

    输入样例:
    Let's go to room 209.
    
    输出样例:
    5

    最后一个字符要特殊处理。

    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    
    
    
    #include<string>
    using namespace std;
    int main(){
        string s;
        int i,c=0;
        getline(cin,s);
        //printf("%d
    ",s.length());
        for(i=1;i<s.length()-1;i++)
            if(s[i]==' '&&s[i-1]!=' ')
                c++;
        if(s[i]!=' ')
        { 
        //printf("%c
    ",s[i]); 
        c++;
        } else
        {
            if(s[i-1]!=' ') c++;
            
        }
        cout<<c<<endl;
        return 0;
    }

    循环-07. 爬动的蠕虫(15)

    一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?

    这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

    输入格式:

    输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。

    输出格式:

    在一行中输出蠕虫爬出井的时间,以分钟为单位。

    输入样例:
    12 3 1
    
    输出样例:
    11

    #include<string>
    
    int main(){
    
        int N,U,D;
        scanf("%d%d%d",&N,&U,&D);
        int yushu=N%(U-D);
        int height=0;
        int min=0;
        while(height<N)
        {
            height+=U;
            min++; 
            if(height>=N)break;
            height-=D;
            min++;
        }
       printf("%d",min);
        return 0;
    }

    循环-09. 支票面额(15)

     

    一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?

    输入格式:

    输入在一行中给出小于100的正整数n。

    输出格式:

    在一行中按格式“y.f”输出该支票的原始面额。如果无解,则输出“No Solution”。

    输入样例1:
    23
    
    输出样例1:
    25.51
    
    输入样例2:
    22
    
    输出样例2:
    No Solution

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <math.h>
     4 
     5 
     6 
     7 #include<string>
     8 
     9 int main(){
    10 
    11     int n;
    12     scanf("%d",&n);
    13     int y,f=0;
    14     while(((98*f-n)%199!=0)&&(f<=99))
    15     {
    16         f++;
    17     }
    18     if(f>99)
    19     {
    20         printf("No Solution");
    21     }
    22     else
    23     {
    24     
    25         y=(98*f-n)/199;
    26         printf("%d.%d",y,f);
    27     }
    28     return 0;
    29 }

    循环-12. 打印九九口诀表(15)

    输入格式:

    输入在一行中给出一个正整数N(1<=N<=9)。

    输出格式:

    输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    
    
    
    #include<string>
    
    int main(){
        int n;
        scanf("%d",&n);
        int i,j;
    	for(i=1;i<=n;i++)
    	{
    		for(j=1;j<=i;j++)
    		printf("%d*%d=%-4d",j,i,i*j);
    		
    		printf("
    ");
    	}
        
        return 0;
    }
    

      

    循环-13. 求特殊方程的正整数解(15)

    本题要求对任意给定的正整数N,求方程X2+Y2=N的全部正整数解。

    输入格式:

    输入在一行中给出正整数N(<=10000)。

    输出格式:

    输出方程X2+Y2=N的全部正整数解,其中X<=Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出“No Solution”。

    输入样例1:
    884
    
    输出样例1:
    10 28
    20 22
    
    输入样例2:
    11
    
    输出样例2:
    No Solution
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include<string>
    
    int main(){
    
        int num;
        int i=1;//要求都是正整数 不为0 
        scanf("%d",&num);
        
        int status=0;
    	for(;i<=sqrt(num)&&i<=sqrt(num-i*i);i++)
    	{
    	    double j=sqrt(num-i*i);
    		if(j==floor(j))
    		{
    		printf("%d %d
    ",(int)i,(int)j);
    	    status=1;
          	}
    	}
    	if(status==0)
    	{
    		printf("No Solution
    ");
    	}
        return 0;
    }
    

      

    循环-14. 最大公约数和最小公倍数(15)

    本题要求两个给定正整数的最大公约数和最小公倍数。

    输入格式:

    输入在一行中给出2个正整数M和N(<=1000)。

    输出格式:

    在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

    输入样例:
    511 292
    
    输出样例:
    73 2044

    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include<string>
    
    int main(){
    
        int x,y;
        scanf("%d%d",&x,&y);
        int yue,bei;
    	if(x<y)
    	{
        	yue=x;
    	    bei=y;
        }
        else
        {
        	bei=x;
        	yue=y;
        }
        while(yue!=1)
        {
        	if(x%yue==0&&y%yue==0)
        	{
        		break;
        	}
        	yue--;
        }
        while(bei!=x*y)
        {
        	if(bei%x==0&&bei%y==0)
        	break;
        	bei++;
        }
        printf("%d %d",yue,bei);
        return 0;
    }
    

      

    循环-16. 猴子吃桃问题(15)

    一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

    输入格式:

    输入在一行中给出正整数N(1<N<=10)。

    输出格式:

    在一行中输出第一天共摘了多少个桃子。

    输入样例:
    3
    
    输出样例:
    10

    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include<string>
    
    int main(){
    
        int n;
        scanf("%d",&n);
        int sum=0;
        int day=1;
        while(n!=1)
        {
        	day=(day+1)*2;
    		n--;
        }
        printf("%d",day);
        return 0;
    }
    

      

  • 相关阅读:
    Vue 左右翻页,点赞动画
    gitbook 使用
    css3 序列帧动画抖动
    ios添加-webkit-overflow-scrolling依然卡顿
    css 多行省略号兼容移动端
    Vue粒子特效(vue-particles插件)
    css3 渐变色兼容移动端
    前端性能优化:客户端从输入到展示讲解
    前端通信:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布
    前端通信:ajax设计方案(五)--- 集成promise规范,更优雅的书写代码(改迭代已作废,移步迭代10)
  • 原文地址:https://www.cnblogs.com/ligen/p/4235982.html
Copyright © 2011-2022 走看看