3165: 找找谁的身高超过全家的平均身高

题目描述

找找谁的身高超过全家的平均身高。全家n口人,输入输出数据如下: (平均身高保留一位小数)

输入

第一行有一个整数n( 1 < n < 11 )。第二行是n个整数代表全家人的身高,用空格隔开。

输出

第一行为全家的平均身高(保留一位小数);第二行有若干个数,为超过平均身高的人的身高厘米数。

样例输入

7
175 160 172 158 178 162 142

样例输出

163.9
175 172 178

C++ 中的 printf 输出详解

在 C++ 中,printf 是一个非常常用的函数,用于格式化输出。它源自 C 语言的标准库,但在 C++ 中仍然可以使用,尤其是在需要与 C 代码兼容或更高效的输出时。

1. printf 的头文件

为了使用 printf 函数,需要包含 C 标准 I/O 库的头文件 stdio.h。在 C++ 中,我们可以继续使用这个头文件:

2. 基本用法

printf 函数用于将格式化的字符串输出到标准输出(通常是控制台)。它的基本语法如下:

printf(“format string”, arguments…);
“format string”: 格式化字符串,包含要输出的文本及格式说明符。
arguments: 可选参数,与格式说明符对应的实际值。

3. 格式说明符

printf 使用格式说明符(placeholders)来指定不同类型的变量输出方式。以下是一些常见的格式说明符:

%d: 输出整数类型 (int)。
%f: 输出浮点数 (float 或 double)。
%c: 输出单个字符。
%s: 输出字符串(字符数组)。
%x: 输出整数的十六进制表示。
%p: 输出指针地址。
示例代码

#include <stdio.h>

int main() {
    int num = 42;
    float pi = 3.14;
    char ch = 'A';
    const char* str = "Hello, World!";
    
    printf("整数: %d\n", num);
    printf("浮点数: %f\n", pi);
    printf("字符: %c\n", ch);
    printf("字符串: %s\n", str);
    
    return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

运行运行
输出结果:

整数: 42
浮点数: 3.140000
字符: A
字符串: Hello, World!
1
2
3
4

4. 格式化输出的高级用法

除了基本用法外,printf 还支持各种格式化选项来控制输出的宽度、精度、对齐方式等。

4.1. 控制输出宽度
int main() {
int num = 42;
printf(“宽度为5的整数: [%5d]\n”, num);
printf(“宽度为3的整数: [%3d]\n”, num);
return 0;
}
1
2
3
4
5
6
AI助手
输出结果:

宽度为5的整数: [ 42]
宽度为3的整数: [ 42]
1
2
AI助手
4.2. 设置浮点数精度
int main() {
float pi = 3.14159;
printf(“默认精度: %f\n”, pi);
printf(“保留两位小数: %.2f\n”, pi);
return 0;
}
1
2
3
4
5
6
AI助手
输出结果:

默认精度: 3.141590
保留两位小数: 3.14
1
2
AI助手
4.3. 左对齐与右对齐
默认情况下,printf 的输出是右对齐的。可以使用 - 标志来左对齐输出:

int main() {
int num = 42;
printf(“右对齐: [%5d]\n”, num);
printf(“左对齐: [%-5d]\n”, num);
return 0;
}
1
2
3
4
5
6
AI助手
输出结果:

右对齐: [ 42]
左对齐: [42 ]
1
2
AI助手
5. 注意事项
printf 的强类型要求: printf 不会进行类型检查,因此使用不正确的格式说明符可能会导致未定义行为。例如,如果你尝试使用 %d 来输出一个 float,程序可能会崩溃或输出不正确的结果。

安全性问题: printf 是不安全的,尤其是在处理用户输入的字符串时,可能会导致格式化字符串漏洞。在 C++ 中,建议尽量使用 std::cout 代替 printf,除非有特殊需要。

#include <iostream>
using namespace std;
int main()
{
    int n,i,a[11];
    float pj=0.0,sum=0.0;
    cin>>n;
    for(i=0;i<n;i++){
       cin>>a[i];
       sum=sum+a[i];
    }
    pj=sum/n;
   printf("%.1f\n",pj);
    for(i=0;i<n;i++){
        if(a[i]>pj) cout<<a[i]<<" ";
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值