精华内容
下载资源
问答
  • scanf输入的结束是以回车作为结束的,当你输入数据后,按回车,这样表示一次输入结束。 例如 scanf("%d",&a); scanf("%d",&b); 这样你运行程序的时候就应该输入第一个整数然后按回车,输入第二...
    声明:我写这一系列文章在讲述过程中可能用了一些大白话,也可能有的地方墨迹了一些,但旨在把一些没有基础但很想学软件开发的一些人领进门来,另外该文章我同时也在百度经验发表。

    用c语言编写一个类似下面的简单的加法程序我们应该已经会了。

    main()

    {

      int a=5;

      int b=6;

      int c;

      c=a+b;

      printf("%d+%d=%d",a,b,c);

    }

    如果想从键盘输入2个任意的整数求和,也就是说变量a和b里存储的值是从键盘输入的,而不是我们直接赋值的,那我们就需要学习sanf函数的用法,它的使用方法跟printf类似,同样被包含在stdio.h头文件中。

    像变量a中输入一个整数的写法是 scanf("%d",&a),注意变量a前面的&为取地址运算符,表示找到变量a的内存地址,很多初学者忘记加这个符号写成scanf("%d",a),而你这样写编辑器是不会提示错误的但运行时你从键盘输入的数却并没有存放到a变量里。

    错误程序举例:

    main()

    {

     int a;

     printf("请从键盘输入一个整数:");

     scanf("%d",a);//这里没有加地址运算符

     printf("a变量里的值是%d",a);

    }

    运行结果截图:


    scanf输入的结束是以回车作为结束的,当你输入数据后,按回车,这样表示一次输入结束。

    例如

    scanf("%d",&a);

    scanf("%d",&b);

    这样你运行程序的时候就应该输入第一个整数然后按回车,输入第二个整数然后按回车,也就是有几个scanf你就应输入几次并按次车,这时你从键盘上输入的两个整数就已经被存放到a和b变量里了。

    你还记得吗printf的双引号里的内容是要输出出来的,那这里你一定要记住scanf双引号里的内容是表示要从键盘输入的内容,请看下面举例

    main()

    {

      int a;

      scanf("请从键盘输入一个整数%d",&a); //这样写,当你运行程序的时候"请从键盘输入一个整数"这几个字并不会输出到屏幕上,因为你是放在了scanf里,所以要想给变量a从键盘上赋值10,你就应从键盘上输入"请从键盘输入一个整数10"而不是直接输入10

      printf("a=%d",a);

    }


    那么正确的写法应该这样写:

    main()

    {

      int a;

      printf("请从键盘输入一个整数:");

      scanf("%d",&a); 

      printf("a=%d",a);

    }

    对于下面的代码如果我想最后a的值是5,b的值是6应怎样从键盘输入?

    main()

    {

      int a;

      int b;

      printf("请从键盘输入两个整数用,号隔开:");

      scanf("%d,%d",&a,&b);

      printf("a=%d,b=%d",a,b);

    }

    答案应是输入5,6然后回车,你答对了吗?

    好目前为止我们写的小程序都是从上到下一行一行执行,执行完后程序就结束了,像这种流水账似的程序就称为顺序结构。

    下节我们介绍c语言的选择结构,也就是能让电脑自动地判断一些事情,从而有选择地执行一些代码而不是从上到下把所有代码都执行一遍。


    展开全文
  • scanf()输入float型数据时出错

    千次阅读 2013-12-28 18:01:10
    我们这里用的是VC++6.0的编译环境,下面我们来讨论一下C语言中用scanf()输入float型数据是出错问题。 >>出错代码例举: >出错代码1(含有结构体): #include struct student { float a[3]; }stu[5]; int main()...

    我们这里用的是VC++6.0的编译环境,下面我们来讨论一下C语言中用scanf()输入float型数据是出错问题。

    出错代码例举

    出错代码1(含有结构体):

    #include <stdio.h>
    
    struct student
    {
    	float a[3];
    }stu[5];
    
    int main()
    {
    	scanf("%f",&stu[0].a[0]);
    	return 0;
    }

    出错代码2(含有二维数组):

    #include <stdio.h>
    
    int main()
    {
    	int i = 0, j = 0;
    	float array[3][3];//float二维数组
    
    	for (i = 0; i < 3; ++i)
    	{
    		for (j = 0; j < 3; ++j)
    		{
    			scanf("%f",&array[i][j]);
    		}
    	}
    	
    	return 0;
    }

    从上面这两段代码来看,语法上应该是没有什么错误啊,可是为什么当我们输入数据的时候会弹出"error"呢?

    下面我们来分析一下原因:

    VC++6.0这个软件是98年的时候发布的。也就是说它产生于一个资源紧缺的dos时代,而浮点型占用资源比较大,所以VC++6.0在编译时会尽量不加入无关部分。

    当检测到你的整个代码里面没有需要用到浮点数据时,就不加入浮点链接库,从而导致错误。

    VC++6.0能正确的识别单个浮点型(float a;)、一维浮点型数组(float array[5];),但是却不能识别更加复杂一点的结构,如:二维以上的浮点型数组,结构体,等。

    因此,对于这样的问题,我们的解决思路可以从两个方面来考虑:

    • 1.让系统自己能识别并添加浮点链接库,支持浮点运算。
      • 1).在代码中显式的定义一个浮点型的变量,并初始化,让系统知道我用了浮点型数据。
      • 2).自己编写浮点型运算函数。
    • 2.将不能识别的数据类型改为能识别的数据类型。
      • 1).将二维数组转化为一维数组
      • 2).或者直接转化为单个变量

    解决办法简单举例:

    在代码中定义一个浮点型的变量并初始化,如:

    #include <stdio.h>
    
    int main()
    {
    	int i = 0, j = 0;
    	float a = 1.0;//定义一个float型变量,并初始化
    	float array[3][3];//float二维数组
    
    	for (i = 0; i < 3; ++i)
    	{
    		for (j = 0; j < 3; ++j)
    		{
    			scanf("%f",&array[i][j]);
    		}
    	}
    	
    	return 0;
    }


    转载请保留原文地址:http://blog.csdn.net/nonknown/article/details/17635039



    参考资料:http://www.doc88.com/p-490187404796.html

    展开全文
  • 格式输入函数scanf

    千次阅读 2019-07-14 21:13:33
    格式输入函数 1.scanf函数的一般格式 Scanf函数是一个标准库函数,其函数原型在头文件stdio.h中,scanf函数的一般形式如下 Scanf(格式控制,地址表列); 其中,格式控制的作用与printf函数相同,但不能显示非格式...

    格式输入函数

    1.scanf函数的一般格式
    Scanf函数是一个标准库函数,其函数原型在头文件stdio.h中,scanf函数的一般形式如下

    Scanf(格式控制,地址表列);

    其中,格式控制的作用与printf函数相同,但不能显示非格式字符串(普通字符),也就是不能显示提示字符串。地址表中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如:&a,&b分别表示变量a和变量b的地址,这个地址就是编译系统在内存中给a,、b变量分配的地址

    Eg;使用scanf函数输入数据
    在这里插入图片描述

    注意scanf(“%d,%d”)格式控制的格式要求在输入数据时严格根据要求两数之间必须以逗号隔开
    如果用scanf(“%d%d”)%d%d之间什么都不用加,这时候输入的两个数之间可以以一个或多个空格间隔,也可用enter,跳格键 除此之外用别的字符间隔必须按照格式输入
    如 scanf(“%da%d”)那么输入两数就要以A来间隔1ab
    使用scanf函数实现数据输入

    在这里插入图片描述

    2.格式控制
    格式控制的一般形式如下
    %【*】【域宽】【长度】类型
    其中有括号【】的项为任选项
    ⑴一般形式中的“类型”,即scanf函数的格式字符
    Scanf格式字符
    格式 字符意义
    d 输入十进制整数
    o 输入八进制整数
    x 输入十六进制整数
    u 输入无符号十进制整数
    c 输入单个字符
    s 输入字符串
    F、e、g 输入实型数据(用小数形式或者指数形式)

    ⑵一般形式中的“*”用来表示该输入项读入后不赋予相应的变量,即跳过该输入值
    Scanf(“%d %*d%d”,&a,&b);当输入 12 13 14时,把12赋值给a,13被跳过,14赋值给b

    ⑶所谓的域宽 就是指定输入数据所占宽度,域宽应该为正整数
    例如
    Scanf(“%5d%”,&x);
    当输入 12345678时,把12345赋给变量X,其余部分被截取
    Scanf(“%4d%4d”,&x,&y);
    当输入12345678时,把1234赋给x,5678赋值给y

    ⑷”长度”格式字符为1和h,1表示输入长整形数据和双精度浮点数,h表示输入短整形数据
    Scanf函数注意事项
    ①scanf函数没有精度控制
    Scanf(“%5.2d%10.2f”,&x,&y);
    上述语句是非法的
    ②Scanf函数要求给出变量地址,所以“&”不能少

    **关于%d 的疑问
    %d只能跳过0-99 超过100就不能跳过为什么?

    在这里插入图片描述
    第二个数大于100不能跳过

    在这里插入图片描述

    小于100可以跳过

    我也不知道为什么 知道的私信我互相学习一下

    展开全文
  • # include <stdio.h> struct STU { char name[20]; int age; char sex; char num[20]; }; int main(){ struct STU sut[3];... scanf("%s %d %s %s",sut[0].name,sut[0].age,sut[0].sex,sut[0].num); }
    # include <stdio.h>
    struct STU
    {
        char name[10];
        int age;
        char sex;
        char num[20];
    };
    int main()
    {
        struct STU stu[3];
        scanf ("%s%d %c%s", stu[0].name, &stu[0].age, &stu[0].sex, stu[0].num);/*%c前面要加空格, 不然输入时会将空格赋给%c*/
       	printf("学生姓名:%s 学生年龄:%d 学生性别:%c 学生学号:%s\n", stu[0].name, stu[0].age, stu[0].sex, stu[0].num);
    }
    
    
    展开全文
  • 数据结构——栈——2016_11_21

    万次阅读 多人点赞 2016-11-21 21:35:58
    //定义栈结构 typedef struct{ int * base; int * top; int stacksize; }SqStack; //初始化栈 void InitStack(SqStack * s){ s->base=(int *)malloc(stack_init_size*sizeof(int)); if(!s->base) exit(0); ...
  • 数据结构——链队列——2016_12_27

    万次阅读 多人点赞 2016-12-27 22:39:58
    default:printf("输入参数有误,请重新输入!\n"); } printf("请输入操作序号1.插入 2.删除 3.销毁 4.退出\n"); scanf("%d",&x); } return 0; } 程序截图: ...
  • 数据结构-顺序表基本操作的实现(含全部代码)

    万次阅读 多人点赞 2018-09-13 22:14:57
    今天起开始编写数据结构中的各种数据结构及其算法的实现。 主要依据严蔚敏版数据结构教材以及王道数据结构考研辅导书。 今天是线性表中的顺序表的实现,主要实现函数如下,读者有需要可以评论,我可以适当加几个。...
  • scanf

    2013-11-06 15:57:37
    1函数原型 int scanf( const char *format, .....函数 scanf() 是从标准输入流 stdio 中读内容的通用子程序,可以读入全部固有类型的数据并自动转换成机内形式。 2返回值 scanf()函数返回成功赋值的数据项数,读到文
  • 数据结构——二叉树先序、中序、后序三种遍历二叉树先序、中序、后序三种遍历三、代码展示: 二叉树先序、中序、后序三种遍历 先序遍历:3 2 2 3 8 6 5 4 中序遍历:2 2 3 3 4 5 6 8 后序遍历: 2 3 2 4 5 6 8 3 ...
  • //但是你输入的是整数的时候,它不会吧空格识别为结束符  /* 给某个单词定位,并输出他的位置--------------*/ #include #include #include int main() {  int N,i=0,n=0; // char...
  • 1.scanf_s是scanf的进化版,比scanf更加安全,它在使用时,加了一个输入变量长度的限制符,当输入一个字符时,我们可以使用 char c; scanf_s("%c",&c,1); 上述用法中,%c是格式限定符,后面的1是限制要赋值给...
  • #include <stdio.h> #define N 20 struct student{ char num[6]; char name[8]; int score[4]; }; void input(struct student *stu,int n){ int i=0; for(i=0;i<n;i++){ ... scanf
  • scanf 详解

    2016-01-31 18:06:54
    scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。 其调用格式为: scanf("",); scanf()函数返回成功赋值的数据项数,...
  • #include "stdio.h" #include "stdlib.h" struct aaa { int i; char j[5]; float z; }; void main() { struct aaa *p; p=(struct*)malloc(sizeof(struct aaa)*1);... scanf("%d",p->i); }
  • 数据结构前言练习

    千次阅读 2020-06-29 17:15:04
    数据结构实验报告(预备实验)数据结构实验报告(预备实验)预备实验:C语言知识回顾任务一:平均值和最近元素下标任务二:结构体数组排序 数据结构实验报告(预备实验) 预备实验:C语言知识回顾 任务一:平均值和...
  • //->是成员指示符,用来访问一个自定义数据类型的成员 } void DestroyList(SqList *L)//摧毁线性表 { free(L); } bool ListEmpty(SqList *L)//判断线性表是否为空 { return (L->length==0); } int ...
  • 简单的数据结构

    千次阅读 2021-02-23 19:48:35
    栗酱有一天在网上冲浪的时候发现了一道很有意思的数据结构题。 该数据结构形如长条形。 一开始该容器为空,有以下七种操作。 1 a从前面插入元素a 2 从前面删除一个元素 3 a从后面插入一个元素 4 从后面删除一个元素 ...
  • 数据结构实验C语言实现版

    千次阅读 2021-01-16 21:57:01
    数据结构实验——顺序表的基本操作 数据结构实验——单链表的基本操作 数据结构实验——顺序栈的建立及基本操作实现 数据结构实验——链队列的建立及基本操作实现 数据结构实验——赫夫曼树构造及赫夫曼编码的...
  • scanfscanf_s的区别

    万次阅读 多人点赞 2018-11-28 17:53:56
    自从用VisualStudio2015之后就不愿再去使用Visual C++6.0了,但是最近在学数据结构图时,总是在字符的连续输入遇到困惑. 使用VS都知道,要用scanf_s对键盘读入数据。 scanf("%c,%c",&amp;a,&amp...
  • 该软件为本人数据结构课程设计作业,采用win32控制台程序,基于链表的增删改查,可供计算机专业在校大学生作为数据结构课程设计参考 每次使用需输入密码,初始密码为:123。可在软件主界面选择修改密码功能修改密码...
  • 数据结构实践——队列数组

    千次阅读 2015-10-06 07:13:36
    本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目。【项目 - 队列数组】  创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的值为x,其个位...
  • 数据结构】折半查找

    万次阅读 2014-03-26 13:05:27
    数据结构 折半查找 /* 名称:折半查找 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-26 */ #include #include #include #define N 11 // 数据元素个数 typedef int KeyType; // 设...
  • 数据结构的基本概念与术语

    万次阅读 2019-09-13 10:28:11
    数据结构的基本概念与术语数据数据元素数据对象数据结构 数据 数据元素 数据对象 数据结构
  • 数据结构】赫夫曼树

    千次阅读 2014-03-26 13:17:33
    数据结构赫夫曼树 /* 名称:赫夫曼树 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-26 */ #include #include #include #include #include // 赫夫曼树和赫夫曼编码的存储表示 ...
  • scanf用法总结

    万次阅读 多人点赞 2017-12-08 08:19:52
    函数名: scanf  功 能: 执行格式化输入  用 法: int scanf(char *format[,...scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换
  • 博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主威威喵原创,请多支持与指教。 ... 链表是一种物理存储单元上非连续、非顺序的...链表的数据结构包含两个部分:一个是存储数据元素的数据...
  • 数据结构实践——索引文件

    千次阅读 2015-12-10 08:05:38
    本文是针对[数据结构基础系列(11):文件]中的实践项目。【项目】索引文件 有若干学生的成绩数据如下,将这些数据保存到st数组中: 学号 姓名 年龄 性别 语文 数学 英语 1 陈华 20 男 78 90 84 5 张明 21 男 78 68...
  • 数据结构——静态链表

    千次阅读 2014-12-02 13:03:24
    说明:严蔚敏的《数据结构》(C语言版)学习笔记,记录一下,以备后面查看。#include const int OK = 1; //定义正确返回 const int ERROR = -1; //定义错误的返回 const int OVERFLOW = -2; //定义溢出 #define ...
  • 数据结构课程设计——校园导游系统(C语言)

    万次阅读 多人点赞 2020-07-06 12:34:23
    数据结构课程设计——校园导游系统(C语言)欢迎阅读==罡罡同学==的文章(关注不迷路)关于数据结构课程设计程序设计的功能程序源代码总结 欢迎阅读罡罡同学的文章(关注不迷路) (记得点赞关注) 还在为代码无法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,830
精华内容 35,532
关键字:

scanf输入数据结构

数据结构 订阅