新浦网站制作网站建设做机械的专业外贸网站有哪些
文章目录
- 一、哥德巴赫猜想
 - 二、哥德巴赫猜想2
 - 三、打印成绩单
 - 四、成绩输入输出
 - 五、数组输出奇数位偶数位
 
一、哥德巴赫猜想
【试题描述】
 哥德巴赫提出了以下的猜想:任何一个大于 2 的偶数都可以表示成 2 个质数之和。 质数是指除了 1 和本身之外没有其他约数的数, 如 2 和 11 都是质数,而 6 不是质数,因为 6 除了约数 1 和 6 之外还有约数 2 和 3。 需要特别说明的是 1 不是质数。
 请你编一个程序验证哥德巴赫猜想
 【输入要求】
 n 的值
 【输出要求】
 多组由两个素数之和组成的表达式, 每组第一个数字要从小到大排列
 【输入样例】
 14
 【输出样例】
 3+11
 7+7
#include <bits/stdc++.h>
using namespace std;  // 函数用于检查一个数是否为质数  
bool isPrime(int n) {  //小于等于1的数不是质数if (n <= 1) return false;  //2是质数if (n == 2) return true;  //除2外能被2整除的数不是质数if (n % 2 == 0) return false;  for (int i = 3; i < n; i += 1) {//能被小于自身的数整除,说明不是质数if (n % i == 0) return false;  }  return true;  
}  // 函数用于验证哥德巴赫猜想  
void goldbachConjecture(int n) {  if (n <= 2 || n % 2 != 0) {  cout << "输入错误,请输入大于 2 的偶数." << endl;  return;  }  //从2开始循环找到满足条件的两个质数for (int i = 2; i <= n / 2; ++i) {//第一个质数if (isPrime(i)) {  //第二个质数int second = n - i;  if (isPrime(second)) {  //质数之和,并输出结果  cout << i << "+" << second << endl;  }}  }  }  int main() {  //定义变量n,存放输入的大于2的偶数int n;  //输入大于 2 的偶数cin >> n;  //调用goldbachConjecture函数goldbachConjecture(n);  return 0;  
}
 
二、哥德巴赫猜想2
【试题描述】
 求出哥德巴赫猜想的所有解(将一个大于 9 的奇数拆分成三个素数之和),并按从小到大的顺序写出。
 【输入要求】
 一行, 一个大于 9 的奇数。
 【输出要求】
 每行一个解。
 【输入样例】
 15
 【输出样例】
 15=2+2+11
 15=3+5+7
 15=5+5+5
#include <bits/stdc++.h>
using namespace std; 
// 判断是否为素数的函数  
bool isPrime(int num) {  if (num <= 1) return false;  if (num == 2) return true;  if (num % 2 == 0) return false;  for (int i = 3; i < num; i += 1) {  if (num % i == 0) return false;  }  return true;  
}/*** 求解哥德巴赫猜想  * /
void goldbachConjecture(int oddNum) {  //取oddNum前三分之一段的数,因2是质数故从2开始for (int i = 2; i <= oddNum / 3; ++i) {  //i第一个质数//取剩下的前半段数for (int j = i; j <= (oddNum - i) / 2; ++j) {  //j第二个质数//求第三个质数kint k = oddNum - i - j;  //三个数均为素数时,满足要求if (isPrime(i) && isPrime(j) && isPrime(k)) {  //按题目要求输出cout << oddNum << "=" << i << "+" << j << "+" << k << endl;  }  }  }  
}  int main() {  int oddNum;  //输入大于9的奇数cin >> oddNum;  if (oddNum <= 9 || oddNum % 2 == 0) {  cout << "输入错误,请输入一个大于9的奇数." << endl;  return 1;  }  goldbachConjecture(oddNum);  return 0;  
}
 
三、打印成绩单
【试题描述】
 输入 N 个同学的语文成绩, 算出总分, 打印出成绩单
 【输入要求】
 N 个同学的成绩
 【输出要求】
 N 个同学的成绩及总分。
 【输入样例】
 5
 98 78 98 65 90
 【输出样例】
 total:429
 98
 78
 98
 65
 90
#include <bits/stdc++.h>
using namespace std;  
/**输入 N 个同学的语文成绩, 算出总分, 打印出成绩单*/
int main() {  int n;  cin >> n; // 读取同学的数量  int scores[n]; // 创建一个存储成绩的数组  int total = 0; // 用于计算总分的变量  // 读取每个同学的成绩  for (int i = 0; i < n; ++i) {  cin >> scores[i];  //将每个成绩相加,得到总分total = total+ scores[i]; }  // 打印总分  cout << "total:" << total << endl;  // 打印每个同学的成绩  for (int i = 0; i < n; ++i) { cout << scores[i] << endl;  }  return 0;  
}
 
四、成绩输入输出
【试题描述】
 全班 n 个同学的成绩需要按学号读入计算机并输出, 请编程实现。
 【输入要求】
 两行, 第一行为一个正整数 n, 第二行为 n 个实数。
 【输出要求】
 n 行, 包括所有同学的成绩, 每行包括学号和成绩, 之间用一个“: ” 分隔, 成绩保留一
 位小数。
 【输入样例】
 5
 92 97.5 93 87 89
 【输出样例】
 1: 92.0
 2: 97.5
 3: 93.0
 4: 87.0
 5: 89.0
#include <bits/stdc++.h>  
using namespace std;  
/**全班 n 个同学的成绩需要按学号读入计算机并输出* @return */
int main() {  int n;  cin >> n; // 读取学生数量  double scores[n]; // 创建包含n个元素的double类型数组用于存储成绩  for (int i = 0; i < n; ++i) {  cin >> scores[i]; // 读取每个学生的成绩  }  // 遍历数组并输出每个学生的学号和成绩  for (int i = 0; i < n; ++i) {  //fixed确保了使用固定小数点格式,而setprecision(1)则设置了小数点后要显示的位数cout << (i + 1) << ": " << fixed << setprecision(1) << scores[i] << endl;  }  return 0;  
}
 
五、数组输出奇数位偶数位
【试题描述】
 对输入的数据分两行输出, 第一行为输入顺序的奇数位置数据, 第二行为输入顺序的偶数位置数据。
 【输入要求】
 共两行。
 第一行为整数 n。
 第二行为 n 个整数。
 【输出要求】
 两行。
 第一行为奇数位置的数。
 第二行为偶数位置的数。
 注意: 每个元素右边都有一个空格。
 【输入样例】
 9
 1 5 4 7 8 5 6 9 3
 【输出样例】
 1 4 8 6 3
 5 7 5 9
#include <bits/stdc++.h>  
using namespace std;  
/**
* 对输入的数据分两行输出, 第一行为输入顺序的奇数位置数据, 第二行为输入顺序的偶数位置数据。
**/
int main() {  int n;  cin >> n; // 读取整数n  int nums[n]; // 创建一个大小为n的数组来存储整数  for (int i = 0; i < n; ++i) {  cin >> nums[i]; // 读取整数并存入数组}  // 输出奇数位置的数  for (int i = 0; i < n; i =i+ 2) {  cout << nums[i];  if ((i + 2) < n) {  cout << " "; // 如果不是最后一个数,则输出一个空格  }  }  cout << endl; // 换行  // 输出偶数位置的数  for (int i = 1; i < n; i += 2) {  cout << nums[i];  if (i + 2 < n) {  cout << " "; // 如果不是最后一个数,则输出一个空格  }  }  cout << endl; // 换行  return 0;  
}
