C/C++每日一练(20230512) 成绩打印、补齐数组、水仙花数

简介: C/C++每日一练(20230512) 成绩打印、补齐数组、水仙花数

1. 成绩打印


一个班有10个同学,通过键盘输入成绩, 并打印输出,每行输出5个同学的成绩。并求出平均成绩,最高分、最低分并输出。算法分析


(1)定义一个数组用来存放10个成绩数据。

(2)用循环结构实现成绩输入;

(3)用循环结构实现成绩输出,并控制换行;

(4)使用循环结构求平均成绩、最高分、最低分并输出。

以下程序实现了这一功能,请你填补空白处内容:


#include <stdio.h>intmain(){
intx,i,max=0,min=0;
doublesum=0,ave=0;
inta[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);
}
```


出处:

https://edu.csdn.net/practice/27637459

代码:

#include <stdio.h>intmain(){
intx,i,max=0,min=0;
doublesum=0,ave=0;
inta[10];
for(i=0;i<10;i++){
scanf("%d",&a[i]);
if(i==0)
min=a[i];
sum+=a[i];
if(max<a[i])
max=a[i];
if(min>a[i])
min=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);
}

输出:


2. 按要求补齐数组


给定一个已排序的正整数数组 nums,和一个正整数 n 。从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用 nums 中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数。


示例 1:

输入: nums = [1,3], n = 6

输出: 1  


解释:

根据 nums 里现有的组合 [1], [3], [1,3],可以得出 1, 3, 4。

现在如果我们将 2 添加到 nums 中, 组合变为: [1], [2], [3], [1,3], [2,3], [1,2,3]。

其和可以表示数字 1, 2, 3, 4, 5, 6,能够覆盖 [1, 6] 区间里所有的数。

所以我们最少需要添加一个数字。


示例 2:

输入: nums = [1,5,10], n = 20

输出: 2

解释: 我们需要添加 [2, 4]。


示例 3:

输入: nums = [1,2,2], n = 5

输出: 0


出处:

https://edu.csdn.net/practice/27637460

代码:

#include <bits/stdc++.h>usingnamespacestd;
classSolution{
public:
intminPatches(vector<int>&nums, intn)
    {
longmax_sum=0;
intm=nums.size();
intcnt=0;
for (longi=1, pos=0; i<=n;)
        {
if (pos>=m||i<nums[pos])
            {
cnt++;
max_sum+=i;
            }
else            {
max_sum+=nums[pos];
pos++;
            }
i=max_sum+1;
        }
returncnt;
    }
};
intmain()
{
Solutions;
vector<int>nums= {1, 3};
cout<<s.minPatches(nums, 6) <<endl;
nums= {1, 5, 10};
cout<<s.minPatches(nums, 20) <<endl;
nums= {1, 2, 2};
cout<<s.minPatches(nums, 5) <<endl;
return0;
}

输出:

1

2

0


3. 水仙花数

检查一个3位数是否是水仙花数。


输入:一个数字,比如 371,输出:x是水仙花数,

如果不是,则输出:x不是水仙花数。

注:x为输入的数字

以下程序实现了这一功能,请你补全空白处内容:

```c++

#include <iostream>usingnamespacestd;
intmain()
{
inta, 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;
elsecout<<n<<"不是水仙花数"<<endl;
return0;
}
```

出处:

https://edu.csdn.net/practice/27637461

代码:

#include <iostream>
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;
    return 0;
}


输出:

目录
相关文章
|
4月前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
106 4
|
4月前
|
C++
C++(十一)对象数组
本文介绍了C++中对象数组的使用方法及其注意事项。通过示例展示了如何定义和初始化对象数组,并解释了栈对象数组与堆对象数组在初始化时的区别。重点强调了构造器设计时应考虑无参构造器的重要性,以及在需要进一步初始化的情况下采用二段式初始化策略的应用场景。
|
5月前
|
算法 C++
c++学习笔记04 数组
这篇文章是C++学习笔记4,主题是数组。
51 4
|
5月前
|
C++ 索引
C++数组、vector求最大值最小值及其下标
C++数组、vector求最大值最小值及其下标
188 0
|
6月前
|
C++ 索引 运维
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
44 6
|
6月前
|
存储 安全 C++
开发与运维数组问题之声明一个数组如何解决
开发与运维数组问题之声明一个数组如何解决
51 6
|
6月前
|
存储 C++ 容器
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
72 5
|
5月前
|
安全 编译器 C语言
C++入门-数组
C++入门-数组
|
6月前
|
vr&ar C++
1695. 删除子数组的最大得分(C++,滑动窗口)
1695. 删除子数组的最大得分(C++,滑动窗口)