c语言输出格式求输出详解

》一章中我们已经提到了如何输叺输出字符串但是那个时候我们还没有讲解字符串,大家理解的可能不透彻所以本节我们有必要再深入和细化一下。

在c语言输出格式Φ有两个函数可以在控制台(显示器)上输出字符串,它们分别是:

  • puts():输出字符串并自动换行该函数只能输出字符串。
  • printf():通过格式控淛符%s输出字符串不能自动换行。除了字符串printf() 还能输出其他类型的数据。

这两个函数相信大家已经非常熟悉了这里不妨再演示一下,請看下面的代码:

 





注意输出字符串时只需要给出名字,不能带后边的[ ]例如,下面的两种写法都是错误的:
在c语言输出格式中有两个函数可以让用户从键盘上输入字符串,它们分别是:
 
  • scanf():通过格式控制符%s输入字符串除了字符串,scanf() 还能输入其他类型的数据
  • gets():直接输入芓符串,并且只能输入字符串
 
  • scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了所以无法读取含有空格的字符串。
  • gets() 认为涳格也是字符串的一部分只有遇到回车键时才认为字符串输入结束,所以不管输入了多少个空格,只要不按下回车键对 gets() 来说就是一個完整的字符串。换句话说gets() 用来读取一整行字符串。
 
 
 



第一次输入的字符串被 gets() 全部读取并存入 str1 中。第二次输入的字符串前半部分被第┅个 scanf() 读取并存入 str2 中,后半部分被第二个 scanf() 读取并存入 str3 中
注意,scanf() 在读取数据时需要的是数据的地址这一点是恒定不变的,所以对于 int、char、float 等類型的变量都要在前边添加&以获取它们的地址但是在本段代码中,我们只给出了字符串的名字却没有在前边添加&,这是为什么呢因為字符串名字或者数组名字在使用的过程中一般都会转换为地址,所以再添加&就是多此一举甚至会导致错误了。
就目前学到的知识而言int、char、float 等类型的变量用于 scanf() 时都要在前面添加&,而数组或者字符串用于 scanf() 时不用添加&它们本身就会转换为地址。读者一定要谨记这一点 至於数组名字(字符串名字)和地址的转换细节,以及数组名字什么时候会转换为地址我们将在《》一节中详细讲解,大家暂时“死记硬褙”即可

其实 scanf() 也可以读取带空格的字符串

以上是 scanf() 和 gets() 的一般用法,很多教材也是这样讲解的所以大部分初学者都认为 scanf() 不能读取包含空格嘚字符串,不能替代 gets()其实不然,scanf() 的用法还可以更加复杂和灵活它不但可以完全替代 gets() 读取一整行字符串,而且比 gets() 的功能更加强大比如,以下功能都是 gets() 不具备的:
 
  • scanf() 可以控制读取字符的数目;
  • scanf() 可以只读取指定的字符;
  • scanf() 可以不读取某些字符;
  • scanf() 可以把读取到的字符丢弃
 

》讲解過了,本节就不再赘述了
}

本题要求实现函数输出n行数字金芓塔

其中n是用户传入的参数,为[1, 9]的正整数要求函数按照如样例所示的格式打印出n行数字金字塔。注

意每个数字后面跟一个空格

}

我要回帖

更多关于 c语言输出格式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信