2020,3-大一下随笔

本人蒟蒻,望大佬批评指正,在此感激不尽!

(1)

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    long a,b,c,x,m;
    double v;
    	while( cin>>a>>b>>c)//多组数据以EOF结束
	{

		m=a+b+c;
		x=a*b*c;
		v=(m/3.0);
		cout.precision(2); //控制输出小数位数为2(.00)
		cout<<m<<" "<<x<<" "<< fixed <<v<<endl;
		}
    return 0;
}

(2)头文件

#include<bits/stdc++.h>  万能头文件
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<stack>
#include<map>
#include<queue>
#include<algorithm>
#include<iostream>

(3)去除"_"的是insert键

(4)跳出[ ],可以敲 ]

      (5) **输入三值比大小(由小到大输出)**
#include<iostream>
using namespace std;
int main()
{
	int a,b,c,i,j,k;
	cout<<"请输入:"<<endl; 
	cin>>a>>b>>c;
	int i=a>b?(a>c?a:c):(b>c?b:c);
	int j=a<b?(a<c?a:c):(b<c?b:c);
	int k=a+b+c-i-j;
	cout<<j<<" "<<k<<" "<<i<<endl;
	return 0;
}
 (6)

(1)题目要求输入的数据有多组,首先想到的是用while(scanf("%d%d", &m, &n) != EOF)实现,
经提交测试后,发现这种做法是可以的。当看到有大神的做法是while(~scanf("%d%d", &m, &n))自己查了一下,
~是按位取反,只有当scanf();函数返回值为-1时,才会退出while循环,然后根据scanf函数的返回值,
我想到了使用scanf("%d%d", &m, &n) == 2经测试也是可以的。
(2)自己刚开始做这道题时,将判断水仙花数单独写成了一个函数,结果发现代码运行的时间达4ms,
所以就想把函数去掉,在主函数中直接判断,结果发现运行时间减少为3ms,由此可见函数调用的开销还是不小的。
(3)自己提交这题时还遇到一个问题:数据输出的格式,当输出数据只有一个时,这个数据的后面是没有空格的,
所以我用cnt记录要输出数据的个数,用if语句进行判断
(7)
c++中如何实现输入多组数据以零结束

int a,b;
while(1)
{
  scanf("%d%d",&a,&b);
  if(a==0&&b==0) break; //break; 是跳出循环用的, 也就是输入 0 0时结束
//需要对 a,b 进行操作就写在 这里就行了
}
还如:
    while(!(a==0&&b==0&&c==0&&d==0&&e==0&&f==0))
   {
       。。。。。
          scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f);
(8)漂亮的菱形 多组输入高度,以零结束;
#include<stdio.h>
int main()
{
  	int m;
  	while(~scanf("%d",&m),m!=0)
  	 {
	   int n=(m+1)/2;
  	   for(int i=1;i<=n;i++)
  	   {
  	 	     for(int j=1;j<=n+i-1;j++)
  	 	     {
		       if(j>=n+1-i&&j<=n+i-1)
			   printf("*");
			   else
			   printf(" ");
			 }
			 printf("\n"); 
	  }
	  for(int i=1;i<n;i++)
	  {
	   	for(int j=1;j<=2*n-i-1;j++)
		if(j>=i+1&&j<=2*n-i-1)  printf("*");
		else                    printf(" ");
		printf("\n");
	  }
    }
  	
  	return 0;
}

(9)acm1096 a^b的值
运用快速幂

#include<iostream>
using namespace std;
int mod(int a,int b,int c)
{
    int ans=1,temp=a%c;
    while(b)
    {
        if(b%2)
            ans=ans*temp%c;
        temp=temp*temp%c;
        b/=2;
    }
    return ans;
}
int main()
{
    int n,m;
    while(cin>>n>>m)
    {
        cout<<mod(n,m,10)<<endl;
    }
    return 0;
}
(10)斐波那契数列
a,递归-时间复杂度最大
     int Fb(int n){
       if(n<=0)  return 0;
          else if(n==1||n==2) return 1;
               else return Fb(n-1)+Fb(n-2);}
b,(动态规划)DP解法-~~次之
 long fib(int n)
{
	int i;
	if(n<=0)
	   return 0;
	   else if(n==1||n==2)
	      return 1;
      int one=1;
      int two=1;
      int r=0;
      for(int i=2;i<n;i++)
      {
      	r=one+two;
      	one=two;
      	two=r;
	  }
	  return r;
}
c,矩阵的快速幂
(11)

找出这n个数的最大值,最小值,以及这些数字的和
#include<stdio.h>
//求和函数

void he(int a[],int n)
{
	int sum=0;
	int i;
	for(i=0;i<n;i++)
	{
		sum+=a[i];
	}
	printf("%d\n",sum);
}
 

//求最大值最小值函数

void max_min(int a[],int n) 
{
	int i;
	int max,min;
	max=min=a[0];
	for(i=0;i<n;i++)
	{
		if(max<a[i])
		{
			max=a[i];
		}
		if(min>a[i])
		{
			min=a[i];
		}
	}
	printf("%d\n",max);
	printf("%d\n",min);
}
 

//主函数

int main()
{
	int n;
	int i;
	int a[10000];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	max_min(a,n);
	he(a,n);
	return 0;
 } 
(12)
   2019,12,19

冒泡排序: (由小到大输出)

 void maopao(int a[],int n)
{
    int t;
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }
        }
    }
}

输入n×n阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和。

 for(i = 0; i < n; i++)
            {    for(j = 0; j < n; j++)
               {    if(i == j || i + j == n - 1)
                  sum=sum+a[i][j];
               }
            }
  (13)
 九九乘法表,,,,图案呈现
    (14)
 十进制转二进制(其中包含char型转int型问题)
     sum+=(a[i]-'0')*((int)pow(2,n-1-i));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHppGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值