精华内容
下载资源
问答
  • scanf的输入格式

    千次阅读 2017-12-08 21:16:37
    由一道要求用scanf读入包含空格字符串题目引来scanf  语法:   #include  int scanf( const char *format, ... );  类似函数有  int scanf(const char *format, ...);  int fscanf(FILE *stream...

    由一道要求用scanf读入包含空格的字符串的题目引来的文

    原文地址

    http://lib.csdn.net/article/c/25294

    scanf 

    控制字符 说明 
    %c 一个单一的字符 
    %d 一个十进制整数 
    %i 一个整数 
    %e, %f, %g 一个浮点数 
    %o 一个八进制数 
    %s 一个字符串 
    %x 一个十六进制数 
    %p 一个指针 
    %n 一个等于读取字符数量的整数 
    %u 一个无符号整数 
    %[] 一个字符集 
    %% 一个精度符号

    1.scanf()读取匹配format(格式)字符串的输入. 当读取到一个控制字符, 它把值放置到下一个变量. 空白(tabs, 空格等等)会跳过. 非空白字符和输入匹配, 然后丢弃. 如果是一个在%符号和控制符间的数量, 那么只有指定数量的字符转换到变量中. 如果scanf()遇到一个字符集(用%[]控制字符表示), 那么在括号中的任意字符都会读取到变量中. scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF. 
    2.scanf()函数的一般格式为:scanf("格式字符串",输入项首地址表)
    3.scanf的格式控制的一般形式为:%[*][宽度][F|N][h|l]类型字符
    []中的控制字符为可选项 
    4."*"表示该输入项读入后不赋予任何变量,即跳过该输入值。
    5."宽度"表示输入读入字符的长度,对于整型表示截取相应宽度的数字赋给后面列表中的相应变量;对于字符型表示读入相应长度的字符后把第一个字符赋给相应的变量,其余的自动舍弃。例如scanf("-=",&a, &b);如果输入为12345则将12赋给a,将45赋给b;scanf(",<",&a, &b);如果输入为12345则将'1'赋给a,将'3'赋给b .
    "%s" 整个输入作为一个串,并设置末尾的'\0'
    "%ns",n为整数,读入的串最长不超过n,然后在末尾补'\0'
    %nf 读入的浮点数最多有n位整数,位数多于n,会截断。
    "%n[a-z]" 读入最多n个字符,如果遇到非a-z的字符,停止
    "%[^=]" 读入任意多的字符,直到遇到"="停止
    "%n[^=]" 读入"="号前的至多n 个字符

    6.F 、N、h、l分别表示远指针、近指针、短整和长整型。
    7.对于输入字符串还有一些比较有用的控制。
        例如经常需要读入一行字符串,而这串字符里面可能有空格、制表符等空白字符,如果直接用%s是不可以的,于是有些人就想到用gets(),当然这也是一种选择,但是懂C的人基本上都知道gets()是一个很危险的函数,而且很难控制,特别是与scanf()交替使用时前者的劣势更是一览无余,所以gets()一般是不推荐用的,其实用%[^\n]就可以很好的解决这个问题了,^表示"非",即读入其后面的字符就结束读入。这样想读入一行字符串直接用scanf("%[^\n]%*c",str);就可以了,
    %*c的作用是读入\n,否则后面读入的将一直是\n。

    所有对%s起作用的控制都可以用%[],比如%[0-9]表示只读入'0'到'9'之间的字符,%[a-zA-Z]表示只读入字母,
    '-'是范围连接符,当然也可以直接列出你需要读入的字符。
    如果你只需要读"abc"里面的字符就可以用%[abc] (或者%[cab]、%[acb]、%[a-c]、%[c-a].....),
    如果想读入某个范围之外的字符串就在前面加一个'^',如:%[^a-z]就表示读入小写字母之外的字符。
    例如从键盘输入的"1235ab86"中读取1235、86给n,有如下方法:
    #include <stdio.h>
    bool skip(){
         scanf("%*[^0-9]");
         return true;
    }
    void main()
    {
          int n;
          while(skip() && scanf("%d", &n)!=EOF)
            printf("%d\n", n);
    }
    输出为:1235
            86

    也就是说如果要读入Hello World

    应该是char a[100];  scanf("%[^\n]",&a);  printf("%s",a);

    展开全文
  • scanf的输入格式问题

    2013-10-18 22:39:37
    #include<stdio.h> int main() { int a,b; scanf("%d,%d",&a,&b); printf("%d\n",a+b); return 0; } ...我知道输入格式不对,但是具体为什么就不知道了,求大神
  • 有关scanf的输入格式不正确之说

    千次阅读 2016-04-12 09:59:43
    int main() { // your code goes here int a;...原因:如果scanf函数未按指定格式输入,数据是不会存入到变量中去,变量还会保持原有数据。在程序中,a没有给初值,所以输出了一个随机值. ...
    int main() {
        // your code goes here
        int a;
        scanf("%d",&a);
        printf("%d\n",a);
    }

    然后输入’a’
    输出结果为:-1219387827
    原因:如果scanf函数未按指定格式输入,数据是不会存入到变量中去的,变量还会保持原有的数据。在程序中,a没有给初值,所以输出了一个随机值. 你想输入int数据,但输入了一个字符,这个字符会滞留在缓存中,直到缓存被清理。如果这条语句在循环中,会遇上出现死循环的现象。如果a赋初值,那么输出即为初值。

    scanf – 函数名字由英文 scan 和 f 组成, scan 是扫描,f 是 format / formated 有格式,
    printf – 函数名字由英文 print 和 f 组成, print 是 打印,f 是 format / formated 有格式。
    有格式输入输出函数,就是要有格式,而且变量与数据与格式必须匹配。
    格式不匹配,例如 float 变量用了%d输入输出便会出错。

    int main() {
        // your code goes here
        int a;
        scanf("%f",&a);
        printf("%f\n",a);
    }

    输入4或4.0,均输出0.000000

    展开全文
  • 输入格式: 输入一个算式,中间没有空格。 输出格式: 如果算式正确,请输出“Right!”,否则输出“Wrong!”。 输入样例: 例如: 1+2=3 输出样例: 在这里给出相应输出。例如: Right! 这个题如果当作字符串输入话...

    7-5 算式自动判断 (10 分)
    现在人工智能非常火爆,作为计算机专业的学生,要学会使用计算机编制一些让计算机显得有智能的程序,首先从最简单的题目开始,判断一个形如A+B=C的四则运算题是否正确。其中两个运算数为随机整数,运算符为加减乘除四种运算之一。

    输入格式:
    输入一个算式,中间没有空格。

    输出格式:
    如果算式正确,请输出“Right!”,否则输出“Wrong!”。

    输入样例:
    例如:

    1+2=3
    输出样例:
    在这里给出相应的输出。例如:

    Right!

    这个题如果当作字符串输入的话,会比较麻烦,还要考虑负数的情况。 这里采用scanf的格式化输入 简直太强了 暴力

    在这里插入代码片
    ```#include<bits/stdc++.h>
    #include<string>
    using namespace std;
    int main()
    {
    	int x,y,z;
    	char op;
    	scanf("%d%c%d=%d",&x,&op,&y,&z);    // 这里采用了scanf的一种输入,包括冒号,百分号,等符号是可以直接输入的
    	if(op=='+'){
    		if(x+y==z){
    			printf("Right!");
    		}
    		else{
    			printf("Wrong!");
    		}
    	}
    	else if(op=='-'){
    		if(x-y==z){
    			printf("Right!");
    		}
    		else{
    			printf("Wrong!");
    		}
    	}
    	else if(op=='*'){
    		if(x*y==z){
    			printf("Right!");
    		}
    		else{
    			printf("Wrong!");
    		}
    	}
    	else if(op=='/'){
    		if(y==0||x/y!=z){
    			printf("Wrong!");
    		}
    		else{
    			printf("Right!");
    		}
    	}
    	
    	
    }
    
    
    
    
    展开全文
  • scanf输入格式

    2014-06-17 16:19:45
    注意上面的scanf("%d,%d,%d",&a,...scanf的作用是:按照a,b,c的内存地址将a,b,c的值存进去。变量a,b,c的地址是在编译连续阶段分配的。 这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据是,数据之间
    注意上面的scanf("%d,%d,%d",&a,&b,&c);中%d,%d,%d之间有逗号,输入数据时就必须用逗号将各个数据隔开
    &a,&b,&c中的&是地址运算符,&a指a在内存中的地址。scanf的作用是:按照a,b,c的内存地址将a,b,c的值存进去。变量a,b,c的地址是在编译连续阶段分配的。
    这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据是,数据之间不可以加逗号,只能是空格或tab键或者回车键——“2 3 4”/“2(按tab)3(按tab)4(按tab)”。若是“%d,%d,%d”,则在输入数据时需要加“,”——“2,3,4”.
    展开全文
  • scanf输入格式的一些问题

    万次阅读 2017-06-10 11:37:32
    scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。   ① 遇空格、“回车”、“跳格”键。   ② 遇宽度结束。   ③ ...
  • 后来发现是scanf语句问题,整段代码如下, int main() { scanf("%d,%d",&n,&m); for(int i=1;i<n;++i) { for(int j=i+1;j<=n;++j) { if(m%(i+j)==0)// { TIME++; ...
  • scanf常见输入格式 printf常见输出格式 scanf的格式控制符: 格式符 说明 d,i 用于输入十进制整数 u 以无符号十进制形式输入十进制整数 o(字母) 用于输入八进制整数 x 用于输入十六进制整数 c...
  • scanf格式输入

    2020-04-27 09:51:36
    scanf()函数的功能是从计算机默认的输入设备(一般指键盘)向计算机主机输入数据。 3.4.1 scanf()函数的一般格式 调用scanf()函数的一般格式如下: scanf("格式字符串",输入项地址表); 例如: scanf("%d%f",&...
  • 名称:0029 这种scanf格式输入数据 作者:丁进 时间:2021.2.21 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,问在键盘上如何输入? #include <stdio.h> int main() { int a, b; float x, y; scanf_s...
  • C++ scanf和printf格式输入输出

    千次阅读 2019-06-18 16:09:32
    C++ scanf和printf格式输入输出 本文用于介绍scanf和printf基本使用方法
  • 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100),分别是学生人数和多选题个数。随后 M 行,每行顺次给出一道题满分值(不超过 5 正整数)、选项个数(不少于 2 且不超过 5 正整数)、...
  • scanf的格式输入

    千次阅读 2007-11-20 22:11:00
    %d,遇到数字,+,-以外字符结束,可跳过空格 %f,,%lf:遇到数字, ., e,+,-之外字符结束,可跳过空格%... 假如程序中出现这样代码,scanf("%d,%s,%c,%c).虽然程序是以 , 作为分隔,但%s是不认这个 , ,它只认空格,所以
  • scanf()格式输入

    2019-04-22 19:30:03
    有种带[]的格式化输出方式 此格式控制符基本格式为:%[scanfset] #include<stdio.h> int main() { char str[100] ; scanf("%[^!]&s",str);//以!结束输入 //scanf("%[^!]%s",str); // scanf...
  • 今天写了一道很简单题,用递归解,但是处理输入格式就花了很多时间,在答案区找了很久,发现大家写都很复杂,既然输入函数是必须使用,那么为什么不好好研究一下呢? 第一种: [123,2,3,4,5] 这种输入处理...
  • 格式控制符:因为计算机中所有数据都是二进制 0、1 代码,所以输入输出时候要用格式控制符告诉计算机以什么形式将二进制数据显示出来或保存进去。 1、两个相邻的格式控制符之间,不指定数据分隔符,则相应...
  • 对于刚接触C语言同学来说可能会遇到这个问题因为博主也是个菜鸟经常因为搞不清楚单精度双精度还有输入输出格式的问题就这个问题也百度很多次所以在这里总结一下分享给大家printf输出格式1.转换说明符 %a(%A) ...
  • scanf 格式输入

    2016-11-27 20:21:49
    它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定变量之中,其关键字最末一个字母f即为“格式”(format)之意。 [编辑本段]scanf函数一般形式  scanf(格式控制,地址表列)  int scanf(char *...
  • C++入门经典-例2.5-使用附加格式说明scanf函数的格式输入 1:代码如下: // 2.5.cpp : 定义控制台应用程序入口点。 // #include "stdafx.h" int main() { long iLong; /*长整型变量*/ short iShort; ...
  • scanf格式输入问题

    2021-03-15 15:00:26
    scanf格式输入问题(不断更新) 空白字符(white space):一般在程序中,空白字符指是空格(space),回车(enter)和缩进符(table)。 scanf格式占位符里空格可以匹配一切空白字符。 可以利用第2条,格式化...
  • 注意scanf()的输入格式

    2018-12-30 17:00:31
    今天遇到一个bug是因为想输入字符串却在scanf里写是%d,这样低级错误以后不能再犯,以此为戒
  • 刚学习C语言同学经常会在学习字符输入时遇到还没有输入字符,但字符变量已经被赋值情况。如: #include<stdio.h> int main(){ int n; char a; scanf("%d",&n);//不一定非是整型只要在输入字符前...
  • c语言输入输出函数printf与scanf的用法格式,格式化规则例如:%5.4f等类似问题的说明  Turbo C2.0 标准库提供了两个控制台格式输入、输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同...
  • C语言scanf输入格式理解与总结

    千次阅读 2017-01-10 11:59:11
    scanf函数一般形式 scanf函数是一个标准库函数,它函数原型在头文件“stdio.h”中。与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数一般形式为:  scanf(“格式控制字符...
  • scanf函数与格式输入与输出例题 scanf函数 scanf函数(格式输入函数) 一般形式为:scanf(“格式控制字符串”,地址表列); 地址表中给出各种变量地址。 地址是由地址运算符“&”后跟变量名组成。 下面都是...
  • 如下代码所示情况,scanf语句放入while循环判断条件中,此时输入变量a话,可以直接加空格形式连续输入,连续输入完毕后,回车,再按ctrl+z键,再回车,程序即输出最大值。程序中EOF含义为(-1),代表输入...
  • while循环使用scanf()标准输入的结束条件
  • C++入门经典-例2.4-使用scanf格式输入函数得到用户输入的数据 1:puts函数可以输出提示信息字符串。 2:代码如下: // 2.4.cpp : 定义控制台应用程序入口点。 // #include "stdafx.h" int main() { ...

空空如也

空空如也

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

scanf的输入格式