C语言之输入(scanf)输出(printf)

输出 printf

  • puts():只能输出字符串,并且输出结束后会自动换行
  • putchar():只能输出单个字符, 不换行
  • printf():可以输出各种类型的数据
    printf() 是最灵活、最复杂、最常用的输出函数,可以取代上面两种:
    在这里插入图片描述

小数的输出

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    
    float a = 0.00001;
    float b = 3000000;
    float c = 12345678.84;
    float d = 11.229338455;
    printf("a=%g \nb=%g \nc=%g \nd=%g\n", a, b, c, d);
    printf("c=%e\n", c);
    /*
        %g以最短的方式来输出小数,让输出结果更加简练。所谓最短,就是输出结果占用最少的字符。
        但是比较长时有损失数据的问题出现

        %e是科学计数法输出数字,最多八位底数,多余8位会损失数据
    */

    /*
        小数赋值给整数类型时,会丢掉小数部分
        整型赋值给小数会在,小数点后加0
        %f 和 %lf 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。
    */
    int f = 123.0123f;
    printf("%d\n", f);
    double g = f;
    printf("%lf\n", g);
    return 0;
}

printf() 的高级用法

%[flag][width][.precision]type
  • type 表示输出类型,必须有
    在这里插入图片描述

  • .precision 表示输出精度,也就是小数的位数

  • width 表示最小输出宽度,占几位

  • flag 是标志字符。
    在这里插入图片描述

#include <stdio.h>
int main()
{
    
    
  int a1 = 20, a2 = 345, a3 = 700, a4 = 22;
  int b1 = 56720, b2 = 9999, b3 = 20098, b4 = 2;
  int c1 = 233, c2 = 205, c3 = 1, c4 = 6666;
  int d1 = 34, d2 = 0, d3 = 23, d4 = 23006783;

  printf("%-9d %-9d %-9d %-9d\n", a1, a2, a3, a4);
  printf("%-9d %-9d %-9d %-9d\n", b1, b2, b3, b4);
  printf("%-9d %-9d %-9d %-9d\n", c1, c2, c3, c4);
  printf("%-9d %-9d %-9d %-9d\n", d1, d2, d3, d4);

  printf("\n");
  printf("%9d %9d %9d %9d\n", a1, a2, a3, a4);
  printf("%9d %9d %9d %9d\n", b1, b2, b3, b4);
  printf("%9d %9d %9d %9d\n", c1, c2, c3, c4);
  printf("%9d %9d %9d %9d\n", d1, d2, d3, d4);

  return 0;
}

%-9d中,d表示以十进制输出,9表示最少占9个字符的宽度,宽度不足以空格补齐,-表示左对齐。综合起来,%-9d表示以十进制输出,左对齐
在这里插入图片描述

输入 scanf

  • scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
  • getchar()、getche()、getch():这三个函数都用于输入单个字符。
  • gets():获取一行数据,并作为字符串处理。

  • scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入,和 printf 的功能正好相反。
  • scanf() 不会跳过不符合要求的数据,遇到不符合要求的数据会读取失败,而不是再继续等待用户输入。
  • 对于 scanf(),输入数据的格式要和控制字符串的格式保持一致。
  • scanf 的变量前要带一个&符号。&称为取地址符,也就是获取变量在内存中的地址。

在这里插入图片描述

#include <stdio.h>
int main()
{
    
    
  char letter;
  int age;
  char url[30];
  float price;

  scanf("%c", &letter);
  scanf("%d", &age);
  scanf("%s", url); //可以加&也可以不加&
  scanf("%f", &price);

  printf("26个英文字母的最后一个是 %c。\n", letter);
  printf("C语言中文网已经成立%d年了,网址是 %s,开通VIP会员的价格是%g。\n", age, url, price);

  char author[30], lang[30], url[30];
  scanf("%s %s", author, lang);
  printf("author:%s \nlang: %s\n", author, lang);

  scanf("%s", url);
  printf("url: %s\n", url);
  return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_46372074/article/details/126695928