116 lines
3.2 KiB
Markdown
116 lines
3.2 KiB
Markdown
---
|
||
tags:
|
||
- "#作业"
|
||
- C语言
|
||
aliases: empty
|
||
日期: 2026/1/23
|
||
---
|
||
1.定义`int num = 255`,分别以十进制(有符号)、无符号十进制、八进制(带 / 不带前缀)、十六进制(小写带 / 不带前缀、大写带 / 不带前缀) 格式输出;
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main(int argc, char const *argv[])
|
||
{
|
||
int num = 255;
|
||
|
||
printf("%d\n",num);
|
||
printf("%u\n",num);
|
||
printf("%#o\n",num);
|
||
printf("%o\n",num);
|
||
printf("%#x\n",num);
|
||
printf("%x\n",num);
|
||
printf("%#X\n",num);
|
||
printf("%X\n",num);
|
||
|
||
return 0;
|
||
}
|
||
```
|
||
2.定义`long num_long = 123456789`、`long long num_ll = 9876543210`,分别用对应控制符输出;
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main(int argc, char const *argv[])
|
||
{
|
||
|
||
long num_long = 123456789;
|
||
long long num_ll = 9876543210;
|
||
|
||
printf("%ld\n",num_long);
|
||
printf("%lld\n",num_ll);
|
||
|
||
return 0;
|
||
}
|
||
```
|
||
3.定义`float pi = 3.1415926`,分别以默认小数形式、保留 2 位小数、指数形式(保留 3 位精度) 输出;
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main(int argc, char const *argv[])
|
||
{
|
||
float pi = 3.1415926;
|
||
|
||
printf("%f\n",pi);
|
||
printf("%.2f\n",pi);
|
||
printf("%.3e\n",pi);
|
||
|
||
return 0;
|
||
}
|
||
```
|
||
4.定义字符串`char *name = "Programmer"`,分别输出完整字符串、前 5 个字符、左对齐占 10 位、右对齐占 10 位的格式;
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main(int argc, char const *argv[])
|
||
{
|
||
char *name = "Programmer";
|
||
|
||
printf("%s\n",name);
|
||
printf("%.5s\n",name);
|
||
printf("%-10.5s\n",name);
|
||
printf("%10.5s\n",name);
|
||
|
||
return 0;
|
||
}
|
||
```
|
||
5.编写一个综合程序,结合格式化输入输出、类型转换、IO 流知识点,实现 “字符↔ASCII 码” 双向转换:
|
||
a. 提示用户选择功能:输入 1(字符转 ASCII)、2(ASCII 转字符);
|
||
b. 若选择 1:接收用户输入的单个字符(注意:需处理 scanf 接收字符时的缓冲区问题),输出该字符的 ASCII 码(结合类型转换,char→int);
|
||
c. 若选择 2:接收用户输入的 ASCII 码值(0-127),输出对应的字符(int→char,显式转换);
|
||
d. 增加输入校验:若输入的 ASCII 码超出 0-127 范围,输出 “无效的 ASCII 码”;若输入的不是单个字符,输出 “输入格式错误”;
|
||
e. 核心要求:使用scanf的返回值判断输入是否有效,结合格式化控制符完成输入输出
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main(int argc, char const *argv[])
|
||
{
|
||
int ret = 0,cho = 0;
|
||
char ch;
|
||
int num;
|
||
|
||
printf("输入 1(字符转 ASCII)、2(ASCII 转字符):");
|
||
scanf("%d",&cho);
|
||
if(1 == cho)
|
||
{
|
||
ret = scanf(" %c",&ch);
|
||
if(1 != ret)
|
||
printf("输入格式错误 @__@ \n");
|
||
else
|
||
printf("%d\n",(int)ch);
|
||
}
|
||
else if(2 == cho)
|
||
{
|
||
scanf("%d",&num);
|
||
if(0 <= num && 127 >= num )
|
||
{
|
||
printf("%c\n",(char)num);
|
||
}
|
||
else
|
||
printf("无效的 ASCII 码 ^__^ \n");
|
||
}
|
||
else
|
||
printf("无效值\n");
|
||
|
||
return 0;
|
||
|
||
}
|
||
``` |