和小石头一起学C(C语言之结构体篇 二)

大家好,欢迎再次来到小石头的博客。

接着上一篇的内容我们继续学习。

上一篇我们粗略的讲了一下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 自动选择合适的表示法


互联网真是一个好东东。什么东东一搜就有了。

%c 单个字符 %s 字符串 %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的结构化设计原则相违背。怎么办呢?下一节中我们在进行改进。

呵呵。此次学习到此结束。下课了。

该去陪我的女朋友 

原文地址:https://www.cnblogs.com/littlestone/p/1746180.html