C语言教程之输入输出

1、最为基本的输入输出——scanf和printf

使用这两个函数需要包含头文件<stdio.h>

样例

#include <stdio.h>

int main(void)
{
    int a,b;//两个加数 
    scanf("%d %d",&a,&b);//读入键盘输入的两个数字(以空格作为分界)并依次存储到a和b两个变量里面 
    //&符号不能忘记,这个符号是把键盘输入存入变量的关键 
    printf("%d + %d = %d",a,b,a+b); 
    return 0;
 } 

输出

2 3
2 + 3 = 5

上面代码中,scanf("%d %d",&a,&b);里面的%d是用来控制输入格式的,同理printf里面的也是这个作用。

输入格式控制符形式

输出格式控制符形式

  • 最完整的样子(实际上使用很少用到如此多参数)
    % [{+,-}] [o] [{m,m.n}] [{l,h}] <格式控制符>
    其中,中括号[]里的内容是可选的,<>里的内容是必须的。
    以下对各个标志的含义简要介绍:

%:表示格式控制的起始符号,必不可少。–格式控制起始位置
+/-:表示对齐标志,+表示右对齐,-表示左对其,缺省情况下为右对齐。–对齐标志
o:表示当实际长度没有格式控制的长度大时,用“o”补全。–补全内容
m/m.n:其中,m表示输出所占位宽,n表示实际取标识符的多少位输出–占位长度
l/h:l对整型指long型,对实型指double型;h用于将整型字符修正为short型
<>:格式控制符

  • 常用的输出格式控制符

%d:用于输出整型数(整型指本质为整型的数,如int、short等)
%c:用于输出一个字符
%s:用于输出一个字符串
%o:以无符号八进制形式输出整数值
%x:以无符号十六进制形式输出整数值
%u:以无符号形式输出十进制数
%f:用来输出浮点数(float),精度为6位小数,第七位四舍五入。
%p:指针的值

  • 控制输出长度

%md:m为指定的输出数据的位宽。如果数据的位数小于m,则左端补以空格(因为默认右对齐,所以左补用以占位);如果数据的位数大于m,则以数据的实际位数输出。

样例

#include<stdio.h>
int main()
 {

    char insertTime[20] = {"1234567890"};
    double insertTime1 = 12345;

    printf("%-15s\n",insertTime);  //左对齐,15位长度,不够补空格

    printf("%15s\n",insertTime);  //右对齐,15位长度,不够补空格

    printf("%015s\n",insertTime);     //右对齐,15位长度,不够补0

    printf("%-15.2f\n",insertTime1);  //左对齐,15位长度,带两位小数,不够补空格

    return 0;
}

输出

直接输出内容

除了能够控制格式输出,我们还可以利用printf函数直接输出汉字等内容(常用作输入提示)

#include <stdio.h>

int main(void)
{
    int a,b;//两个加数 
    printf("请输入两个数:") ;//直接输出文本
    scanf("%d %d",&a,&b);
    printf("%d + %d = %d",a,b,a+b); 
    return 0;
 } 

运行结果

ps:如果使用visual studio 2017或者2019进行输入输出,要使用更安全的scanf_s()和printf_s(),只是换个名字,使用方法差不多

2、非格式化的输入输出函数

2.1puts()和gets()函数

2.1.1puts()函数

  • 头文件为stdio.h
  • puts()函数用来向标准输出设备(屏幕)写字符串并换行
  • 调用格式为puts(s),其中s为字符串变量(字符串数组名或字符串指针)。puts()函数的作用于printf("%s\n",s)相同

2.1.2gets()函数

  • 头文件为stdio.h
  • 函数原型为char * gets(char * str);
  • gets()函数用来向标准输入设备(键盘)读取字符串直到回车结束,不同于fgets,它没有指定读入长度,所以需要注意字符数组str的大小
  • 调用格式为gets(s),其中s为字符串变量(字符串数组名或者字符串指针)。gets()函数的作用与scanf("%s",&s)函数作用类似,使用scanf(“%s”,&s)函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。

样例

#include <stdio.h>
int main( )
{
   char str[100];
 
   printf( "Enter a value :");
   gets(str);
 
   printf( "\nYou entered: ");//这里面的\n是为了换行让输出更加美观
   puts(str);
   return 0;
}

2.2putchar()和getchar()函数

2.2.1putchar()函数

等同于printf("%c",ch);(即输出一个字符)

2.2.2getchar()函数

  • 头文件 stdio.h
  • 函数原型int getchar(void)
  • 从标准输入stdin读入一个字符,程序等待你输入的时候你可以输入多个字符,回车后程序继续执行。但是getchar实际上只读入第一个字符。
  • 常用在exe中暂停程序。

样例

#include <stdio.h>
 
int main( )
{
   char c;
   int num; 
   
   printf( "请输入一个字母:");
   c = getchar( );
   getchar ();//用于读入缓冲区的回车换行符,试试看如果不加会怎么样 
     printf("请输入一个数字:"); 
     num = getchar();
       printf( "\n你输入的字母是: ");
       putchar(c);
       printf( "\n你输入的数字是: ");
       putchar(num); 
     printf( "\n");
   return 0;
}

2.3getch()和getche()

这两个东西一般很少使用,如果感兴趣可以自行深入了解

  • 头文件 conio.h
  • 并非标准C中的函数,建议还是使用getchar()
  • 函数原型分别为:
    int getch(void)当你用键盘输入的时候,屏幕不显示你所输入的字符(不带回显),不需要按回车,程序自动继续进行
    int getche(void)屏幕显示你所输入与的字符(带回显),不需要按回车,程序自动继续进行

以上便是输入输出的大概知识,希望大家阅读后能有所收获0.0

3、题目

在做学生成绩统计系统时,有这样一个要求:我们需要把学生成绩先进行输入,然后再按格式输出,这样在以后查看成绩时可以更直观地看到每个人对应的分数。

输入格式

依次输入两个人的名字和C语言成绩(不允许有多余的空格),因为本题目仅靠查输入输出,所以名字就用char类型单个字符代替

输出格式

先输出一行文字姓名 C语言成绩
换行依次输出名字和成绩,再换行输出average mark:,接着在后面输出正确的平均分

输出的名字长度为2,格式为右对齐
输出的成绩长度为9,小数点后保留2位,格式为右对齐
平均分的输出仅要求小数点后保留2位

输入样例

a 99
b 97

输出样例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容