Printf函数练习及答案

发布时间:

C++ printf函数练习题

基础篇

题目1:基本字符串输出

题目:使用printf输出"Hello, World!"

参考答案

#include <cstdio>
int main() {
    printf("Hello, World!\n");
    return 0;
}

题目2:整数输出

题目:定义一个整数变量a=100,使用printf输出"The number is: 100"

参考答案

#include <cstdio>
int main() {
    int a = 100;
    printf("The number is: %d\n", a);
    return 0;
}

题目3:浮点数输出

题目:定义一个双精度浮点数pi=3.14159,使用printf输出,保留2位小数

参考答案

#include <cstdio>
int main() {
    double pi = 3.14159;
    printf("Pi = %.2f\n", pi);
    return 0;
}

题目4:字符输出

题目:定义一个字符变量ch='A',使用printf输出该字符及其ASCII码值

参考答案

#include <cstdio>
int main() {
    char ch = 'A';
    printf("Character: %c, ASCII: %d\n", ch, ch);
    return 0;
}

题目5:字符串输出(没学字符串数据类型可以跳过)

题目:定义一个字符串name="Alice",使用printf输出"Name: Alice"

参考答案

#include <cstdio>
int main() {
    string name = "Alice";
    printf("Name: %s\n", name);
    return 0;
}

进阶篇

题目6:多参数输出(没学字符串数据类型可以跳过)

题目:使用printf同时输出整数、浮点数和字符串,格式为"ID: 5, Score: 98.50, Name: Bob"

参考答案

#include <cstdio>
int main() {
    int id = 5;
    double score = 98.5;
    string name = "Bob";
    printf("ID: %d, Score: %.2f, Name: %s\n", id, score, name);
    return 0;
}

题目7:宽度控制

题目:输出整数123,要求占10个字符宽度,右对齐

参考答案

#include <cstdio>
int main() {
    int num = 123;
    printf("[%10d]\n", num);
    return 0;
}

题目8:左对齐输出

题目:输出字符串"Hello",要求占15个字符宽度,左对齐

参考答案

#include <cstdio>
int main() {
    printf("[%-15s]\n", "Hello");
    return 0;
}

题目9:前导零填充

题目:输出整数42,要求占6位宽度,不足部分用0填充

参考答案

#include <cstdio>
int main() {
    int num = 42;
    printf("%06d\n", num);
    return 0;
}

题目10:十六进制输出(没学进制转换的可以跳过)

题目:将十进制数255分别以十六进制(小写和大写)、八进制形式输出

参考答案

#include <cstdio>
int main() {
    int num = 255;
    printf("Decimal: %d\n", num);
    printf("Hex (lower): %x\n", num);
    printf("Hex (upper): %X\n", num);
    printf("Octal: %o\n", num);
    return 0;
}

高级篇

题目11:浮点数精度控制

题目:输出3.1415926535,分别保留1位、3位、6位小数

参考答案

#include <cstdio>
int main() {
    double pi = 3.1415926535;
    printf("1 decimal: %.1f\n", pi);
    printf("3 decimals: %.3f\n", pi);
    printf("6 decimals: %.6f\n", pi);
    return 0;
}

题目12:科学计数法

题目:输出1234567.89,分别使用%e和%E格式

参考答案

#include <cstdio>
int main() {
    double num = 1234567.89;
    printf("Scientific (lower): %e\n", num);
    printf("Scientific (upper): %E\n", num);
    return 0;
}

题目13:指针地址输出(没学指针类型可以跳过)

题目:定义一个整数变量,输出其内存地址

参考答案

#include <cstdio>
int main() {
    int num = 100;
    printf("Address of num: %p\n", (void*)&num);
    return 0;
}

题目14:长整型和长长整型

题目:定义long和long long类型变量,并使用正确的格式符输出

参考答案

#include <cstdio>
int main() {
    long big = 1234567890L;
    long long veryBig = 9223372036854775807LL;
    printf("long: %ld\n", big);
    printf("long long: %lld\n", veryBig);
    return 0;
}

题目15:短整型

题目:定义short类型变量,使用正确的格式符输出

参考答案

#include <cstdio>
int main() {
    short small = 32767;
    printf("short: %hd\n", small);
    return 0;
}

综合应用篇

题目16:格式化表格

题目:制作一个简单的成绩表,包含姓名(左对齐,10字符宽)、分数(右对齐,6字符宽,2位小数)

参考答案

#include <cstdio>
int main() {
    printf("%-10s %6s\n", "Name", "Score");
    printf("%-10s %6.2f\n", "Alice", 95.5);
    printf("%-10s %6.2f\n", "Bob", 87.25);
    printf("%-10s %6.2f\n", "Charlie", 92.0);
    return 0;
}

题目17:无符号整数

题目:定义unsigned int变量,并分别以有符号和无符号形式输出,观察差异

参考答案

#include <cstdio>
int main() {
    unsigned int u = 4294967295;
    printf("Unsigned: %u\n", u);
    printf("Signed: %d\n", (int)u);
    return 0;
}

题目18:百分号输出

题目:输出"Progress: 75%",注意printf中如何输出%字符

参考答案

#include <cstdio>
int main() {
    int progress = 75;
    printf("Progress: %d%%\n", progress);
    return 0;
}

题目19:动态宽度

题目:使用*作为宽度占位符,通过参数指定输出宽度

参考答案

#include <cstdio>
int main() {
    int num = 42;
    int width = 8;
    printf("[%*d]\n", width, num);
    return 0;
}

题目20:综合练习 - 学生信息卡

题目:创建一个学生信息输出程序,要求: - 学生ID:整数,占6位,前导零填充 - 姓名:字符串,左对齐,占12字符宽 - 年龄:整数,占3字符宽 - GPA:浮点数,保留2位小数,占5字符宽 - 输出格式美观对齐

参考答案

#include <cstdio>
int main() {
    int id = 42;
    char name[] = "John Smith";
    int age = 20;
    double gpa = 3.85;
    
    printf("Student Information:\n");
    printf("===================\n");
    printf("ID:    %06d\n", id);
    printf("Name:  %-12s\n", name);
    printf("Age:   %3d\n", age);
    printf("GPA:   %5.2f\n", gpa);
    
    // 或者一行显示
    printf("\nSummary: [%06d] [%-12s] [%3d] [%5.2f]\n", id, name, age, gpa);
    return 0;
}

知识点总结

格式符说明示例
%d/%i有符号十进制整数printf("%d", 42)
%u无符号十进制整数printf("%u", 42)
%o无符号八进制printf("%o", 64)
%x/%X无符号十六进制printf("%x", 255)
%f浮点数printf("%.2f", 3.14)
%e/%E科学计数法printf("%e", 1234.5)
%c单个字符printf("%c", 'A')
%s字符串printf("%s", "hello")
%p指针地址printf("%p", &var)
%ldlong类型printf("%ld", 123L)
%lldlong long类型printf("%lld", 123LL)
%hdshort类型printf("%hd", 123)
%luunsigned longprintf("%lu", 123UL)
%%输出%符号printf("100%%")

格式修饰符

  • 宽度%5d - 占5个字符宽度
  • 精度%.2f - 保留2位小数
  • 左对齐%-10s - 左对齐,占10字符宽
  • 前导零%05d - 不足5位用0填充
  • 动态宽度%*d - 宽度由参数指定