%s和%c的奥秘

题目来源:

单链表的链接(0954)

Time limit(ms): 1000

Memory limit(kb): 10000

Submission: 4599

Accepted: 1862

Accepted

建立长度为n的单链表A和长度为m的单链表B,n>0,m>0。编程实现将B表链接在A表的尾端,形成一个单链表A。数据类型指定为字符型。

Description

第一行为A表的长度n; 第二行为A表中的数据元素 第三行为B表的长度m; 第四行为B表中的数据元素。

Input

输出为链接好后的A表中的所有数据元素。

Output

1

2

3

4

5

4

A B C D

6

1 2 3 4 5 6

Sample Input

1

A B C D 1 2 3 4 5 6

Sample Output

AC源代码:

#include<stdio.h>
int main()
{
        int n,m,i;
        char a[100],b[100];
        scanf("%d",&n);
        getchar();
          for(i=0;i<n;i++)
       {
             scanf("%s",&a[i]); //%s,用%c的话会在输入时出现问题
        }
        scanf("%d",&m);
        getchar();
        for(i=0;i<m;i++)
       {
              scanf("%s",&b[i]); //用%s
        }
        for(i=0;i<n;i++)
        printf("%c ",a[i]);
        for(i=0;i<m;i++)
       {
             if(i!=m-1)
           printf("%c ",b[i]);
         else
           printf("%c",b[i]);
         }
         return 0;

}

关于%c和%s:

scanf函数 字符串输入问题

c)书上有这样一段代码
char c[];,不需要‘%s&quot,c);么;

