C语言基础Day03输入输出

一、C语言的标准输入输出

(一)输出

  1. putchar:输出一个字符。
  2. printf:格式化输出。使用时需要包含头文件#include <stdio.h>。
  • printf的使用:printf(“格式控制字符串”,…);

示例:

peintf(“a = %d\n”,a);

“a = %d\n"中"a = “属于普通字符,原样输出,”%d"格式控制占位符,”\n"表示转义字符,表示换行输出。

  • 格式控制符:%开头,%后可跟数据类型符,附加修饰符
  • 数据类型符:
    请添加图片描述
  • 附加修饰符:位置再%和类型符中间。
    请添加图片描述

#:在八进制或十六进制时,输出前导符0或0x

.n:n表示显示小数时,小数后保留的位数,四舍五入。

m:m表示显示时,若实际宽度不足m个字符,填充空格,数据默认右对齐;若实际宽度超过m个字符,以实际宽度输出。

-:对齐方式,使用左对齐,通常跟m一起使用。

+:显示有符号数的符号,

#include <stdio.h>

int main()
{
    printf("Hello World!\n");
    int a = 20;
    printf("%d\n",a);//%d占位符
    printf("a = %d\n",a);
    char c = 'x';
    printf("%d\r\n",c);
    printf("%c\n",c);
    printf("%#x\r\n",a);
    float f = 2.5718;
    printf("f = %.1f\n",f);
    printf("a = [%4d]\n",a);
    printf("a = [%04d]\n",a);
    printf("a = [%-04d]\n",a);
    printf("f = [%4.1f]\n",f);
    printf("f = [%-4.1f]\n",f);
    printf("a = %d, c = %c, f = %f\n",a,c,f);
    //下列情况会出现隐式类型转换,非常危险
    printf("a = %d, c = %c, f = %f\n",f,c,a);
    return 0;
}

(二)输入

  1. getchar():从终端获取一个字符输入。
  2. scanf():格式化输入。
  • 输入中,若有连续多个输入,则scanf()以空格,回车,制表符作为分隔
  • 输入中,指定输入格式:
    • 输入整数时%d,若输入的格式不是整数,不是数字开头,直接退出,scnaf函数中的后续输入都会终止。
    • 不是数字结尾,且不是指定的分隔符,将字母前的数字,作为第一个输入,scanf函数中的后续输入都会终止。
    • %d输入时分隔符不能是数字。
    • %d指定输入数据长度。
    • %*6d表示6个数字抠掉不用存储。不可以抠掉小数点,%*6f可以抠掉小数点。
  • 查找提取:
    • 匹配指定的字符集合:%[指定字符集]
    • 匹配指定的字符集合意外的字符:%*[^指定字符集]

“%d,%d,%d”——>输入的3个数以”,"作为分隔符。

#include <stdio.h>

int main()
{
    //从终端获取一个整数,放到变量a中
    int a;
    printf("请输入一个整数:\n");
    scanf("%d",&a);
    printf("a = %d\n",a);
    //输入时间
    int h,m,s;
    printf("请输入时分秒:\n");
    scanf("%d%d%d",&h,&m,&s);
    printf("%2d%2d%2d\n",h,m,s);
    //从终端获取一个浮点数
    float f;
    printf("请输入一个浮点数:\n");
    scanf("%f",&f);
    //从终端输入字符串
    char name[20];
    printf("请输入你的名字:\n");
    scanf("%s",name);//name为数组,相当于地址
    printf("name = %s\n",name);
	return 0;
}

练习:

#include <stdio.h>

int main()
{
    //输入身份证号,提取出生年月日
    int year,month,day;
    printf("请输入身份证:\n");
    //scanf("%6d%4d%2d%2d",&year,&year,&month,&day);
    scanf("%*6d%4d%2d%2d",&year,&month,&day);
    printf("%4d年%02d月%02d日\n",year,month,day);
    //提取电话号码:单间配套,电话:19754272583
    char str[30];
    printf("请输入:\n");
    scanf("%*[^0123456789]%[0123456789]",str);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值