精华内容
下载资源
问答
  • 2.如果stdin中的数据较少,不符合目前规则规则见后续)所需的,那么程序会阻塞等待输入。 3.已经读走的数据会从stdin消失。 4.在键盘上敲击的每个字符,都会在转换后放在stdin里。 5.敲击回车的时候,stdin中的...

    stdin

    1.一个进程只有一个stdin,所有的输入共用这个stdin。
    2.如果stdin中的数据较少,不符合目前规则(规则见后续)所需的,那么程序会阻塞等待输入。
    3.已经读走的数据会从stdin消失。
    4.在键盘上敲击的每个字符,都会在转换后放在stdin里。
    5.敲击回车的时候,stdin中的数据将会提交给程序处理。

    stdout

    输出有个缓存区,当这个缓存足够大的时候就会输出(缓存有界)。

    规则

    %d:先处理掉所有不可见字符(回车、空格等),遇到数字或者负号开始转换,遇到第一个非数字字符停止转换,返回转换后的结果。
    如果在需要数字字符的时候遇到了非数字字符,则转换失败。

    %f:%f的基本规则同%d,只是数字录入的时候,第一次碰见‘.’的时候不会终止读取。

    %c:存在读取失败,目前stdin中的第一个字符是什么就拿什么。

    %s:先处理所有不可见的字符,然后拿到空格为止
    例如:连续两个%s的情况。如果第一个字符是回车或者空格,则第二个字符吃这个回车或空格

    总结

    总而言之,这个输入缓冲规则就像是一群人(%d,%f,%s,%c)在排队打饭,锅里如果还有饭,这些人就拿走。锅里没饭就等待。%d和%f会挑食。

    展开全文
  • C语言规则菱形图案

    2021-04-26 12:29:57
    7-1 规则菱形图案 (10 分) 输入一个正整数n,输出菱形图案。 输入格式: 不超过100的正整数n。 输出格式: 输出2n-1行星号*,形成一个菱形,规则见样例。 输入样例: 在这里给出一组输入。例如: 5 输出样例:...

     规则菱形图案 (10 分)

    输入一个正整数n,输出菱形图案。

    输入格式:

    不超过100的正整数n。

    输出格式:

    输出2n-1行星号*,形成一个菱形,规则见样例。

    输入样例:

    在这里给出一组输入。例如:

    5

    输出样例:

    在这里给出相应的输出。例如:

        *
       ***
      *****
     *******
    *********
     *******
      *****
       ***
        *
    # include<stdio.h>
    int main()
    {
    	int n,i,j;
    	scanf("%d",&n);
    	for(i=1;i<=n;i++)
    	{
    		for(j=n-i;j>0;j--)
    		{
    			printf(" ");
    		}
    		for(j=1;j<=2*i-1;j++)
    		{
    			printf("*");
    		}
    		printf("\n");
    	}
    	for(i=1;i<=n-1;i++)
    	{
    		for(j=1;j<=i;j++)
    		{
    			printf(" ");
    		}
    		for(j=1;j<=(2*n-1)-2*i;j++)
    		{
    			printf("*");
    		}
    		printf("\n");
    	}
    	return 0;
    }
    

    方法:找规律

     

    展开全文
  • 再看C语言输入

    2013-05-19 11:45:42
    在用到scanf时,我总是小心翼翼的按照自己既定的规则来进行输入。若不小心输入错误的话程序就会得到错误的结果或者直接崩溃了,遇到这种情况也就只有从新运行程序并按照“正确”的方式,全部从新输入一次。 针对...
        一、我最开始接触C时是从printf和scanf开始的。在用到scanf时,我总是小心翼翼的按照自己既定的规则来进行输入。若不小心输入错误的话程序就会得到错误的结果或者直接崩溃了,遇到这种情况也就只有从新运行程序并按照“正确”的方式,全部从新输入一次。
        针对上面出现的两种情况主要由两个原因引起的:
    1、输入并不匹配函数 int fscanf(FILE *fp, char *format, ...) 或 int scanf(const char *format, ...) 中format所指定的输入格式。
    2、输入数据超过而溢出而覆盖其他内存区域。
        二、下面详细介绍一下出现上面两种问题的原因,及相应的解决方法。
    情况1:输入格式不匹配:
    如:
    int i;
    scanf("%d",&i);
    输入内容:c
        上述scanf函数执行的结果并没有从标准输入中读取数据放在i所在内存地址。根据K&R C 对scanf描述:"
    It returns when  format is exhausted.  fscanf returns EOF  if end of file or an error occurs before any conversion; otherwise it returns the number of input items converted and assigned."
        因此scanf函数执行完会返回0。所以我们可以通过对scanf返回值的判断来判定输入格式的正确性。在下面的例子中我们通过scanf_int_decimal函数来实现对输入函数scanf执行结果的判断来确定输入格式的正确与否,函数中scanf("%*[^\n]")和scanf("%*c")用来清空因为错误输入而滞留在输入流stdin中的数据。
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	void scanf_int_decimal(int *p,const char *format);
    	int i;
    	printf("Input value for i:\n");
    	scanf_int_decimal(&i,"%d");
    	return 0;
    }
    void scanf_int_decimal(int *p,const char *format)
    {
    	int n;
    	while((n = scanf(format, p)) != 1)
    	{
    		scanf("%*[^\n]");
    		scanf("%*c");
    		printf("Incorrect format, Input again:\n");
    	}
    }
    情况2:输入数据过多造成溢出:
        如:
    char buf[10];
    scanf("%s",buf);
        输入内容:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,即大于buf的大小。在下面的例子中我们在read_line函数中实现了限定了上限的字符数据输入,在未达到输入上限时去除了输入的换行符'\n',在输入数据超过上限时我们只读取规定了的最大长度,并清空多余的滞留在stdin流中的数据。
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char buf[10];
    	char *read_line(FILE *, char *, char *, unsigned int);
    	read_line(stdin, "Input string:", buf, 10);
    	return 0;
    }
    
    char *read_line(FILE *fp, char *prompt, char *buff, unsigned int n)
    {
    	char *p;
    	printf("%s",prompt);
    	fflush(stdout);
    	if(p = fgets(buff, n, fp))
    	{
    		int last = strlen(buff) - 1;
    		if(buff[last] == '\n')
    			buff[last] = '\0';
    		else
    		{
    			scanf("%*[^\n]");
    			scanf("%*c");
    		}
    	}
    	return p;
    }


    展开全文
  • c语言输入输出函数printf与scanf的用法格式,格式化规则例如:%5.4f等类似问题的说明2009年05月03日 星期日 10:55 Turbo C2.0 标准库提供了两个控制台格式化输入、 输出函数printf( ) 和scanf(), 这两个函数可以在...

    c语言输入输出函数printf与scanf的用法格式,格式化规则例如:%5.4f等类似问题的说明2009年05月03日 星期日 10:55    Turbo C2.0 标准库提供了两个控制台格式化输入、 输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。
        printf()函数用来向标准输出设备(屏幕)写数据; scanf() 函数用来从标准输入设备(键盘)上读数据。下面详细介绍这两个函数的用法。
        一、printf()函数
        printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:
          printf("<格式化字符串>", <参量表>);
        其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,用来确定输出内容格式。
        参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到的错误。
       
        1. 格式化规定符
        Turbo C2.0提供的格式化规定符如下:
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
       符号                  作用
    ──────────────────────────
        %d              十进制有符号整数
        %u              十进制无符号整数
        %f              浮点数
        %s              字符串
        %c              单个字符
        %p              指针的值
        %e              指数形式的浮点数
        %x, %X          无符号以十六进制表示的整数
        %0              无符号以八进制表示的整数
        %g              自动选择合适的表示法
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
        说明:
        (1). 可以在"%"和字母之间插进数字表示最大场宽。
         例如: %3d   表示输出3位整型数, 不够3位右对齐。
                %9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,
                      小数点占一位, 不够9位右对齐。
                %8s   表示输出8个字符的字符串, 不够8个字符右对齐。
        如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出; 若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
        另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
        例如:   %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。
        如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,小数点前的数字代表最小宽度。
        例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除。
        (2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
        例如:   %ld   表示输出long整数
                %lf   表示输出double浮点数
        (3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可说明输出为左对齐, 否则为右对齐。
        例如:   %-7d 表示输出7位整数左对齐
                %-10s 表示输出10个字符左对齐
        2. 一些特殊规定字符
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
        字符                           作用
    ──────────────────────────
         /n                   换行
         /f                   清屏并换页
         /r                   回车
         /t                   Tab符
         /xhh                 表示一个ASCII码用16进表示,
                              其中hh是1到2个16进制数
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
        由本节所学的printf()函数, 并结合上一节学习的数据类型, 编制下面的程序, 以加深对Turbo C2.0数据类型的了解。
        例1
         #include<stdio.h>
         #include<string.h>
         int main()
         {
              char c, s[20], *p;
              int a=1234, *i;
              float f=3.141592653589;
              double x=0.12345678987654321;
              p="How do you do";
              strcpy(s, "Hello, Comrade");
              *i=12;
              c='/x41';
              printf("a=%d/n", a);     /*结果输出十进制整数a=1234*/
              printf("a=%6d/n", a);    /*结果输出6位十进制数a= 1234*/
              printf("a=%06d/n", a);   /*结果输出6位十进制数a=001234*/
              printf("a=%2d/n", a);    /*a超过2位, 按实际值输出a=1234*/
              printf("*i=%4d/n", *i); /*输出4位十进制整数*i= 12*/
              printf("*i=%-4d/n", *i); /*输出左对齐4位十进制整数*i=12*/
              printf("i=%p/n", i);     /*输出地址i=06E4*/
              printf("f=%f/n", f);     /*输出浮点数f=3.141593*/
              printf("f=6.4f/n", f);   /*输出6位其中小数点后4位的浮点数
                                          f=3.1416*/
              printf("x=%lf/n", x);    /*输出长浮点数x=0.123457*/
              printf("x=%18.16lf/n", x);/*输出18位其中小数点后16位的长浮点
                                          数x=0.1234567898765432*/
              printf("c=%c/n", c);     /*输出字符c=A*/
              printf("c=%x/n", c);     /*输出字符的ASCII码值c=41*/
              printf("s[]=%s/n", s);   /*输出数组字符串s[]=Hello, Comrade*/
              printf("s[]=%6.9s/n", s);/*输出最多9个字符的字符串s[]=Hello,
                                         Co*/
              printf("s=%p/n", s);     /*输出数组字符串首字符地址s=FFBE*/
              printf("*p=%s/n", p);    /* 输出指针字符串p=How do you do*/
              printf("p=%p/n", p);     /*输出指针的值p=0194*/
              getch();
              retunr 0;
         }
        上面结果中的地址值在不同计算机上可能不同。
        例1.中第一条语句#include<stdio.h>的含义是调用另一个文件stdio.h, 这是一个头文件, 其中包括全部标准输入输出库函数的数据类型定义和函数说明。
        Turbo C2.0对每个库函数便用的变量及函数类型都已作了定义与说明, 放在相应头文件"*.h"中, 用户用到这些函数时必须要用#include<*.h>或#include"*. h" 语句调用相应的头文件, 以供连接。若没有用此语句说明, 则连接时将会出现错误。
       
        二、scanf()函数
        scanf()函数是格式化输入函数, 它从标准输入设备(键盘) 读取输入的信息。
    其调用格式为:
          scanf("<格式化字符串>", <地址表>);
        格式化字符串包括以下三类不同的字符;
        1. 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。
        2. 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。
        3. 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
        地址表是需要读入的所有变量的地址, 而不是变量本身。这与printf()函数完全不同, 要特别注意。各个变量的地址之间同","分开。
        例2:
         main()
         {
              int i, j;
              printf("i, j=?/n");
              scanf("%d, %d", &i, &j);
         }

        上例中的scanf()函数先读一个整型数, 然后把接着输入的逗号剔除掉, 最
    后读入另一个整型数。如果","这一特定字符没有找到, scanf()函数就终止。若
    参数之间的分隔符为空格, 则参数之间必须输入一个或多个空格。
        说明:
        (1). 对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就
    是地址, 因此使用scanf()函数时, 不需要在它们前面加上"&"操作符。
        例3
          mian()
         {
              char *p, str[20];
              scanf("%s", p);          /*从健盘输入字符串*/
              scanf("%s", str);
              printf("%s/n", p);       /*向屏幕输出字符串*/
              printf("%s/n", str);
         }

        (2). 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数, 表示任何读操作中的最大位数。
        如例3中若规定只能输入10字符给字符串指针p, 则第一条scanf() 函数语句变为
              scanf("%10s", p);
        程序运行时一旦输入字符个数大于10, p就不再继续读入, 而后面的一个读入函数即scanf("%s", str)就会从第11个字符开始读入。
        实际使用scanf()函数时存在一个问题, 下面举例进行说明:
        当使用多个scanf()函数连续给多个字符变量输入时, 例如:
         main()
         {
              char c1, c2;
              scanf("%c", &c1);
              scanf("%c", &c2);
              printf("c1 is %c, c2 is %c", c2/1, c2);
         }

        运行该程序, 输入一个字符A后回车 (要完成输入必须回车), 在执行scanf ("%c", &c1)时, 给变量c1赋值"A", 但回车符仍然留在缓冲区内, 执行输入语句 scanf("%c", &c2)时, 变量c2输出的是一空行, 如果输入AB后回车, 那么输出结果为: c1 is A, c2 is B。
        要解决以上问题, 可以在输入函数前加入清除函数fflush()( 这个函数的使用方法将在本节最后讲述)。修改以上程序变成:
         #include<stdio.h>
         main()
         {
              char c1, c2;
              scanf("%c", &c1);
              fflush(stdin);
              scanf("%c", &c2);
              printf("c1 is %c, c2 is %c", c1, c2);
         }
     

    展开全文
  • c语言输入输出函数printf与scanf的用法格式,格式化规则例如:%5.4f等类似问题的说明  Turbo C2.0 标准库提供了两个控制台格式化输入、输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同...
  • 编写一个程序,将输入字符串中的字符按如下规则排序(一个测试用例可能包含多组数据,请注意处理)。 规则1:英文字母从A到Z排列,不区分大小写。 如,输入:Type输出:epTy 规则2:同一个英文字母的大小写同时存在...
  • 选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。 Input 输入数据有多组,每组占一行,每行的第一个数是n(2),表示评委的人数,然后是n个评委的打分。 Output ...
  • C语言输入输出

    2015-08-16 10:09:47
    ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  1....2.命名规则  只能由26个英文字母大小写,10个阿拉伯数字,下划线组成。  严格区分大小
  • C语言输入的统计

    2013-08-06 23:53:12
    此处主要以统计字符的个数,单词的个数,行数来练习一些递增的规则和while循环还有for循环 首先写一个统计字符数的小程序,示例如下: [root@CWG hc]# cat zftj.c #include main() {  long C_NUM = 0; //...
  • C语言语法编译器,实现自定义语法规则,可以自己输入语法规则,程序可以自动分析
  • c语言

    2018-07-09 22:01:22
    苏嵌 项目实战 学习日志 姓名:高瑞 日期:2018/7/9 今日学习任务 C语言的... 取反 异或3)由运算符组成的表达式 表达式中不通的数据类型的转换4)基本输入输出函数的调用 使用方法 规则5)几个特殊的函数 关键字 ...
  • 题目:输入n个字符串,并按照一定规则进行升序排序和输出 我的排序规则:按照字符串里面英文字符的值之和 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #...
  • 不知道什么原因,基本上所有的C语言入门书籍的第一个C语言实体,都是“Hello Word!”;我不知道这是不是行业的“潜规则”, 就像某些行业的潜规则一样,不过这个都不重要了,重要的是就是“她”把无数的程序员带进...
  • 数据类型 变量与常量 1、看如下代码 ...变量的命名也有如下规则:只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。且不能与C语言的关键字重名。 数据类型和关
  • 1、cin 1、cin.get() 2、cin.getline() 3、getline() 4、gets() 5、getchar() 对上述函数举例说明使用规则
  • C语言,scanf读取数字的规则

    千次阅读 2020-10-19 12:42:22
    scanf读取数字的规则: 用户输入的内容会保存在输入队列中, 读取%d时,读取输入队列中的数字,直到遇到不是数字的字符(例如空格、小数点)就结束一次读取。 读取%f时,读取输入队列中的内容,直到遇到第二个...
  • 谭浩强c语言

    2012-12-09 12:23:23
    C语言技术 1 C语言概述 2 1.1 C语言的发展过程 2 ...1.8 输入和输出函数 4 1.9 C源程序的结构特点 5 1.10 书写程序时应遵循的规则 5 1.11 C语言的字符集 6 1.12 C语言词汇 6 1.13 Turbo C 2.0集成开发环境的使用 7
  • 第一章 语言概述 本章主要介绍C语言程序的结构和书写规则以及Turbo C V2.0的基本操作 C语言的发展简史和特点 语言程序的结构与书写规则 C语言的语句和关键字 Turbo C V2.0的基本操作 1.1 C语言的发展简史和特点 一...
  • C语言基本数据类型及转换规则

    千次阅读 2014-05-08 16:04:13
    C语言的基本数据类型;有点奇怪的是为什么float和double不用signed/unsigned修饰。 符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例 -- -- char 8 -2^7 ~ 2^7-1 %...
  • 程序中的变与不变——变量与常量 标识符和关键字 ... 标准C语言不限制标识符的长度,但是受到各个版本的C语言编译系统的限制。大多数情况下,标识符的前8位有效,也就是说,如果两个标识符的前8位相...
  • C语言教程

    2019-12-16 10:02:50
    C语言教程导航 C语言教程 C语言简介 C 环境设置 C程序结构 ... C 作用域规则 C 数组 指针 C字符串 C结构体 C联合体 C 位域 C typedef C输入&输出 C文件...
  • C语言概述--c语言课件

    2009-09-18 17:32:54
    1 C语言概述 2 1.1 C语言的发展过程 2 1.2 当代最优秀的程序设计语言 2 ...1.8 输入和输出函数 5 1.9 C源程序的结构特点 6 1.10 书写程序时应遵循的规则 6 1.11 C语言的字符集 6 1.12 C语言词汇 7
  • C语言概念

    2019-04-30 15:36:19
    文章目录1 概念1.1 c语言历史1.2C语言程序设计简介1.2.1main函数1.2.2编程风格1.2.3预处理指令1.2.4输入与输出 1 概念 语言是符号与规则组成的 程序有一组指令组成用于在计算机上执行某个任务 程序设计语言可分为...
  • C语言复习

    2021-01-11 16:02:13
    C语言中定义的规则 流程图(flow chart) 起止框 输入输出框 处理框 判断框 循环 软件开发过程:1确定程序要求 2.设计与开发(1.分析问题 2.选择一个全面解决方案算法 3.编写程序4.测试并改正程序)3.文档编制 4....
  • 题目内容:参照小雅中的课程内的权限设计,自行设计权限规则,设计并编程实现教师、助教、学生三种角色分别对文件资源的增、删、浏览、下载的权限。输入T,A,S代表角色,A,D,V,W代表增、删、浏览、下载权限,...
  • 由于我们可能遇到输入为二叉树,或是不规则的,故我们声明的结构体为包含兄弟指针和子指针如下图 对比图 由于我们包含输入,故错误输入即不按规定输入的情况,我们仅对输入失误做一定的debug,不对恶意输入做debug...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,343
精华内容 537
关键字:

c语言输入规则

c语言 订阅