怎么用c语言将012输出为12,012C语言

回顾:

1.字符串数组

char *pa[5];

pa[0] -->一个字符串

可以指向 5个字符串

char a[5][10]; 保存一个字符串

用字符的二维数组保存字符串数组

char **ppa;

2. 字符串数组的案例

char *argv[] 命令行传入的参数内容

一个字符串就是一个参数

int argc 记录上面数组的元素个数

3. 程序的编译过程,--> 预处理

预处理掉 源代码中所有#开始的语句和注释

宏 #define

宏变量

宏函数

内置的宏 __DATE__

__TIME__

条件编译

#if #else #endif

#define

#ifndef #else #endif

#ifdef #else #endif

#ifndef //防止头文件交叉引用

#define

//头文件的内容

#endif

#include

<>

"" 查找当前目,在找系统目录

----------------

构建大型程序

多人参与开发,由多个.c文件,如何将多个.c编译成为一个可执行程序?

1.将每个.c文件进行独立编译成为.o

将.c文件关于函数原型的声明及其他公共使用到的声明 放到对应.c文件的头文件中,其他的.c 通过include 将头文件引用,即可对该.c函数的调用.

static 限制外部.c文件使用

extern 符号的具有外部链接特性

2.将所有的.o文件 链接成一个可执行文件

make 项目编译

make 在当前目录找 makefile/Makefile 文件

创建makefile 文件,编写编译规则

一条规则

目标:该目标依赖的文件

[tab]用依赖文件生成目标文件的命令

-------------------------

自定义数据类型   (int float)

结构体

怎么构造自己的类型

vim打开多个文件 vim 文件1 文件2  -p

struct (构造体)

/*

* 描述一个学员信息

*/

//字符串赋值  strcpy

#include#include

intmain(){//1.定义student 类型

structstudent{char name[20];intscore;intage;

}stu1,stu3;//声明了2个student 类型的 变量stu2,stu3

stu1.score = 80;//stu1.name = "李辉";//不可这么赋值 strcpy//strcpy("李辉",stu1.name); 不可以

strcpy(stu1.name,"李辉");

stu1.age= 18;

printf("该学员的姓名=%s\n",stu1.name);

printf("该学员的成绩=%d\n",stu1.score);

printf("该学员的年龄=%d\n",stu1.age);

getchar();return 0;

}

typedef  设定结构体类型的别名

#include#include

intmain(){#if 0

//1.定义student 类型

structstudent{char name[20];intscore;intage;

}stu2,stu3;//声明了2个student 类型的 变量stu2,stu3

#endiftypedefstruct student{ //student 可以省略

char name[20];intscore;intage;

}Student;//struct student stu1 ==>Student stu1//用student 类型 声明变量stu1//struct student stu1;

Student stu1;//使用结构体//[练习]给该学员 赋值姓名 和年龄 然后打印//字符串赋值 strcpy

stu1.score = 80;//stu1.name = "李辉";//不可这么赋值 strcpy//strcpy("李辉",stu1.name); 不可以

strcpy(stu1.name,"李辉");

stu1.age= 18;

printf("该学员的姓名=%s\n",stu1.name);

printf("该学员的成绩=%d\n",stu1.score);

printf("该学员的年龄=%d\n",stu1.age);return 0;

}

/*

* typedef  类型的别名

*/

typedef int int32

uint32 //无符号32整型

typedef unsigned int uint32

typedef struct {

}

#include typedefintINT;

typedef unsignedintuint32 ;intmain(){

INT i= 0;

uint32 i32= 0;

printf("sizeof(INT) = %d\n",sizeof(INT));

getchar();return 0;

}

/*

*   结构体变量的初始化

*/

#include

intmain(){

typedefstruct student{ //student 可以省略

char name[20];intscore;intage;

}Student;

Student stu1={"李辉",0,80};

printf("该学员的姓名=%s\n",stu1.name);

printf("该学员的成绩=%d\n",stu1.score);

printf("该学员的年龄=%d\n",stu1.age);

getchar();return 0;

}

结构体指针

#include

intmain(){

typedefstruct student{ //student 可以省略

char name[20];intscore;intage;

}Student;

Student stu1={"李辉",0,80};

Student* ps = &stu1; //声明一个结构体指针变量 指向stu1

ps->score = 90;

printf("ps->name姓名=%s\n",ps->name);

printf("ps->score成绩=%d\n",ps->score);

printf("ps->age年龄=%d\n",ps->age);

getchar();return 0;

}

