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) |
| %ld | long类型 | printf("%ld", 123L) |
| %lld | long long类型 | printf("%lld", 123LL) |
| %hd | short类型 | printf("%hd", 123) |
| %lu | unsigned long | printf("%lu", 123UL) |
| %% | 输出%符号 | printf("100%%") |
格式修饰符
- 宽度:
%5d- 占5个字符宽度 - 精度:
%.2f- 保留2位小数 - 左对齐:
%-10s- 左对齐,占10字符宽 - 前导零:
%05d- 不足5位用0填充 - 动态宽度:
%*d- 宽度由参数指定