C++入门学习笔记 代码实例

Hello world

#include <iostream>
using namespace std;
 
int main()
{
    cout << "hello" << endl;
    return 0;
}

在键盘上输入两个数进行运算

#include <iostream>
using namespace std;
 
int main()
{
	int a = 0, b = 0, result = 0;
	cout<<"Please input two numbers:";
	cin>>a>>b;
	result = 3*a+4*b-1;
	cout<<"result is:"<<result<<endl;
	getchar();
	return 0;
}

冒泡法

 #include <iostream>
 using namespace std;

 int main() 
 {
        int n, a[1000]; // 一共n个数,n不超过1000。a用来保存这些数
        cin >> n;  
        // 输入n个数  
        for (int i = 0; i < n; i++) 
        {
          cin >> a[i];
        }  
    // 冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换
    for (int i = 0; i < n - 1; i++)
    {
      for (int j = 1; j < n - i; j++)
      {      
        if (a[j - 1] > a[j]) 
        {
          int temp = a[j];
          a[j] = a[j - 1];
          a[j - 1] = temp;
        }    
      }  
    }  
    // 依次输出
   for (int i = 0; i < n; i++) {
     cout << a[i] << endl;  
   }  
   return 0;
}

奇偶排序
输入十个整数,将十个整数按升序排列输出,并且奇数在前,偶数在后。

 #include <iostream>
 using namespace std;
    
 int main() 
 {
     int a[10];
     for (int i = 0; i < 10; i++) 
     {
       cin >> a[i];
     }
      // 首先,我们把奇数放到数组左边,偶数放到数组右边
      int l = 0, r = 9; //用左手和右手分别指向数组两端
      while (l <= r) 
      {
        bool leftIsOdd = a[l] % 2 == 1;
        bool rightIsEven = a[r] % 2 == 0;
        if (leftIsOdd) 
        {
          l++;
        } 
        else if (rightIsEven) 
        {
          r--;
        } 
        else if (!leftIsOdd && !rightIsEven) 
        {
          int temp = a[l];
          a[l] = a[r];
          a[r] = temp;
        }
      }
      // 对l左边(奇数部分)冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换
      int start = 0, end = l;
      for (int i = start; i < end - 1; i++) {
        for (int j = start + 1; j < start + end - i; j++) {
          if (a[j - 1] > a[j]) {
            int temp = a[j];
            a[j] = a[j - 1];
            a[j - 1] = temp;
          }
        }
      }
      // 对l右边(偶数部分)冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换
      start = l, end = 10;
      for (int i = start; i < end - 1; i++) {
        for (int j = start + 1; j < start + end - i; j++) {
          if (a[j - 1] > a[j]) {
            int temp = a[j];
            a[j] = a[j - 1];
            a[j - 1] = temp;
          }
        }
      }
      for (int i = 0; i < 10; i++) {
        cout << a[i] << ' ';
      }
      return 0;
    }


晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课,
请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES;如果不能则输出NO。

#include <iostream>
using namespace std;
int main() 
{
    int a;
    cin >> a;
    if (a == 1 || a == 3 || a == 5)
        cout << "NO" << endl;
    else
        cout << "YES" << endl;
    return 0;
}

奇数求和
计算正整数 m 到 n(包括m 和 n )之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。
例如 m=3, n=12, 其和则为:3+5+7+9+11=35

#include <iostream>
using namespace std;
int main() 
{
    int m, n, result = 0;
    cin >> m >> n;
	result = (m + n)*(n - m + 4)/4;
	cout << result << endl;
    return 0;
}

整数的个数
给定k(1<k<100)个正整数,
其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数

#include <iostream>
using namespace std;
int main()
{
    int k;
    cin>>k;
    int n1=0, n5=0, n10=0;
    for (int i=0;i<k;i++)
    {
        int n;
        cin>>n;
        if (n == 1) n1++;
        else if (n == 5) n5++;
        else if (n == 10) n10++;
    }
    cout<<n1<<endl;
    cout<<n5<<endl;
    cout<<n10<<endl;
    return 0;
}

1的个数
给定一个十进制整数N,求其对应2进制数中1的个数

# include <iostream>
using namespace std;

int main() 
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) 
    {
        int x, ans = 0;
        cin >> x;
        while (x > 0) 
        {
            ans += x % 2;
            x /= 2;
        }
        cout << ans << endl;
    }
    return 0;
}

数组逆序重放
将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8

#include <iostream>
using namespace std;
int a[100];
int main() 
{
    int n;
    cin >> n;
    for (int i = 0; i<n; i++)
        cin >> a[i];
    while (n--) 
    { //常用的倒序计数循环,等价于while(n-->0)
        cout << a[n];
        if (n > 0) cout << " "; //如果不是最后一个数那么就要用空格分隔开
    }
    return 0;
}