/*

*   [练习]

*       声明一个Student 类型 (typedef)

*       再声明 一个Student 结构体变量 s  指针变量ps   ps指向s

*       通过ps 对 s变量进行赋值 并打印输出s的内容

*

*       sizeof(ps)  结果是多少?

*       sizeof(s)   结果是多少? 为什么?

*       name成员将20改为19后

*       sizeof(s)   是多少?

*/

#include

intmain(){

typedefstruct{ //student 可以省略

char name[19];charc1;charc2;intscore;intage;

}Student;//struct student stu1 ==>Student stu1

Student stu1;

Student* ps = &stu1; //声明一个结构体指针变量 指向stu1

printf("sizeof(ps) = %d\n",sizeof(ps)); //4

printf("sizeof(stu1) = %d\n",sizeof(stu1)); //28

printf("sizeof(int) = %d\n",sizeof(int)); //4

printf("sizeof(Student) = %d\n",sizeof(Student)); //28

getchar();return 0;

}

sizeof(ps) = 4

sizeof(stu1) = 32

sizeof(int) = 4

sizeof(Student) = 32

bit对其

结构体变量字节数=所有成员字节数之和?

四字节补齐 ==>4的整数倍

/*

*   结构体应用

*        结构体作为函数的参数,

*        值传递,而不是指针,跟基本类型变量一样

*        跟指针,数组 不一样

*        如果要修改传入的结构体,应该传指针

*

*

*        结构体作为函数的返回值

*            跟普通基本类型一样

*

*/

#include typedefstruct student{ //student 可以省略

char name[20];intscore;intage;

}Student;void func (Student*s);intmain(){

Student stu1={"李辉",30,30};

func(&stu1);

printf("姓名=%s\n",stu1.name);

printf("成绩=%d\n",stu1.score);

printf("年龄=%d\n",stu1.age);

getchar();return 0;

}void func (Student*s)

{

s->age = 18;//return 0;

}

/** 结构体应用

* 结构体作为函数的参数,

* 值传递,而不是指针,跟基本类型变量一样

* 跟指针,数组 不一样

* 如果要修改传入的结构体,应该传指针

*

*

* 结构体作为函数的返回值

* 跟普通基本类型一样

**/#include#includetypedefstruct student{ //student 可以省略

char name[20];intscore;intage;

}Student;//struct student stu1 ==>Student stu1

#if 0

voidfunc (Student s);voidfunc (Student s)

{

s.age= 18;//return 0;

}void func (Student*s);void func (Student*s)

{

s->age = 18;//return 0;

}#endif

#if 0Student func (Student s);

Student func (Student s)

{

s.age= 18;returns;

}#endifStudent*func (Student s);

Student*func (Student s)

{

s.age= 18;return &s;//不可以返回局部变量的地址

}intmain(){//Student stu2 ={0};

Student stu1 ={"李辉",30,30};//stu1 = func(stu1);

Student *ps =func(stu1);

printf("ps->name姓名=%s\n",ps->name);

printf("ps->score成绩=%d\n",ps->score);

printf("ps->age年龄=%d\n",ps->age);#if 0printf("姓名=%s\n",stu1.name);

printf("成绩=%d\n",stu1.score);

printf("年龄=%d\n",stu1.age);

printf("输入姓名:");//scanf("%s",stu1.name);

scanf("%s",ps->name);

printf("输入成绩:");//scanf("%d",&(stu1.score));

scanf("%d",&(ps->score));

printf("输入年龄:");

scanf("%d",&(ps->age));

printf("ps->name姓名=%s\n",ps->name);

printf("ps->score成绩=%d\n",ps->score);

printf("ps->age年龄=%d\n",ps->age);#endif

return 0;

}

结构体的数组

#include#includetypedefstruct student{ //student 可以省略

char name[20];intscore;intage;

}Student;//struct student stu1 ==>Student stu1//void func (Student s[],int len);

void input (Student *s,int len); //跟上面是一样的

void input (Student* s,intlen)

{for(int i = 0;i

{

printf("输入姓名:");

scanf("%s",s[i].name);

printf("输入成绩:");

scanf("%d",&(s[i].score));

printf("输入年龄:");

scanf("%d",&(s[i].age));

}//return 0;

}void output (Student *s,int len); //跟上面是一样的

void output (Student *s,intlen)

{for(int i = 0;i

{

printf("第%d个姓名:%s\n",i+1,s[i].name);

printf("第%d个成绩:%d\n",i+1,s[i].score);

printf("第%d个年龄:%d\n",i+1,s[i].age);

}//return 0;

}intmain(){

Student stu1={"李辉",30,30};

Student s[10]; //声明10个Student 结构体的数组

input(s,3);

output(s,3);

getchar();

getchar();return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值