scanf("
输入的时候把字符串带如字符数组;
两者之间什么区别;%s";&‘,带入时才不需要&#39,&c);?
是不是只有字符串比较特殊;%s"&&#39?
scanf("
scanf(&quotchar c[81],至多接收80个字符; &#47,只能接收一个字符;&#47,前面没有&。

2 输出字符串;
scanf("c定义为字符数组,格式符用%d; /
scanf(&quot,格式符用%c,c)分两种情况来说明。
char c;,前面有&;/;%c&quot,&c);%s"c定义为字符变量。
1 输入字符
这是不加&. scanf在用%s时。
2,不用&,再加&就错误了1,也错了,那么这个字符必须加&,才能放入相应字符变量的地址里,因为字符数组的名字本身就代表是这个数组的首地址,是输入一个字符.用%c时,已经是地址了,是指输入一个字符串
第一个问题:
scanf 函数后一个参数实际上是地址,
而数组名的真正含义就是一个地址,所以不用加&取地址运算符。

第二个问题:
scanf("%s",&c); //表示你要取C的地址,而c如果是一个变量,就可以取出地址,总之你要明白scanf后一个参数实际上是地址,c 和&c的区别在于,c本身是不是地址。
scanf函数需要的是一个地址,如果是一个变量如a,&a代表a的地址,现在你定义的是一个字符数组,字符数组名本身代表了该字符数组的首地址,也就是第一个元素的地址,所以不需要再去&.

另一个地方关于这个问题的解答:

C语言scanf函数输入单个字符%c用%s代替

voidmain()
{
inti;
intnum[35],order[35];
charflag;
floata[35][6]={0};
input(num,a);
count(a);
sort(a,order);
printf("该程序可以筛选用户指定课程成绩在90分(含90分)以上,并且总分为前五名的学生情况,是否需要查询?(y/n)");
scanf("%s",&amp;flag);
if(flag==‘y‘)serch(num,a,order);
getchar();
getchar();
getchar();
}

这是我的主函数,另外的子函数没考过来,问题在于scanf那句,如果我用%c,运行有逻辑问题,你输入y后,好像程序根本就没有输入数据,我把%c换成%s就可以了,绝对无误。以前也遇到好多这种情况,这样换屡试不爽,可是我不清楚到底怎么回事。还有如果我把前面的子函数都删掉,上了就scanf,用%c是可以的,不知道这是怎么回事。高手给指点一二

满意答案

原因是在你的input函数里面有接受用户输入的动作,而输入一定是以回车结束,那么这个回车就会残留在缓存中,而当你的scanf读取flag的时候,程序会自动获取前面的那个回车符号,这就是用%c会自动跳过的原因,而用%s的话,程序就会等待下一行输入,回车符号并不会被接收

建议你在scanf("%c",&flag);修改为:
fflush(stdin);//清空缓存
scanf("%c",&flag);
就不会有问题了

时间: 2024-10-22 05:08:11

%s和%c的奥秘的相关文章

iOS开发-KVO的奥秘

iOS开发-KVO的奥秘 字数2933 阅读3842 评论28 喜欢57 序言 在iOS开发中,苹果提供了许多机制给我们进行回调.KVO(key-value-observing)是一种十分有趣的回调机制,在某个对象注册监听者后,在被监听的对象发生改变时,对象会发送一个通知给监听者,以便监听者执行回调操作.最常见的KVO运用是监听scrollView的contentOffset属性,来完成用户滚动时动态改变某些控件的属性实现效果,包括渐变导航栏.下拉刷新控件等效果. 渐变导航栏 使用 KVO的使用

Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析

Office文件的奥秘——.NET平台下不借助Office实现Word.Powerpoint等文件的解析 分类: 技术 2013-07-26 15:38 852人阅读 评论(0) 收藏 举报 OfficePowerPointWord格式解析 转载http://www.cnblogs.com/mayswind/archive/2013/03/17/2962205.html [题外话] 这是2010年参加比赛时候做的研究,当时为了实现对Word.Excel.PowerPoint文件文字内容的抽取研究

京东个性化推荐系统持续优化的奥秘(转)

订单贡献率10%,京东个性化推荐系统持续优化的奥秘 作者:周建丁 在信息过剩的互联网时代,个性化推荐技术对于互联网公司运营的重要性自不待言.本文要谈的是京东商城最新的推荐系统.京东已经在新版首页上线了“今日推荐”和“猜你喜欢”两项功能,基于大数据和个性化推荐算法,实现了向不同用户展示不同的内容的效果(俗称“千人千面”),该系统目前在PC端和移动端都已经为京东贡献了10%的订单. 京东推荐系统三部曲 总体而言,京东推荐算法的步骤并不神秘,无非是建立召回模型——召回模型效率分析——排序模型三步.但这

【简译】jQuery对象的奥秘:基础介绍

本文翻译自此文章 你有没有遇到过类似$(".cta").click(function(){})这样的JavaScript代码并且在想“$('#x')是什么”?如果这些对你想天书一样,请往下读.如果你认为这些代码不可能是真的,请浏览一些jQuery例子,他们都是这种结构. 这篇文章覆盖了像下面一样吓人的代码片段中涉及的关键概念.我们以一个长例子开始,这个长例子是基于一个让一个正方形运动的简单例子(a simple example of animating a square).你可能不需要

《编码的奥秘》读后感

历经两周左右的时间,终于把<编码的奥秘>这本书看完了.不得不说,这真是一本好书,深入浅出的讲解了大量与计算机与编码有关的东西.十分推荐对计算机有兴趣的朋友看看这本书,无论有没有技术功底,是否专业人士,这本书肯定不会让你们失望. 仔细回味一下这本书有哪些值得推荐的理由,大概有这么几点: 1.从一个很小的点出发,慢慢深入到接近专业的问题,然而最棒的在于大众基本都能理解并看懂,没有智商碾压的感觉. 2.用了大量的实例,将抽象化的问题,具体成可见的,便于思考便于理解. 3.知识面非常的广,从莫尔斯密码

探索高效jQuery的奥秘

讨论jQuery和javascript性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的jQuery和javascript代码.好的代码会带来速度的提升.快速渲染和响应意味着更好的用户体验. 首先,在脑子里牢牢记住jQuery就是javascript.这意味着我们应该采取相同的编码惯例,风格指南和最佳实践. 首先,如果你是一个javascript新手,我建议您阅读 <给JavaScript初学者的24条最佳实践> ,这是一篇高质量的javascript教程

一起学微软Power BI系列-官方文档-入门指南(5)探索数据奥秘

我们几篇系列文章中,我们介绍了官方入门文档与获取数据等基本知识.今天继续给大家另外一个重点,探索数据奥秘.有了数据源,有了模型,下一步就是如何解析数据了.解析数据的过程需要很多综合技能,不仅仅是需要掌握Power BI的功能要点,熟练的利用一些新功能来提高效率,同时还需要合理的利用仪表盘,以及合理的调整对象,同时作为一个完整的应用,必须掌握数据刷新和同步的技巧,避免做重复工作. 本文原文地址:一起学微软Power BI系列-官方文档-入门指南(5)探索数据奥秘 Power BI系列文章地址:微软

JAVA源码解读---HashMap目录扩展的奥秘

摘要:为了探索JAVA1.7源码中HashMap类数据的组织方法与目录扩展方法,本文通过对JAVA1.7源码中HashMap类源码的阅读与分析,得出结论:hashmap中存储数据的数据结构采用的是链表数组,目录是个数组,数组的成员是链表.冲突解决方法:典型的链地址法,冲突后,在链表头部插入数据.目录扩展方法:已二倍的方式扩展,一直到目录的最大上限.目录扩展的触发条件:装载因子的方式触发.从java中hashmap的实现可以看出,桶数据的组织方式并不是一种非常高效的方式.对检索效率不利.同时,数据

原子核的奥秘:核力的发现

在远古时代,物质由原子(Atom)构成,只是一种朴素的观念,没有实验依据.现今,大概"科盲"(只会贪吃)还保留这种观念. 十八世纪,英国大科学家道尔顿(John Dalton,1766-1844)第一次用实验证实了物质原子的存在,但是,他认为:原子是不可分的. 1897年,英国科学家汤姆森(Thomson,Joseph,John:1856-1940)发现,阴极射线管内发出的阴极射线在电场作用下,偏向正电极.这些是由阴极射线管内的原子分裂出来的带负电的粒子.他称其为"电子&qu

太阳能的奥秘:热核聚变

太阳的半径有70万公里,是地球半径的100倍.所以,在太阳深处,压力十分巨大,使得物质原子彼此非常接近.实际上,原子核本身带正电荷,彼此相互排斥,这是静电力在起作用.但是,裸体原子核相互之间的距离小到一定程度,原子核之间的静电力的作用就要退居次要地位,这时裸体原子核之间的"核力"发挥主导作用,原子核之间的吸引力大于相互之间的排斥力.原子核相互吸引,会发生什么事情? 在太阳内部超高温.超高压环境中,原子核发生"融合"(即"核聚变")现象,也就是说,