大家好,欢迎再次来到小石头的博客。
接着上一篇的内容我们继续学习。
上一篇我们粗略的讲了一下C语言中关于结构的概念及其简单的用法。
上一篇的代码如下:
/*
文件名称 :noname0.c
作者:小石头
编写日期:20100527
说明:1.学习C语言中结构的一个例子。
2.这个程序主要是给看这篇文章的人使用。。
测试要点:
修正履歴:
小石头 20100527 程序中增加输出A这个学生的年龄和性别信息
*/
#include "stdio.h"
struct Stu //定义学生信息结构
{
int age;//年龄
int Sex;//性别
};
void main()
{
struct Stu A ;
A.age=25;
A.Sex=0;
printf("A的年龄是%d",A.age);
printf("A的性别是%d",A.Sex);
}
上一篇中提到了,这个程序有二个问题。
1.性别是用数字代替的。很难让人明白。这个A的性别到底是男还是女。
2.显示信息中的年龄和性别之间没有换行。让使用者瞅着很不舒服。
现在我们就来解决这二个问题。
问题1的解决办法是。输出的时候让其显示为A的性别是男
这就需要我们了解C语言中一个重要的概念。字符的显示。
不知道大家有人用过其它编程语言吗?比如C#
C#中字符串操作那是相当的方便。
比如在c#中定义如下。
string Sex = "男";
可是在C中没有string 这个关键字。(题外话:c语言中的关键字 由ANSI标准定义的C语言关键字共32个 : )
auto |
break |
case |
char |
const |
continue |
default |
do |
double |
else |
enum |
extern |
float |
for |
goto |
if |
int |
long |
register |
return |
short |
signed |
sizeof |
static |
struct |
switch |
typedef |
union |
unsigned |
void |
volatile |
while |
蓝色字体的关键字是我们上一个例子中使用的关键字。
我个人认为你对关键字的理解知道如下几点就可以。
1.关键字是 特殊含意的字符。
2.关键字不能当做变量名称。
3.关键字写错了。程序运行不了。
4.关键字我们常用的是:数据类型关键字、流程控制关键字
C语言复杂之处就在于。概念很多,如果想一下子全掌握不太可能。除非你只是为了考试。
所以我个人建议,在写程序中,边写边学习。用到的时候就去查一下。这样掌握起来很快。
例子不要一下子就写得很复杂。要一点一点的扩展。这样才能达到学习的目的。因为学习的目的最终结果是编写出可运行的程序。
可以卖钱的程序,才能算的上是项目。
始终要记住一点。语言只是开发工具。是为我们开发项目时而服务的。
电影神鞭里有这么一句经典的话语。
傻二在玻璃花面前,双枪一出,铜钱上树。露出光头后,对惊呆了的玻璃花说:祖宗的东西再好,该割的时候还得割,辫子剪了,
神留着,一变还是个绝活。说完上马扬长而去。
面对瞬息万变的时代,编程技术日新月异,我们能不能做到辫子没了,神还在?
也就是不用c了。但是好的编程习惯、好的编程理念。可以用到其它编程语言中。
就像你会用c做一个计算器。在拿c#你也一样会做。将来的其它语言你也会做。你要做的只是查查语法。
可能会遇到一系列的问题。但是我相信您一定可以解决。
(题外语结束。)
char c语言中现在只有这个数据类型关键字,怎么让其显示为 男 这个字符。
呵呵。我们这时要用到c语言中重要一个难点。指针
55555555555.肯定有人要哭了。他们会说。你讲结构体还没有讲完就怎么讲到指针了。太蚂蚱了。
其实在这里使用的指针并不难。好了,说一百次,不如动手实践一次。
修正履歴:
小石头 20100527 程序中增加输出A这个学生的年龄和性别信息
下面添加
小石头 20100528 程序中性别以字符的形式显示
小石头 编写后的代码如下:
/*
文件名称 :noname0.c
作者:小石头
编写日期:20100527
说明:1.学习C语言中结构的一个例子。
2.这个程序主要是给看这篇文章的人使用。。
测试要点:
修正履歴:
小石头 20100527 程序中增加输出A这个学生的年龄和性别信息
小石头 20100528 程序中性别以字符的形式显示
*/
#include "stdio.h"
struct Stu //定义学生信息结构
{
int age;//年龄
//int Sex;//性别 小石头 20100528 程序中性别以字符的形式显示
char* Sex;
};
void main()
{
struct Stu A ;
A.age=25;
A.Sex="男";
printf("A的年龄是%d",A.age);
printf("A的性别是%d",A.Sex);
}
我们运行一下,看其结果。
呵呵,希望能一次成功。
苍天大地。怎么回事。性别怎么是 4325436
出现问题一定要先不要着急。因为着急是没有用的。谁也帮助不了你,只能自已救自已。
通过上面的显示来看,出现问题是在输出方面。查找一下我们写的输出代码
printf("A的年龄是%d",A.age);
printf("A的性别是%d",A.Sex);
呵呵 马虎、太马虎了。原来是转换字符出现了问题
转换字符,呵呵(题外话:转换字符也是c语言中的一个概念。上一个例子中我们写的 %d 就是转换字符。输出整数类型值)
(题外话结束)
这回我们要输出的是 “男”
那该用到那个字符呢?上网查一下。c语言中有那些转换字符。
查询资料也是最好的学习过程。
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
互联网真是一个好东东。什么东东一搜就有了。
下面我们一个一个的试一下。先试 %g
自动选择合适的表示法 我们先试试
改好以后,运行一下。
不行。我们在试下一个。一会在查查为什么不行。%g 应该如何使用。
换成 %c
不行。我们在试下一个。一会在查查为什么不行。%c 应该如何使用。
成功了。
呵呵。先小高兴一下。
现在进行修改第二个问题。
显示信息中的年龄和性别之间没有换行。让使用者瞅着很不舒服。
这需要增加换行符。在那增加换行符呢?对了还是在输出函数里面加。
/*
文件名称 :noname0.c
作者:小石头
编写日期:20100527
说明:1.学习C语言中结构的一个例子。
2.这个程序主要是给看这篇文章的人使用。。
测试要点:
修正履歴:
小石头 20100527 程序中增加输出A这个学生的年龄和性别信息
小石头 20100528 程序中性别以字符的形式显示
小石头 20100528 显示信息中的年龄和性别之间添加换行功能。
*/
#include "stdio.h"
struct Stu //定义学生信息结构
{
int age;//年龄
//int Sex;//性别 小石头 20100528 程序中性别以字符的形式显示
char* Sex;
};
void main()
{
struct Stu A ;
A.age=25;
A.Sex="男";
printf("A的年龄是%d\n",A.age);
printf("A的性别是%s\n",A.Sex);
}
修改履历一定要写。要养成习惯。这样的好处。你慢慢就会知道。
运行一下。
成功了。
现在在看这个程序,会发现瞅着舒服多了。
可是在看我们的代码,会发现。代码都放在主函数 main 中。条理不清楚,和c的结构化设计原则相违背。怎么办呢?下一节中我们在进行改进。
呵呵。此次学习到此结束。下课了。
该去陪我的女朋友