选择排序
将10个数组成的数组从大到小排序

#include <iostream>
using namespace std;
int a[100];
int main() 
{
    int a[10]//用于存放输入数据
    int i = 0, j = 0;  //用于循环计数
    int temp = 0;      //临时变量,用于暂存要交换数据
    for (i = 0; i < 10; i++) //依次输入10个待排序数据
    	cin>>a[i];
    for (i = 0; i < 9; i++) //依次为数组的第i个元素选择最大的数
    {
    	for (j = i - 1; j < 10; j++) //从i+1个元素开始寻找比a[i]更大的数
    	{
    		if (a[j] > a[i]) //如果找到比a[i]更大的数,就将它与a[i]互换
			{
				temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}

    	}
    }
    for (i = 0; i < 10; i++)
    	cout<<a[i]<<endl;
    return 0;
}

整数奇偶排序

#include <iostream>
using namespace std;
int main() 
{
  int all[10], odd[10],even[10];
  int i = 0, j = 0;
  for (; i<10; i++)
  	cin>>all[i];
  int numOdd = 0;
  int numEven = 0;
  for (i = 0; i<10; i++)
  {
  	if (all[i] % 2= 0)
  	{//奇数分组
  		odd[numOdd] = all[i];
  		numOdd++;
  	}
  	else
  	{//偶数分组
  		even[numEven] = all[i];
  		numEven++;
  	}
  }
  //对奇数进行排序
  for(i = 0; i<numOdd - 1; i++)
  {
  	for (j = 1; j<numOdd; j++)
  	{
  		if(odd[j]>odd[i])
  		{
  			int temp = odd[i];
  			odd[i] = odd[j];
  			odd[j] = temp;
  		}
  	}
  }
  //对偶数进行排序
  for (i = 0; i<numEven - 1; i++)
  {
  	for(j = i; j<numEven; j++)
  	{
  		int temp = even[i];
  		even[i] = even [j];
  		even[j] = temp;
  	}
  }
  //输出奇数
  for(i = 0; i<numOdd; i++)
  {
  	cout<<odd[i]<<"";
  }
  //输出偶数
  for(i = 0; i<numEven; i++)
  {
  	cout<<even[i]<<"";
  }
  cout<<endl;
  return 0;
}

细菌实验分组
有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,
A亚种繁殖能力非常强,B亚种的繁殖能力很弱。
在一次为时一个小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,
请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。
细菌繁殖能力(繁殖率)的量化标准为一个小时内细菌数量增长的比例(繁殖率 = 一小时后细菌数量 / 原本细菌数量)。
两个亚种繁殖能力差异很大,这意味着对于任意两个同种细菌培养皿的繁殖率的测量值之间的差异要小于任意两个异种细菌培养皿繁殖率的测量值之间的差异。

#include <iostream>
using namespace std;
int main() 
{
  int n; // n为细菌的数量
  // id记录细菌的编号, rate记录细菌的繁殖率,第i个细菌对应id[i]和rate[i]
  int id[100];
  double rate[100];

  cin >> n;
  for (int i = 0; i < n; i++) 
  {
    int initial, final;
    cin >> id[i] >> initial >> final;
    rate[i] = (double)final / initial;
  }  

// 对整个细菌排序
  for (int i = 0; i < n; i++) 
  {
    for (int j = 0; j < n - i - 1; j++) 
    {
      if (rate[j + 1] > rate[j]) 
      {
        int tmpId = id[j];
        id[j] = id[j + 1];
        id[j + 1] = tmpId;
        double tmpRate = rate[j];
        rate[j] = rate[j + 1];
        rate[j + 1] = tmpRate;
      }
    }
  }  

// 记录最大的差
  double maxDiff = 0;
  // 和最大差的下标
  int maxDiffIndex = 0;
  for (int i = 0; i < n - 1; i++) 
  {
    double diff = rate[i] - rate[i + 1];
    if (maxDiff < diff) 
    {
      maxDiff = diff;
      maxDiffIndex = i;
    }  
  }
  
  //输出繁殖率较大的那组细菌
  cout << maxDiffIndex + 1 << endl;
  for (int i = maxDiffIndex; i >= 0; i--) 
  {
    cout << id[i] << endl;
  }

  //输出繁殖率较小的那组细菌
  cout << n - maxDiffIndex - 1 << endl;
  for (int i = n - 1; i >= maxDiffIndex + 1; i--) 
   {
    cout << id[i] << endl;
  }
  return 0;
}
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值