From f17722dd860a10a748f6666aede4aa2da5b293a8 Mon Sep 17 00:00:00 2001
From: zhangzc
Date: Mon, 29 Nov 2021 18:08:18 +0800
Subject: [PATCH] update dailycode pipline data
---
.../1.cpp/10.exercises/solution.md" | 60 ++++++-
.../1.cpp/11.exercises/solution.md" | 105 ++++++++----
.../1.cpp/12.exercises/solution.md" | 144 +++++++++++-----
.../1.cpp/13.exercises/solution.md" | 99 ++++++++---
.../1.cpp/14.exercises/solution.md" | 118 ++++++++++----
.../1.cpp/15.exercises/solution.md" | 136 ++++++++++++----
.../1.cpp/16.exercises/solution.md" | 87 +++++++---
.../1.cpp/17.exercises/solution.md" | 34 ++--
.../1.cpp/18.exercises/solution.md" | 130 +++++++++++----
.../1.cpp/19.exercises/solution.md" | 116 +++++++++----
.../1.cpp/2.exercises/solution.md" | 53 +++++-
.../1.cpp/20.exercises/solution.md" | 154 ++++++++++++++----
.../1.cpp/21.exercises/solution.md" | 69 ++++++--
.../1.cpp/22.exercises/solution.md" | 141 ++++++++++++----
.../1.cpp/23.exercises/solution.md" | 142 +++++++++++-----
.../1.cpp/24.exercises/solution.md" | 86 +++++++---
.../1.cpp/25.exercises/solution.md" | 47 +++++-
.../1.cpp/26.exercises/solution.md" | 58 +++++--
.../1.cpp/27.exercises/solution.md" | 90 +++++++---
.../1.cpp/28.exercises/solution.md" | 102 +++++++++---
.../1.cpp/3.exercises/solution.md" | 31 +++-
.../1.cpp/4.exercises/solution.md" | 41 ++++-
.../1.cpp/5.exercises/solution.md" | 64 +++++++-
.../1.cpp/6.exercises/solution.md" | 38 ++++-
.../1.cpp/7.exercises/solution.md" | 39 ++++-
.../1.cpp/8.exercises/solution.md" | 36 +++-
.../1.cpp/9.exercises/solution.md" | 50 +++++-
27 files changed, 1741 insertions(+), 529 deletions(-)
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/solution.md"
index ca502cbb7..0eec75f17 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/solution.md"
@@ -3,6 +3,42 @@
给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。输入首先给出正整数N,即员工总人数;
随后给出N个整数,即每个员工的工龄,范围在[0, 99]。其中,0-9为第1个工龄段,10-19为第2个工龄段,…,90-99为第10个工龄段。按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+int main()
+{
+ int i,n,a[11]= {0},x;
+ scanf("%d",&n);
+ for(i=0; i9&&x<=19)
+ a[2]++;
+ else if(x>19&&x<=29)
+ a[3]++;
+ else if(x>29&&x<=39)
+ a[4]++;
+ else if(x>39&&x<=49)
+ a[5]++;
+ else if(x>49&&x<=59)
+ a[6]++;
+ else if(x>59&&x<=69)
+ a[7]++;
+ else if(x>69&&x<=79)
+ a[8]++;
+ else if(x>79&&x<=89)
+ a[9]++;
+ else
+ a[10]++;
+ }
+ ________________
+}
+```
+
## template
```cpp
@@ -46,7 +82,11 @@ int main()
## 答案
```cpp
-
+for(i=1;i<=10;i++){
+ if(a[i]>0){
+ printf("%d-%d:%d\n",i*10-10,i*10-1,a[i]);
+ }
+}
```
## 选项
@@ -54,17 +94,29 @@ int main()
### A
```cpp
-
+for(i=0;i<=10;i++){
+ if(a[i]>0){
+ printf("%d-%d:%d\n",i*10-10,i*10-1,a[i]);
+ }
+}
```
### B
```cpp
-
+for(i=1;i<=10;i++){
+ if(a[i]>0){
+ printf("%d-%d:%d\n",i*10,i-1,a[i]);
+ }
+}
```
### C
```cpp
-
+for(i=0;i<=10;i++){
+ if(a[i]>0){
+ printf("%d-%d:%d\n",i*10,i-1,a[i]);
+ }
+}
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/solution.md"
index de5427ef2..0bf09e871 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/solution.md"
@@ -2,40 +2,86 @@
有一分数序列:2/1,-3/2,5/3,-8/5,13/8,-21/13,…, 由用户输入项目数N,求这个数列的前N 项之和
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+#include
+int main()
+{
+ int n;
+ scanf("%d", &n);
+ int i;
+ double a1 = 2, b1 = 1;
+ double a2 = 3, b2 = 2;
+ double sum = a1 / b1 - a2 / b2;
+ if (n == 1)
+ printf("%f\n", a1 / b1);
+ else if (n == 2)
+ printf("%f\n", sum);
+ else
+ {
+ for (i = 0; i < n - 2; i++)
+ {
+ double exp = a2 / b2;
+ _____________________
+ sum += exp;
+ double a = a1 + a2;
+ double b = b1 + b2;
+ a1 = a2;
+ b1 = b2;
+ a2 = a;
+ b2 = b;
+ }
+ printf("%f\n", sum);
+ }
+ return 0;
+}
+```
+
## template
```cpp
-#include
-#include
-int main(){
- int n;
- scanf("%d",&n);
- int i;
- double a1 = 2, b1 = 1;
- double a2 = 3, b2 = 2;
- double sum = a1/b1 - a2/b2;
- if(n==1) printf("%f\n",a1/b1);
- else if (n==2) printf("%f\n",sum);
- else{
- for(i = 0;i
+#include
+int main()
+{
+ int n;
+ scanf("%d", &n);
+ int i;
+ double a1 = 2, b1 = 1;
+ double a2 = 3, b2 = 2;
+ double sum = a1 / b1 - a2 / b2;
+ if (n == 1)
+ printf("%f\n", a1 / b1);
+ else if (n == 2)
+ printf("%f\n", sum);
+ else
+ {
+ for (i = 0; i < n - 2; i++)
+ {
+ double exp = a2 / b2;
+ if (i % 2 == 0)
+ exp *= -1;
+ sum += exp;
+ double a = a1 + a2;
+ double b = b1 + b2;
+ a1 = a2;
+ b1 = b2;
+ a2 = a;
+ b2 = b;
+ }
+ printf("%f\n", sum);
+ }
+ return 0;
}
```
## 答案
```cpp
-
+if (i % 2 == 0)
+ exp *= -1;
```
## 选项
@@ -43,17 +89,20 @@ int main(){
### A
```cpp
-
+if (i % 2 == 0)
+ exp = -1;
```
### B
```cpp
-
+if (i / 2 == 0)
+ exp *= -1;
```
### C
```cpp
-
+if (i / 2 == 0)
+ exp = -1;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/solution.md"
index d97d0ae2b..60f309a0b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/solution.md"
@@ -1,56 +1,106 @@
# 输入一个正整数n(代表图形的行数),输出如样例形式的图形。
输入:7
+
输出:
- D D
- CD DC
- BCD DCB
- ABCDDCBA
- BCD DCB
- CD DC
- D D
+
+```json
+ D D
+ CD DC
+ BCD DCB
+ ABCDDCBA
+ BCD DCB
+ CD DC
+ D D
+```
+
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+#include
+#include
+#include
+#include
+using namespace std;
+int main()
+{
+ int n;
+ cin >> n;
+ vector a(n, ""), b(n, "");
+ int m = (n + 1) / 2;
+ int p = 0;
+ for (int i = m - 1; i >= 0; i--)
+ {
+ for (int j = 0; j <= i; j++)
+ a[i].push_back('A' + j + p);
+ b[i] = a[i];
+ reverse(b[i].begin(), b[i].end());
+ ___________________
+ p++;
+ }
+ p = 0;
+ for (int i = n - 1; i >= m; i--)
+ {
+ a[i] = a[p];
+ b[i] = b[p++];
+ }
+ for (int i = 0; i < n; i++)
+ cout << a[i] << b[i] << endl;
+ return 0;
+}
+```
+
## template
```cpp
-#include
-#include
-#include
-#include
-#include
+#include
+#include
+#include
+#include
+#include
using namespace std;
-int main() {
- int n;
- cin>>n;
- vector a(n,""),b(n,"");
- int m=(n+1)/2;
- int p=0;
- for(int i=m-1;i>=0;i--){
- for(int j=0;j<=i;j++)
- a[i].push_back('A'+j+p);
- b[i]=a[i];
- reverse(b[i].begin(),b[i].end());
- for(int j=i+1;j=m;i--){
- a[i]=a[p];
- b[i]=b[p++];
- }
- for(int i=0;i> n;
+ vector a(n, ""), b(n, "");
+ int m = (n + 1) / 2;
+ int p = 0;
+ for (int i = m - 1; i >= 0; i--)
+ {
+ for (int j = 0; j <= i; j++)
+ a[i].push_back('A' + j + p);
+ b[i] = a[i];
+ reverse(b[i].begin(), b[i].end());
+ for (int j = i + 1; j < m; j++)
+ {
+ a[i] += " ";
+ b[i] = " " + b[i];
+ }
+ p++;
+ }
+ p = 0;
+ for (int i = n - 1; i >= m; i--)
+ {
+ a[i] = a[p];
+ b[i] = b[p++];
+ }
+ for (int i = 0; i < n; i++)
+ cout << a[i] << b[i] << endl;
+ return 0;
}
```
## 答案
```cpp
-
+for (int j = i + 1; j < m; j++)
+{
+ a[i] += " ";
+ b[i] = " " + b[i];
+}
```
## 选项
@@ -58,17 +108,29 @@ int main() {
### A
```cpp
-
+for (int j = i + 1; j < m; j++)
+{
+ a[i] += " ";
+ b[i] += " ";
+}
```
### B
```cpp
-
+for (int j = i; j <= m; j++)
+{
+ a[i] += " ";
+ b[i] = " " + b[i];
+}
```
### C
```cpp
-
+for (int j = i; j <= m; j++)
+{
+ a[i] += " ";
+ b[i] += " ";
+}
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/solution.md"
index 52d1e3b1d..7ed51ed5b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/solution.md"
@@ -6,43 +6,78 @@
输出格式:
在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
- 6 2
- 1 2 3 4 5 6
+
+```json
+6 2
+1 2 3 4 5 6
+```
+
输出样例:
- 5 6 1 2 3 4
+```json
+5 6 1 2 3 4
+```
+
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+int main()
+{
+ int n, m, a[1000];
+ scanf("%d %d", &n, &m);
+ m = m % n;
+ int count = m;
+ ______________
+ for (int i = 0; i < count; i++)
+ scanf("%d", &a[i]);
+ int first = 1;
+ for (int i = 0; i < n; i++)
+ {
+ if (!first)
+ printf(" ");
+ printf("%d", a[i]);
+ first = 0;
+ }
+}
+```
## template
```cpp
-#include
+#include
int main()
{
- int n,m,a[1000];
- scanf("%d %d",&n,&m);
- m = m % n;
- int count=m;
- while(m在一个数组A中存放100个数据,用子函数判断该数组中哪些是素数,并统计该素数的个数,在主函数中输出该素数的个数
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+#include
+int isPrime(int n)
+{
+ int i;
+ if (n < 2)
+ return 0;
+ _______________
+ return 1;
+}
+int CountPrime(int a[], int size)
+{
+ int i = 0, count = 0;
+ for (i = 0; i < size; i++)
+ {
+ if (isPrime(a[i]))
+ {
+ printf("%d ", a[i]);
+ count++;
+ if (count % 10 == 0)
+ printf("\n");
+ }
+ }
+ printf("\n");
+ return count;
+}
+int main()
+{
+ int a[100], i, count = 0;
+ for (i = 0; i < 100; i++)
+ a[i] = rand() % 1000;
+ printf("素数的个数:%d\n", CountPrime(a, 100));
+ return 0;
+}
+```
+
## template
```cpp
@@ -9,45 +48,50 @@
#include
int isPrime(int n)
{
- int i = 2;
- if(n<2) return 0;
- for (i=2;i商品优惠计算器
-使用if语句编程实现输入购货金额,输出实际付款金额。购货折扣率如下:
-购货金额≤500元 不打折
-500元<购货金额≤1000元 9折
+使用if语句编程实现输入购货金额,输出实际付款金额。购货折扣率如下:
+购货金额≤500元 不打折
+500元<购货金额≤1000元 9折
1000元<购货金额 8折
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+#include
+#include
+#include
+#include
+#include
+int main()
+{
+ float money = 0.0;
+ float pay = 0.0;
+ bool run = true;
+ while (run)
+ {
+ printf("\n请输入购货金额:\n");
+ scanf("%f", &money);
+ ____________________
+ }
+ return 0;
+}
+```
+
## template
```cpp
@@ -17,36 +41,49 @@
#include
int main()
{
- float money=0.0;
- float pay=0.0;
- bool run = true;
- while(run)
- {
- printf("\n请输入购货金额:\n");
- scanf("%f", &money);
- if(money >1000)
- {
- pay=money*0.8;
- printf("打八折,应付金额:%.2f\n",pay);
- }
- else if((money >500)&&(money <=1000))
- {
- pay=money*0.9;
- printf("打九折,应付金额:%.2f\n",pay);
- }
- else if(money <=500)
- {
- printf("不打折,应付金额:%.2f\n",money);
- }
- }
- return 0;
+ float money = 0.0;
+ float pay = 0.0;
+ bool run = true;
+ while (run)
+ {
+ printf("\n请输入购货金额:\n");
+ scanf("%f", &money);
+ if (money > 1000)
+ {
+ pay = money * 0.8;
+ printf("打八折,应付金额:%.2f\n", pay);
+ }
+ else if ((money > 500) && (money <= 1000))
+ {
+ pay = money * 0.9;
+ printf("打九折,应付金额:%.2f\n", pay);
+ }
+ else if (money <= 500)
+ {
+ printf("不打折,应付金额:%.2f\n", money);
+ }
+ }
+ return 0;
}
```
## 答案
```cpp
-
+if (money > 1000)
+{
+ pay = money * 0.8;
+ printf("打八折,应付金额:%.2f\n", pay);
+}
+else if ((money > 500) && (money <= 1000))
+{
+ pay = money * 0.9;
+ printf("打九折,应付金额:%.2f\n", pay);
+}
+else if (money <= 500)
+{
+ printf("不打折,应付金额:%.2f\n", money);
+}
```
## 选项
@@ -54,17 +91,56 @@ int main()
### A
```cpp
-
+if (money > 1000)
+{
+ pay = money * 0.8;
+ printf("打八折,应付金额:%.2f\n", pay);
+}
+elif ((money > 500) && (money <= 1000))
+{
+ pay = money * 0.9;
+ printf("打九折,应付金额:%.2f\n", pay);
+}
+elif (money <= 500)
+{
+ printf("不打折,应付金额:%.2f\n", money);
+}
```
### B
```cpp
-
+if (money > 1000)
+{
+ pay = money * 0.8;
+ printf("打八折,应付金额:%.2f\n", pay);
+}
+else ((money > 500) && (money <= 1000))
+{
+ pay = money * 0.9;
+ printf("打九折,应付金额:%.2f\n", pay);
+}
+else (money <= 500)
+{
+ printf("不打折,应付金额:%.2f\n", money);
+}
```
### C
```cpp
-
+if (money > 1000):
+{
+ pay = money * 0.8;
+ printf("打八折,应付金额:%.2f\n", pay);
+}
+if ((money > 500) && (money <= 1000)):
+{
+ pay = money * 0.9;
+ printf("打九折,应付金额:%.2f\n", pay);
+}
+if (money <= 500):
+{
+ printf("不打折,应付金额:%.2f\n", money);
+}
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/solution.md"
index d0066de96..2ef04c3ce 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/solution.md"
@@ -1,45 +1,79 @@
# 移动数组中的元素
题目描述
+
将一维数组中的元素循环左移 k 个位置
+
输入描述
+
第 1 行是一维数组元素的个数 n (数组大小)
+
第 2 行是一个整数 k , 表示移动的位置
+
下面 n 行为数组的元素个数
+
输出描述
+
输出 n 行,表示移动后的数字
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+#define N 10000
+int main()
+{
+ int k, a[N], b[N], n, t, w, i;
+ scanf("%d", &n);
+ scanf("%d", &k);
+ for (i = 0; i < n; i++)
+ scanf("%d", &a[i]);
+ for (i = 0; i < k % n; i++)
+ b[i] = a[i];
+ for (i = 0; i < n; i++)
+ {
+ __________________
+ }
+ for (i = 0; i < n; i++)
+ printf("%d\n", a[i]);
+ return 0;
+}
+```
+
## template
```cpp
-#include
+#include
#define N 10000
int main()
{
- int k,a[N],b[N],n,t,w,i;
- scanf("%d",&n);
- scanf("%d",&k);
- for(i=0;i要求:
-1、必须包含循环结构、顺序结构、选择分支结构。
-2、必须包含数组
-3、必须包含一个以上函数
-4、可以包含方针
+请你直接选择出正确答案
## template
```cpp
#include
using namespace std;
-void search1(){
- int i,t=0;
- for(i=10000;i<=99999;i++){
- if(i%3==0&&i%10==6)
- t++;
- }
- cout<一个整数的序列,要求对其重新排序。排序要求:
-1.奇数在前,偶数在后;
-2.奇数按从大到小排序;
-3.偶数按从小到大排序。
-输入一行,包含整数个数n, n个整数值,彼此以一个空格分开。
-按照要求排序后输出一行,包含排序后的n 个整数。
-
+输入n(1≤n≤10)个整数,用冒泡排序法对其从小到大排序,共进行n-1趟,要求输出每一趟的排序情况
-## template
+输入格式:
+
+先输入个数n,再输入n个整数。
+
+输出格式:
+
+第1趟结果
+
+第2趟结果
+
+......
+
+第n-1趟结果
+
+每个数后面有一个空格,每个序列占一行。
+
+输入样例:
+
+```json
+5
+4 2 3 2 1
+```
+
+输出样例:
+
+```json
+2 3 2 1 4
+2 2 1 3 4
+2 1 2 3 4
+1 2 2 3 4
+```
+
+以下程序实现了这一功能,请你补全空白处内容:
```cpp
-#include
-#include
-using namespace std;
-bool cmp(int a, int b){
- int x = a % 2;
- int y = b % 2;
- if(x == y)
- if(x == 0)
- return a < b;
- else
- return a > b;
- else
- return x > y;
+#include "stdio.h"
+int main()
+{
+ int arr[10];
+ int n;
+ scanf("%d", &n);
+ for (int i = 0; i < n; i++)
+ scanf("%d", &arr[i]);
+ for (int i = 0; i < n - 1; i++)
+ {
+ for (int j = 0; j < n - i - 1; j++)
+ {
+ if (arr[j] > arr[j + 1])
+ {
+ ____________________
+ }
+ }
+ for (int j = 0; j < n; j++)
+ printf("%d ", arr[j]);
+ printf("\n");
+ }
+ return 0;
}
+```
+
+## template
+
+```cpp
+#include "stdio.h"
int main()
{
- int n, i;
- cin >> n;
- int a[n];
- for(i = 0; i < n; i++)
- cin >> a[i];
- sort(a, a+n, cmp);
- for(i = 0; i < n; i++)
- cout << a[i] << " ";
+ int arr[10];
+ int n;
+ scanf("%d", &n);
+ for (int i = 0; i < n; i++)
+ scanf("%d", &arr[i]);
+ for (int i = 0; i < n - 1; i++)
+ {
+ for (int j = 0; j < n - i - 1; j++)
+ {
+ if (arr[j] > arr[j + 1])
+ {
+ int t = arr[j];
+ arr[j] = arr[j + 1];
+ arr[j + 1] = t;
+ }
+ }
+ for (int j = 0; j < n; j++)
+ printf("%d ", arr[j]);
+ printf("\n");
+ }
+ return 0;
}
```
## 答案
```cpp
-
+int t = arr[j];
+arr[j] = arr[j + 1];
+arr[j + 1] = t;
```
## 选项
@@ -49,17 +105,23 @@ int main()
### A
```cpp
-
+int t = arr[j];
+arr[j + 1] = t;
+arr[j] = arr[j + 1];
```
### B
```cpp
-
+arr[j] = arr[j + 1];
+int t = arr[j];
+arr[j + 1] = t;
```
### C
```cpp
-
+int t = arr[j];
+arr[j + 1] = arr[j];
+arr[j] = t;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/solution.md"
index 3fe84a7be..b2d4d445a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/solution.md"
@@ -2,48 +2,90 @@
给出一个由O和X组成的串,长度为1~80,统计得分,每个O的得分为目前连续出现的O的个数,X的得分为0,例如OOXXO的得分为1+2+0+0+1.
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include "stdlib.h"
+#include "string.h"
+#include "stdio.h"
+int main()
+{
+ char s[85];
+ int score = 0, x;
+ scanf("%s", &s);
+ for (int i = 0; s[i]; i++)
+ {
+ if (s[i] == 'X')
+ score += 0;
+ if (s[i] == 'O')
+ {
+ int temp = 1;
+ if (i == 0)
+ score += 1;
+ else
+ {
+ x = i;
+ while (x > 0)
+ {
+ ________________
+ }
+ score += temp;
+ }
+ }
+ }
+ printf("%d\n", score);
+ return 0;
+}
+```
+
## template
```cpp
-#include"stdlib.h"
-#include"string.h"
-#include"stdio.h"
+#include "stdlib.h"
+#include "string.h"
+#include "stdio.h"
int main()
{
- char s[85];
- int score = 0,x;
- scanf("%s",&s);
- for (int i = 0;s[i];i++)
- {
- if (s[i] == 'X')
- score += 0;
- if (s[i] == 'O')
- {
- int temp = 1;
- if (i == 0)score += 1;
- else
- {
- x=i;
- while (x > 0)
- {
- if (s[x - 1] == 'O')temp++;
- else break;
- x--;
- }
- score += temp;
- }
- }
- }
- printf("%d\n", score);
- system("pause");
- return 0;
+ char s[85];
+ int score = 0, x;
+ scanf("%s", &s);
+ for (int i = 0; s[i]; i++)
+ {
+ if (s[i] == 'X')
+ score += 0;
+ if (s[i] == 'O')
+ {
+ int temp = 1;
+ if (i == 0)
+ score += 1;
+ else
+ {
+ x = i;
+ while (x > 0)
+ {
+ if (s[x - 1] == 'O')
+ temp++;
+ else
+ break;
+ x--;
+ }
+ score += temp;
+ }
+ }
+ }
+ printf("%d\n", score);
+ return 0;
}
```
## 答案
```cpp
-
+if (s[x - 1] == 'O')
+ temp++;
+else
+ break;
+x--;
```
## 选项
@@ -51,17 +93,23 @@ int main()
### A
```cpp
-
+if (s[x - 1] == 'O')
+ temp++;
+else
+ break;
```
### B
```cpp
-
+if (s[x - 1] == 'O')
+ temp++;
```
### C
```cpp
-
+if (s[x - 1] == 'O')
+ temp++;
+x--;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/solution.md"
index 0a542e0f0..310f99ce1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/solution.md"
@@ -1,12 +1,37 @@
# 一个班有10个同学,通过键盘输入成绩,并打印输出,每行输出5个同学的成绩。并求出平均成绩,最高分、最低分并输出。
一个班有10个同学,通过键盘输入成绩,
-并打印输出,每行输出5个同学的成绩。并求出平均成绩,最高分、最低分并输出。算法分析:
-(1)定义一个数组用来存放10个成绩数据。
-(2)用循环结构实现成绩输入;
-(3)用循环结构实现成绩输出,并控制换行;
+并打印输出,每行输出5个同学的成绩。并求出平均成绩,最高分、最低分并输出。算法分析:
+(1)定义一个数组用来存放10个成绩数据。
+(2)用循环结构实现成绩输入;
+(3)用循环结构实现成绩输出,并控制换行;
(4)使用循环结构求平均成绩、最高分、最低分并输出。
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+int main(){
+ int x,i,max=0,min=0;
+ double sum=0,ave=0;
+ int a[10];
+ for(i=0;i<10;i++){
+ scanf("%d",&a[i]);
+ if(i==0)
+ min = a[i];
+ sum+=a[i];
+ ____________
+ }
+ ave=sum/10;
+ for(i=0;i<5;i++)
+ printf("%d ",a[i]);
+ printf("\n");
+ for(i=5;i<10;i++)
+ printf("%d ",a[i]);
+ printf("平均成绩%f,最高分%d,最低分%d ",ave,max,min);
+}
+```
+
## template
```cpp
@@ -38,7 +63,10 @@ int main(){
## 答案
```cpp
-
+if(maxa[i])
+ min=a[i];
```
## 选项
@@ -46,17 +74,26 @@ int main(){
### A
```cpp
-
+if(max>a[i])
+ max=a[i];
+if(mina[i])
+ min=a[i - 1];
```
### C
```cpp
-
+if(maxa[i])
+ max=a[i];
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/solution.md"
index bf7e69104..b1a078a9a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/solution.md"
@@ -23,49 +23,106 @@ a,b均为自然数
1
WA
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+int main()
+{
+ int a;
+ int b;
+ char operation;
+ int num;
+ while (scanf("%d", &a) != EOF)
+ {
+ scanf("%c", &operation);
+ scanf("%d", &b);
+ if (operation == '+')
+ {
+ num = a + b;
+ printf("%d\n", num);
+ }
+ else if (operation == '-')
+ {
+ num = a - b;
+ printf("%d\n", num);
+ }
+ else if (operation == '*')
+ {
+ num = a * b;
+ printf("%d\n", num);
+ }
+ _________________________
+ else
+ {
+ printf("%s\n", "WA");
+ }
+ }
+ return 0;
+}
+```
+
## template
```cpp
-#include
+#include
int main()
{
- int a;
- int b;
- char operation;
- int num;
- while (scanf("%d", &a) != EOF)
- {
- scanf("%c", &operation);
- scanf("%d", &b);
- if (operation == '+')
- {
- num = a + b;
- printf("%d\n", num);
- }
- else if (operation == '-') {
- num = a - b;
- printf("%d\n", num);
- }
- else if (operation == '*') {
- num = a * b;
- printf("%d\n", num);
- }
- else if (operation == '/' && b != 0) {
- num = a / b;
- printf("%d\n", num);
- }
- else {
- printf("%s\n", "WA");
- }
- }
- return 0;
+ int a;
+ int b;
+ char operation;
+ int num;
+ while (scanf("%d", &a) != EOF)
+ {
+ scanf("%c", &operation);
+ scanf("%d", &b);
+ if (operation == '+')
+ {
+ num = a + b;
+ printf("%d\n", num);
+ }
+ else if (operation == '-')
+ {
+ num = a - b;
+ printf("%d\n", num);
+ }
+ else if (operation == '*')
+ {
+ num = a * b;
+ printf("%d\n", num);
+ }
+ else if (operation == '/' && b != 0)
+ {
+ num = a / b;
+ printf("%d\n", num);
+ }
+ else if (operation == '%' && b != 0)
+ {
+ num = a % b;
+ printf("%d\n", num);
+ }
+ else
+ {
+ printf("%s\n", "WA");
+ }
+ }
+ return 0;
}
```
## 答案
```cpp
-
+else if (operation == '/' && b != 0)
+{
+ num = a / b;
+ printf("%d\n", num);
+}
+else if (operation == '%' && b != 0)
+{
+ num = a % b;
+ printf("%d\n", num);
+}
```
## 选项
@@ -73,17 +130,44 @@ int main()
### A
```cpp
-
+else if (operation == '/')
+{
+ num = a / b;
+ printf("%d\n", num);
+}
+else if (operation == '%')
+{
+ num = a % b;
+ printf("%d\n", num);
+}
```
### B
```cpp
-
+else if (operation == '/' && b != 0)
+{
+ num = a / b;
+ printf("%d\n", num);
+}
+else if (operation == '%')
+{
+ num = a % b;
+ printf("%d\n", num);
+}
```
### C
```cpp
-
+else if (operation == '/')
+{
+ num = a / b;
+ printf("%d\n", num);
+}
+else if (operation == '%' && b != 0)
+{
+ num = a % b;
+ printf("%d\n", num);
+}
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/solution.md"
index a6f926b06..8a8a22f45 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/solution.md"
@@ -1,15 +1,47 @@
# 输入两个小写英语字母后, 输出两个字母的差
两个小写字母的差用整数输出。
+
但是,输入小写以外的文字就结束程序。
+
比较两个字母的部分用diff这个名字的函数书写。执行结果
+
请输入两个小写:a b
+
字母a和字母b的区别是1。
+
请输入两个小写:f b
-字母f和字母b的差异是4。
+
+字母f和字母b的差是4。
+
请输入两个小写:0 a
+
退出程序。
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+using namespace std;
+int diff(char ch1, char ch2)
+{
+ __________________
+}
+int main()
+{
+ char a, b;
+ while (1)
+ {
+ cout << "请输入两个小写:";
+ cin >> a >> b;
+ if (a > 'z' || a < 'a' || b > 'z' || b < 'a')
+ break;
+ cout << "文字" << a << "和文字" << b << "的差是" << diff(a, b) << "。\n";
+ }
+ return 0;
+}
+```
+
## template
```cpp
@@ -17,26 +49,30 @@
using namespace std;
int diff(char ch1, char ch2)
{
- if (ch1 > ch2) return ch1 - ch2; else return ch2 - ch1;
+ if (ch1 > ch2)
+ return ch1 - ch2;
+ else
+ return ch2 - ch1;
}
int main()
{
- char a, b;
- while (1)
- {
- cout << "请输入两个小写:";
- cin >> a >> b;
- if (a > 'z' || a < 'a' || b > 'z' || b < 'a') break;
- cout << "文字" << a << "和文字" << b << "的差异是" << diff(a, b) << "。\n";
- }
- return 0;
+ char a, b;
+ while (1)
+ {
+ cout << "请输入两个小写:";
+ cin >> a >> b;
+ if (a > 'z' || a < 'a' || b > 'z' || b < 'a')
+ break;
+ cout << "文字" << a << "和文字" << b << "的差是" << diff(a, b) << "。\n";
+ }
+ return 0;
}
```
## 答案
```cpp
-
+return abs(ch1 - ch2);
```
## 选项
@@ -44,17 +80,20 @@ int main()
### A
```cpp
-
+return ch1 - ch2;
```
### B
```cpp
-
+return ch2 - ch1;
```
### C
```cpp
-
+if (ch1 < ch2)
+ return ch1 - ch2;
+else
+ return ch2 - ch1;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/solution.md"
index 36646df5b..1db4bcfdf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/solution.md"
@@ -1,54 +1,110 @@
# 排序
试题描述
- 由键盘上输入n个整数,请将这些数从大到小排序,然后输出排序后的数列。
+
+由键盘上输入n个整数,请将这些数从大到小排序,然后输出排序后的数列。
+
输入
- 输入包含两行:
- 第一行是n(1 <= n <= 1000)。
- 第二行是n个整数,邻近两数之间用一个空格隔开。
+
+输入包含两行:
+
+第一行是n(1 <= n <= 1000)。
+
+第二行是n个整数,邻近两数之间用一个空格隔开。
+
输出
- 输出排序后的n个整数,邻近两数之间用一个空格隔开。
+
+输出排序后的n个整数,邻近两数之间用一个空格隔开。
+
输入示例
- 5
- 8 2 5 1 2
+
+```json
+5
+8 2 5 1 2
+```
+
输出示例
- 8 5 2 2 1
+
+```json
+8 5 2 2 1
+```
+
数据范围
- 输入和输出均为int范围的整数
+
+输入和输出均为int范围的整数
+
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+using namespace std;
+int main()
+{
+ int n, tmp;
+ cin >> n;
+ int *a = new int[n];
+ for (int i = 0; i < n; i++)
+ cin >> a[i];
+ for (int i = 0; i < n - 1; i++)
+ {
+ for (int j = i + 1; j < n; j++)
+ {
+ __________________
+ }
+ }
+ for (int i = 0; i < n; i++)
+ {
+ cout << a[i];
+ if (i != n - 1)
+ cout << " ";
+ }
+ return 0;
+}
+```
## template
```cpp
- #include
+#include
using namespace std;
-int main() {
- int n,tmp;
- cin >> n;
- int *a = new int[n];
- for (int i = 0; i < n; i++)
- cin >> a[i];
- for (int i = 0; i < n - 1; i++) {
- for (int j = i + 1; j < n; j++) {
- if (a[i] < a[j]) {
- tmp = a[i];
- a[i] = a[j];
- a[j] = tmp;
- }
- }
- }
- for (int i = 0; i < n; i++) {
- cout << a[i];
- if (i != n - 1)
- cout << " ";
- }
- return 0;
+int main()
+{
+ int n, tmp;
+ cin >> n;
+ int *a = new int[n];
+ for (int i = 0; i < n; i++)
+ cin >> a[i];
+ for (int i = 0; i < n - 1; i++)
+ {
+ for (int j = i + 1; j < n; j++)
+ {
+ if (a[i] < a[j])
+ {
+ tmp = a[i];
+ a[i] = a[j];
+ a[j] = tmp;
+ }
+ }
+ }
+ for (int i = 0; i < n; i++)
+ {
+ cout << a[i];
+ if (i != n - 1)
+ cout << " ";
+ }
+ return 0;
}
```
## 答案
```cpp
-
+if (a[i] < a[j])
+{
+ tmp = a[i];
+ a[i] = a[j];
+ a[j] = tmp;
+}
```
## 选项
@@ -56,17 +112,32 @@ int main() {
### A
```cpp
-
+if (a[i] > a[j])
+{
+ tmp = a[i];
+ a[i] = a[j];
+ a[j] = tmp;
+}
```
### B
```cpp
-
+if (a[i] < a[j])
+{
+ a[i] = a[j];
+ tmp = a[i];
+ a[j] = tmp;
+}
```
### C
```cpp
-
+if (a[i] > a[j])
+{
+ a[i] = a[j];
+ tmp = a[i];
+ a[j] = tmp;
+}
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/solution.md"
index ad04f88c6..3ee1c04c3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/solution.md"
@@ -1,11 +1,57 @@
# 字符数组
-编写一个以两个字符数组作为输入的函数。
-如果第二个数组包含在第一个数组中,则函数返回第一个数组中第二个数组开始的第一个索引。
-如果第二个数组不被包含在第一个数组,然后函数应该return -1
-输入 [’c’,’a’,’l’,’l’,’i’,’n’,’g’] 和 [’a’,’l’,’l’] 就 return 1.
+
编写一个以两个字符数组作为输入的函数。
+如果第二个数组包含在第一个数组中,则函数返回第一个数组中第二个数组开始的第一个索引。
+如果第二个数组不被包含在第一个数组,然后函数应该return -1
+输入 [’c’,’a’,’l’,’l’,’i’,’n’,’g’] 和 [’a’,’l’,’l’] 就 return 1.
输入 [’c’,’a’,’l’,’l’,’i’,’n’,’g’] 和 [’a’,’n’] 就 return -1.
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+#include
+using namespace std;
+int main()
+{
+ char a[128], b[128];
+ int numA, numB;
+ cout << "请输入第一个数组元素个数:";
+ cin >> numA;
+ cout << "请输入第一个数组元素:";
+ for (int i = 0; i < numA; ++i)
+ cin >> a[i];
+ cin.clear();
+ cin.sync();
+ cout << "请输入第二个数组元素个数:";
+ cin >> numB;
+ cout << "请输入第二个数组元素:";
+ for (int i = 0; i < numB; ++i)
+ cin >> b[i];
+ int num = 0;
+ string index;
+ for (int j = 0; j < numB; j++)
+ {
+ for (int k = 0; k < numA; k++)
+ {
+ if (b[j] == a[k])
+ {
+ __________________
+ }
+ }
+ }
+ if (num == numB)
+ {
+ cout << "第二个数组包含在第一个数组中" << endl;
+ cout << "第一个数组中第二个数组开始的第一个索引为:" << index.substr(0, 1) << endl;
+ }
+ else
+ cout << "第二个数组不被包含在第一个数组";
+ system("pause");
+ return 0;
+}
+```
+
## template
```cpp
@@ -14,50 +60,52 @@
using namespace std;
int main()
{
- char a[128],b[128];
- int numA, numB;
- cout << "请输入第一个数组元素个数:";
- cin >> numA;
- cout << "请输入第一个数组元素:";
- for (int i = 0; i < numA; ++i)
- cin >> a[i];
- cin.clear();
- cin.sync();
- cout << "请输入第二个数组元素个数:";
- cin >> numB;
- cout << "请输入第二个数组元素:";
- for (int i = 0; i < numB; ++i)
- cin >> b[i];
- int num = 0;
- string index;
- for (int j = 0; j < numB; j++)
- {
- for (int k = 0; k < numA; k++)
- {
- if (b[j] == a[k])
- {
- index += to_string(k);
- num++;
- break;
- }
- }
- }
- if (num == numB)
- {
- cout << "第二个数组包含在第一个数组中" << endl;
- cout << "第一个数组中第二个数组开始的第一个索引为:" << index.substr(0,1) << endl;
- }
- else
- cout << "第二个数组不被包含在第一个数组";
- system("pause");
- return 0;
+ char a[128], b[128];
+ int numA, numB;
+ cout << "请输入第一个数组元素个数:";
+ cin >> numA;
+ cout << "请输入第一个数组元素:";
+ for (int i = 0; i < numA; ++i)
+ cin >> a[i];
+ cin.clear();
+ cin.sync();
+ cout << "请输入第二个数组元素个数:";
+ cin >> numB;
+ cout << "请输入第二个数组元素:";
+ for (int i = 0; i < numB; ++i)
+ cin >> b[i];
+ int num = 0;
+ string index;
+ for (int j = 0; j < numB; j++)
+ {
+ for (int k = 0; k < numA; k++)
+ {
+ if (b[j] == a[k])
+ {
+ index += to_string(k);
+ num++;
+ break;
+ }
+ }
+ }
+ if (num == numB)
+ {
+ cout << "第二个数组包含在第一个数组中" << endl;
+ cout << "第一个数组中第二个数组开始的第一个索引为:" << index.substr(0, 1) << endl;
+ }
+ else
+ cout << "第二个数组不被包含在第一个数组";
+ system("pause");
+ return 0;
}
```
## 答案
```cpp
-
+index += to_string(k);
+num++;
+break;
```
## 选项
@@ -65,17 +113,21 @@ int main()
### A
```cpp
-
+index += to_string(k);
+num++;
```
### B
```cpp
-
+index = to_string(k);
+num++;
```
### C
```cpp
-
+index = to_string(k);
+num++;
+break;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/solution.md"
index af1ad2842..82c56cf99 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/solution.md"
@@ -4,36 +4,64 @@
输入:B<回车>。
输出:B在第2个位置,其后面第四个字母是F
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+int main()
+{
+ char c, c2;
+ printf("输入:");
+ c = getchar();
+ int m = 0, n = 0;
+ if (c >= 'A' && c <= 'z')
+ {
+ m = c - 'A' + 1;
+ _____________________
+ }
+ if (n > 0)
+ printf("%c在第%d个位置,其后面第四个字母是%c\n", c, m, c2);
+ else
+ printf("%c在第%d个位置,其后面没有第四个字母\n", c, m);
+ return 0;
+}
+```
+
## template
```cpp
#include
-int main(){
- char c,c2;
- printf("输入:");
- c = getchar();
- int m=0,n=0;
- if(c>='A'&& c<='z')
- {
- m = c - 'A' + 1;
- if(m < 23)
- {
- c2 = c + 4;
- n = m+4;
- }
- }
- if(n > 0)
- printf("%c在第%d个位置,其后面第四个字母是%c\n",c,m,c2);
- else
- printf("%c在第%d个位置,其后面没有第四个字母\n",c,m);
- return 0;
+int main()
+{
+ char c, c2;
+ printf("输入:");
+ c = getchar();
+ int m = 0, n = 0;
+ if (c >= 'A' && c <= 'z')
+ {
+ m = c - 'A' + 1;
+ if (m < 23)
+ {
+ c2 = c + 4;
+ n = m + 4;
+ }
+ }
+ if (n > 0)
+ printf("%c在第%d个位置,其后面第四个字母是%c\n", c, m, c2);
+ else
+ printf("%c在第%d个位置,其后面没有第四个字母\n", c, m);
+ return 0;
}
```
## 答案
```cpp
-
+if (m < 23)
+{
+ c2 = c + 4;
+ n = m + 4;
+}
```
## 选项
@@ -41,17 +69,29 @@ int main(){
### A
```cpp
-
+if (m <= 23)
+{
+ c2 = c + 4;
+ n = m + 4;
+}
```
### B
```cpp
-
+if (m > 23)
+{
+ c2 = c + 4;
+ n = m + 4;
+}
```
### C
```cpp
-
+if (m >= 23)
+{
+ c2 = c + 4;
+ n = m + 4;
+}
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/solution.md"
index 8c41f83c1..dcad0a4dd 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/solution.md"
@@ -2,6 +2,41 @@
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中,数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+#include
+int oneNum(int x)
+{
+ int cnt = 0;
+ while(x)
+ {
+ ____________
+ }
+ return cnt;
+}
+int cmp(const void *a,const void*b)
+{
+ int al,bl;
+ int ret;
+ al = *(int*)a;
+ bl = *(int*)b;
+ ret = oneNum(al) - oneNum(bl);
+ return ret ? ret : al - bl;
+}
+int main()
+{
+ int s[]={1,2,3,5,6,7,8},i;
+ int len = sizeof(s)/sizeof(*s);
+ qsort(s,len,4,cmp);
+ for(i = 0 ; i < len ; i++)
+ {
+ printf("%d\n",s[i]);
+ }
+}
+```
+
## template
```cpp
@@ -41,7 +76,8 @@ int main()
## 答案
```cpp
-
+cnt++;
+x = x & (x - 1);
```
## 选项
@@ -49,17 +85,20 @@ int main()
### A
```cpp
-
+cnt++;
+x = x | (x - 1);
```
### B
```cpp
-
+cnt++;
+x = x & (x + 1);
```
### C
```cpp
-
+cnt++;
+x = x & x - 1;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/solution.md"
index b74b7ba2c..d6ca549ce 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/solution.md"
@@ -1,35 +1,61 @@
# 检查一个3位数是否是水仙花数
检查一个3位数是否是水仙花数。
+
输入:一个数字,比如 371,输出:x是水仙花数,
+
如果不是,则输出:x不是水仙花数。
+
注:x为输入的数字
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+using namespace std;
+int main()
+{
+ int a, b, c, y, n = 0;
+ cout << "请输入三位数字:" << endl;
+ cin >> n;
+ a = n % 1000 / 100;
+ b = n % 100 / 10;
+ c = n % 10 / 1;
+ ___________________
+ if (y == n)
+ cout << n << "是水仙花数" << endl;
+ else
+ cout << n << "不是水仙花数" << endl;
+ return 0;
+}
+```
+
## template
```cpp
-#include
+#include
using namespace std;
int main()
{
- int a, b, c, y, n = 0;
- cout << "请输入三位数字:" << endl;
- cin >> n;
- a = n % 1000 / 100;
- b = n % 100 / 10;
- c = n % 10 / 1;
- y = a*a*a + b*b*b + c*c*c;
- if (y == n) cout << n << "是水仙花数" << endl;
- else cout << n << "不是水仙花数" << endl;
- system("pause");
- return 0;
+ int a, b, c, y, n = 0;
+ cout << "请输入三位数字:" << endl;
+ cin >> n;
+ a = n % 1000 / 100;
+ b = n % 100 / 10;
+ c = n % 10 / 1;
+ y = a * a * a + b * b * b + c * c * c;
+ if (y == n)
+ cout << n << "是水仙花数" << endl;
+ else
+ cout << n << "不是水仙花数" << endl;
+ return 0;
}
```
## 答案
```cpp
-
+y = a * a * a + b * b * b + c * c * c;
```
## 选项
@@ -37,17 +63,17 @@ int main()
### A
```cpp
-
+y = a * a + b * b + c * c;
```
### B
```cpp
-
+y = a * a * a * a + b * b * b * b + c * c * c * c;
```
### C
```cpp
-
+y = a * b * c;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/solution.md"
index 808a7de3f..d846e2e26 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/solution.md"
@@ -1,41 +1,81 @@
# 秒数转换
输入一个秒数,转换成HH:MM:SS的格式输出。
+
输入样例
+
365
+
输出样例
+
00:06:05
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+int n;
+void print(int x)
+{
+ if (x == 0)
+ printf("00");
+ else if (x < 10)
+ printf("0%d", x);
+ else
+ printf("%d", x);
+ return;
+}
+int main()
+{
+ scanf("%d", &n);
+ int s, f, m;
+ ____________
+ print(s);
+ printf(":");
+ print(f);
+ printf(":");
+ print(m);
+ return 0;
+}
+```
+
## template
```cpp
-#include
+#include
int n;
-void print(int x){
- if(x==0)printf("00");
- else if(x<10)printf("0%d",x);
- else printf("%d",x);
- return;
+void print(int x)
+{
+ if (x == 0)
+ printf("00");
+ else if (x < 10)
+ printf("0%d", x);
+ else
+ printf("%d", x);
+ return;
}
-int main(){
- scanf("%d",&n);
- int s,f,m;
- s=n/3600;
- f=n/60%60;
- m=n%60;
- print(s);
- printf(":");
- print(f);
- printf(":");
- print(m);
- return 0;
+int main()
+{
+ scanf("%d", &n);
+ int s, f, m;
+ s = n / 3600;
+ f = n / 60 % 60;
+ m = n % 60;
+ print(s);
+ printf(":");
+ print(f);
+ printf(":");
+ print(m);
+ return 0;
}
```
## 答案
```cpp
-
+s = n / 3600;
+f = n / 60 % 60;
+m = n % 60;
```
## 选项
@@ -43,17 +83,23 @@ int main(){
### A
```cpp
-
+s = n / 3600;
+f = n / 60 / 60;
+m = n / 60;
```
### B
```cpp
-
+s = n / 3600;
+f = n % 60 % 60;
+m = n % 60;
```
### C
```cpp
-
+s = n / 3600;
+f = n / 60 % 60;
+m = n / 60;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/solution.md"
index 711137778..4164a0838 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/solution.md"
@@ -1,7 +1,57 @@
-# 找出string中只出现过一次的字符
+# 找出字符串中第一个只出现一次的字符
-找出string中只出现过一次的字符
-例如"abcdef abcd"中需要得到ef
+输入描述:
+
+输入一个非空字符串
+
+输出描述:
+
+输出第一个只出现一次的字符,如果不存在输出-1
+
+示例1
+
+输入:
+
+```json
+asdfasdfo
+```
+
+输出:
+
+```json
+o
+```
+
+以下程序实现了这一功能,请你补全空白处内容:
+
+```cpp
+#include
+#include
+using namespace std;
+int main()
+{
+ string str;
+ while (getline(cin, str))
+ {
+ int a[256] = {0};
+ bool flag = false;
+ for (int i = 0; i < str.size(); ++i)
+ ____________________
+ for (int i = 0; i < str.size(); ++i)
+ {
+ if (a[str[i]] == 1)
+ {
+ cout << str[i] << endl;
+ flag = true;
+ break;
+ }
+ }
+ if (flag == false)
+ cout << "-1" << endl;
+ }
+ return 0;
+}
+```
## template
@@ -11,31 +61,33 @@
using namespace std;
int main()
{
- string temp = "";
- cout << "请输入字符串:";
- cin >> temp;
- string str = "";
- string str1 = "";
- for (int i = 0; i < temp.length(); i++)
- {
- string tempSub = temp.substr(i, 1);
- int b = temp.rfind(tempSub);
- if (i == b && str1.find(tempSub) == -1)
- str +=temp.substr(i, 1);
- else if (str1.find(tempSub) == -1)
- str1 += temp.substr(i, 1);
- }
- cout << "只出现一次的字符:" << str << endl;
- cout << "重复出现的字符的字符:" << str1 << endl;
- system("pause");
- return 0;
+ string str;
+ while (getline(cin, str))
+ {
+ int a[256] = {0};
+ bool flag = false;
+ for (int i = 0; i < str.size(); ++i)
+ ++a[str[i]];
+ for (int i = 0; i < str.size(); ++i)
+ {
+ if (a[str[i]] == 1)
+ {
+ cout << str[i] << endl;
+ flag = true;
+ break;
+ }
+ }
+ if (flag == false)
+ cout << "-1" << endl;
+ }
+ return 0;
}
```
## 答案
```cpp
-
+++a[str[i]];
```
## 选项
@@ -43,17 +95,17 @@ int main()
### A
```cpp
-
+a[str[i]]++;
```
### B
```cpp
-
+a[str[i]++];
```
### C
```cpp
-
+a[str[i]--];
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/solution.md"
index 627c85b9f..3c5891795 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/solution.md"
@@ -2,6 +2,29 @@
本关任务:编写程序,有五种水果,apple、banana、orage、strawberry、pear,每一种有一个价格(浮点小数),由老板输入,请提示用户选择什么水果,购买数量(按照斤两),然后将总价显示出来。
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+int main(){
+ typedef enum {apple, banana, orange, strawberry, pear} fruits;
+ double prices[5];
+ fruits purchase;
+ int fruit;
+ double amount;
+ for(int i = 0; i < 5; i++)
+ scanf("%lf", &prices[i]);
+ printf("水果编号:1.苹果 2.香蕉 3.橘子 4.草莓 5.梨\n");
+ printf("请输入购买的水果(1~5),以及购买数量(按照斤两):\n");
+ scanf("%d %lf", &fruit, &amount);
+ purchase = (fruits)fruit;
+
+ ________________________
+
+ return 0;
+}
+```
+
## template
```cpp
@@ -26,7 +49,7 @@ int main(){
## 答案
```cpp
-
+printf("总价为:%.3lf", prices[purchase-1]*amount);
```
## 选项
@@ -34,17 +57,17 @@ int main(){
### A
```cpp
-
+printf("总价为:%.3lf", prices[purchase]*amount);
```
### B
```cpp
-
+printf("总价为:%.3lf", prices(purchase-1)*amount);
```
### C
```cpp
-
+printf("总价为:%.3lf", prices(purchase)*amount);
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/solution.md"
index 0e611af67..0b74e41a4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/solution.md"
@@ -2,6 +2,35 @@
求10-100之间个位数为7的质数
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+int isp(int n)
+{
+ int i;
+ if (n<2)
+ return 0;
+ for (i=2;i*i<=n;++i)
+ {
+ _______________
+ }
+ return 1;
+}
+int main()
+{
+ int i=17;
+ while (i<=100)
+ {
+ if (isp(i))
+ printf("%d ",i);
+ i+=10;
+ }
+ printf("\n");
+ return 0;
+}
+```
+
## template
```cpp
@@ -35,7 +64,8 @@ int main()
## 答案
```cpp
-
+if (n%i==0)
+ return 0;
```
## 选项
@@ -43,17 +73,20 @@ int main()
### A
```cpp
-
+if (n%i==0)
+ return 1;
```
### B
```cpp
-
+if (n/i==0)
+ return 1;
```
### C
```cpp
-
+if (n/i==0)
+ return 0;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/solution.md"
index ada2dbaf7..5a7c433f7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/solution.md"
@@ -1,22 +1,70 @@
# 数据合并
题目描述
+
将两个从小到大排列的一维数组 (维长分别为 m,n , 其中 m,n≤100) 仍按从小到大的排列顺序合并到一个新的一维数组中,输出新的数组.
+
输入描述
-第 1行一个正整数 m , 表示第一个要合并的一维数组中的元素个数
+
+第 1 行一个正整数 m , 表示第一个要合并的一维数组中的元素个数
+
第 2 行一个正整数 n , 表示第二个要合并的一维数组中的元素个数
+
第 3 行输入 m 个整数 (每个数用空格分开) , 表示第一个数组元素的值.
+
第 4 行输入 n 个整数 (每个数用空格分开) , 表示第二个数组元素的值.
+
输出描述
+
一行,表示合并后的数据,共 m +n 个数
+
样例输入
+
+```json
3
4
1 3 5
2 4 6 8
+```
+
样例输出
+
+```json
1 2 3 4 5 6 8
-要多组输入输出
+```
+
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+using namespace std;
+void merge(int * a1, int m, int * a2, int n)
+{
+ int m1 = m - 1;
+ int n1 = n - 1;
+ for (int i = m + n - 1; i >= 0; i--)
+ {
+ if (m1 < 0) a1[i] = a2[n1--];
+ else if (n1 < 0) a1[i] = a1[m1--];
+ __________________
+ }
+}
+int main()
+{
+ int m;
+ int n;
+ cin >> m;
+ cin >> n;
+ int a1[201];
+ int a2[101];
+ for (int i = 0; i < m; i++) cin >> a1[i];
+ for (int i = 0; i < n; i++) cin >> a2[i];
+ merge(a1, m, a2, n);
+ for (int i = 0; i < m + n; i++) cout << a1[i] << " ";
+ return 0;
+}
+```
+
## template
@@ -54,7 +102,8 @@ int main()
## 答案
```cpp
-
+else if (a1[m1] < a2[n1]) a1[i] = a2[n1--];
+else a1[i] = a1[m1--];
```
## 选项
@@ -62,17 +111,20 @@ int main()
### A
```cpp
-
+else if (a1[m1] < a2[n1]) a1[i] = a2[n1];
+else a1[i] = a1[m1];
```
### B
```cpp
-
+else if (a1[m1] > a2[n1]) a1[i] = a2[n1--];
+else a1[i] = a1[m1--];
```
### C
```cpp
-
+else if (a1[m1] > a2[n1]) a1[i] = a2[n1];
+else a1[i] = a1[m1];
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/solution.md"
index 6c51a4497..9486cc243 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/solution.md"
@@ -1,10 +1,34 @@
# 计算所有4位正整数中同时能被13和20整除的数的和
-计算所有4位正整数中同时能被13和20整除的数的和, 并同时做到如下显示:
-①显示这些数:
-②显示这些数的个数:
+
计算所有4位正整数中同时能被13和20整除的数的和, 并同时做到如下显示:
+①显示这些数:
+②显示这些数的个数:
③显示这些数的和。
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include "stdio.h"
+int main()
+{
+ int i = 1000;
+ int count = 0;
+ int sum = 0;
+ printf("所有4位正整数中同时能被13和20整除的数:\n");
+ for(i = 1000;i<10000;i++)
+ {
+ if(_________________)
+ {
+ count++;
+ sum = sum + i;
+ printf("%d、",i);
+ }
+ }
+ printf("\n这些数一共有%d个\n",count);
+ printf("这些数的和是:%d\n",sum);
+}
+```
+
## template
```cpp
@@ -32,7 +56,7 @@ int main()
## 答案
```cpp
-
+i % 13 == 0 && i % 20 == 0
```
## 选项
@@ -40,17 +64,17 @@ int main()
### A
```cpp
-
+i / 13 == 0 && i / 20 == 0
```
### B
```cpp
-
+i % 13 == 0 & i % 20 == 0
```
### C
```cpp
-
+(i % 13 == 0) & (i % 20 == 0)
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/solution.md"
index 5d47adbde..93b28fdf0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/solution.md"
@@ -2,6 +2,33 @@
实现从键盘输入一个字符时,如果该字符为小写字母,则转换为大写字母输出;如果该字符为大写字母,则转换为小写字母输出;如果为其他字符,则原样输出。
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+int main()
+{
+ char x,y;
+ printf("请输入一个字符:");
+ scanf("%c",&x);
+ if(x>='A'&&x<='Z')
+ {
+ (1)___________
+ printf("此字母是一个大写字母,转换后的小写字母是:%c",y);
+ }
+ else if(x>='a'&&x<='z')
+ {
+ (2)___________
+ printf("此字母是一个小写字母,转换后的大写字母是%c",y);
+ }
+ else
+ {
+ printf("%c",x);
+ }
+ return 0;
+}
+```
+
## template
```cpp
@@ -32,7 +59,8 @@ int main()
## 答案
```cpp
-
+(1):y=x+32;
+(2):y=x-32;
```
## 选项
@@ -40,17 +68,20 @@ int main()
### A
```cpp
-
+(1):y=x-32;
+(2):y=x+32;
```
### B
```cpp
-
+(1):y=x+31;
+(2):y=x-31;
```
### C
```cpp
-
+(1):y=x-31;
+(2):y=x+31;
```
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/solution.md" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/solution.md"
index 0e448bec7..e270c9264 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/solution.md"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/solution.md"
@@ -9,6 +9,34 @@
输出格式:
输出一个正整数,是上述序列中所有素数之和。
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+int isprime( int n);
+int main()
+{
+ int i,n,m,s=0;
+ scanf("%d", &n);
+ for( i=0; i
+以下程序实现了这一功能,请你填补空白处内容:
+
+```cpp
+#include
+int main()
+{
+ int a[10005];
+ long long t=0;
+ int n,i,j,x;
+ scanf("%d",&n);
+ for(i=0;ia[j]){
+ x=a[i];
+ a[i]=a[j];
+ a[j]=x;
+}
```
## 选项
@@ -48,17 +78,29 @@ int main()
### A
```cpp
-
+if(a[i]a[j]){
+ x=a[i];
+ a[j]=x;
+ a[i]=a[j];
+}
```
### C
```cpp
-
+if(a[i]