C 语言基础–输入输出

发布于:2024-12-18 ⋅ 阅读:(56) ⋅ 点赞:(0)

C 语言基础–输入输出

1. 输入输出函数概述

  • C语言标准库 提供输入/输出函数,用于处理数据输入输出。
  • 标准输入设备:通常是键盘。
  • 标准输出设备:通常是显示器。

2. 格式化输出:printf

  • 用于向控制台输出数据。

  • 函数原型

    int printf("control string", argument list);
    
    • control string:控制字符串,由文本字符、格式命令(以 % 开头)和非打印字符组成。
    • argument list:参数列表,需与格式命令的数量、类型、顺序匹配。
  • 常见格式化代码

    格式代码 输出内容
    %c 单字符
    %d 带符号十进制整数
    %u 无符号十进制整数
    %f 浮点数(小数点形式)
    %e 浮点数(科学计数法)
    %s 字符串
    %x 无符号十六进制整数
    %o 无符号八进制整数
  • 示例

    int a = 5, b = 10, sum = a + b;
    printf("%d 和 %d 的和是 %d\n", a, b, sum);
    

3. 格式化输入:scanf

  • 用于从标准输入读取数据。

  • 函数原型:

    int scanf("control string", argument list);
    
    • control string:与 printf 类似。
    • argument list:需要传递变量的地址(通过 & 获取)。
  • 示例:

    int a;
    float f;
    char ch;
    printf("请输入整数、小数和字符:\n");
    scanf("%d %f %c", &a, &f, &ch);
    printf("输入的值是:%d, %.2f, %c\n", a, f, ch);
    

4. 单字符输入输出

  • getchar():从键盘读取一个字符。

    • 示例:

      char ch = getchar();
      putchar(ch); // 输出字符
      
  • putchar():向屏幕输出一个字符。

  • getch()putch()(需 <conio.h>):

    • getch():无需按下回车即可读取一个字符。

    • 示例:

      char ch = getch();
      putch(ch);
      

5. 转义字符

转义序列 描述
\n 换行
\t 水平制表符
\\ 输出反斜杠
\" 输出双引号
\0 空字符

6. 输入输出缓冲区

  • 输入缓冲区:存储输入的数据,直到被程序读取。
  • 输出缓冲区:存储待输出的数据,直到输出完成。

7. printf 修饰符

  • 宽度修饰符:指定输出宽度(例如 %4d)。

  • 精度修饰符:控制浮点数的精度(例如 %.2f)。

  • 对齐修饰符%-d 左对齐。

  • 示例:

    printf("%10d", 555); // 宽度为10,右对齐
    printf("%-10d", 555); // 宽度为10,左对齐
    printf("%.2f", 3.14159); // 输出两位小数
    

8. 注意事项

  • 输入空格、回车处理:

    • scanf 遇到空格、回车会停止读取,可以用 getchar() 清理缓冲区。
  • 特殊字符输出:

    printf("%%"); // 输出 %
    

9. 示例程序

  1. homework2:输入两个整数并把两个数字输出,然后交换两个数字并且输出结果

  2. homework3:输入一个double类型数据,然后输入一个整数n代表需要保留的小数位数,自己实现对输入的小数四舍五入保留n位小数。并把结果输出。

  3. homework4:声明三个变量,要求输入这三条边,计算并显示出该三角形的周长和面积(要求周长保留两位小数,面积保留3位小数)

#include <stdio.h>
#include <stdlib.h>
#include "calculator.h"
#include <math.h> 


void homework1(void);
void homework2(void);
void homework3(void);
void homework4(void);


int main()
{
	int choice;
	while(1)
	{
		 printf("╔                                      ╗\n");
        printf("             作业选择     \n");
        printf("   ================================\n");
        printf("      1. 作业一 (简易计算器修正版) \n");
        printf("      2. 作业二 (数字交换)          \n");
        printf("      3. 作业三 (小数四舍五入)          \n");
        printf("      4. 作业四 (计算三角形周长与面积)                        \n");
        printf("      5. 退出              \n");
        printf("╚                                      ╝\n");
        printf("请选择: \n");
        scanf("%d", &choice);
        
        switch(choice)
        {
        	 case 1:
                homework1();
                break;
            case 2:
                homework2();
                break;
            case 3:
                homework3();
                break;
            case 4:
                homework4();
                break;
            case 5:
                exit(0);
            default:
                printf("无效选择,请重试。\n");
		}
	}
}
  

	void homework1(void)
	{
		caculator_menu();//调用计算器菜单,可以有效避免别的作业直接调用 add()等计算器功能
	}
	
	void homework2(void) 
	{
    	int a , b , c;
    	printf("请输入第一个整数:\n");
    	scanf("%d", &a);
    	printf("请输入第二个整数:\n");
    	scanf("%d", &b);
    	printf("交换前的结果为:%d %d\n",a, b);
    	
    	c = a;
    	a = b;
    	b = c;
    	
    	printf("交换后的结果为:%d %d\n", a, b);
	}


	void homework3(void) 
	{
    	double a;
    	int n;
    	printf("请输入一个小数:\n");
    	scanf("%lf",&a);
    	
    	printf("请输入需要保留的小数位数:\n");
    	scanf("%d", &n);
    	
    	printf("保留 %d 位小数的数字为:%.*f\n", n, n, a);
    	
	}


	void homework4(void) 
	{
    	double a, b, c;
		printf("请输入三角形三条边的长:\n");
		scanf("%lf %lf %lf",&a,&b,&c);
		
		if(a + b > c && a + c > b && b + c > a)
		{
			double perimeter = a + b + c;
			double p = perimeter / 2;
			double area = sqrt(p * (p - a) * (p - b) * (p - c));
			
			printf("三角形的周长为:%lf\n", perimeter);
			printf("三角形的面积为:%lf\n", area);
		}else
		{
			printf("这三条边不能构成三角形!\n");
		}
	
		 
	}


网站公告

今日签到

点亮在社区的每一天
去签到