C语言编程入门——结构体(下)


结构体与函数:

# include <stdio.h>
# include <string.h>

struct Student
{
	char name[100];
	char sex;
	int age;
}; //在定义结构体时分号不能省

void InputStudent(struct Student *);
void OutputStudent_1(struct Student);
void OutputStudent_2(struct Student *);

int main(void)
{
	struct Student st;

	InputStudent(&st); //对结构体变量的输入,要修改st的值,必须发送地址。
	OutputStudent_2(&st); //对结构体变量的输出,既可以发送地址,也可以发送变量的值,但发送地址能够减少内存耗费,也能够提高执行速度,提高效率。
						  //一般选择发送地址
	return 0;
}

//函数一般定义于主函数下面

void InputStudent(struct Student * pst)
{
	strcpy(pst->name,"张三");
	(*pst).age = 10;
	pst->sex = 'F';
}

void OutputStudent_1(struct Student stu) //定义结构体变量stu要占108个字节,且需要复制108个字节内容,耗费内存,执行速度慢。
{
	printf("%s, %c, %d\n", stu.name, stu.sex, stu.age);
}

void OutputStudent_2(struct Student * pst) //定义指针变量pst只占4个字节,且只需要复制4个字节内容,耗用内存少,执行速度快。
{
	printf("%s, %c, %d\n", pst->name, pst->sex, pst->age);
}


字符与字符串变量:

# include <stdio.h>
# include <string.h> //<string.h>,字符串处理头文件。

int main(void)
{
	char s;
	char a[100]; //字符串的定义即为字符数组,100表示此字符串占100字节。数字与字母无论大小写,都只占一个字节,汉字占两个字节。同样,数组名a为第一个字节的地址。

	s = 'A'; //字符的赋值要在字符左右加单引号'',以便区分这是字符而不是变量名。
	//a[100] = "大家好!呵呵!" //错误,字符串的赋值不能用等号。
	strcpy(a,"大家好!呵呵!"); //字符串的赋值要用strcpy()函数,字符串拷贝函数。strcpy(字符串变量名,"字符串")

	printf("%c, %C\n", s, s); //%c用于输出字符,字符的输出用%c和%C与输出大小写没关系。
	printf("%s\n", a); //字符串的输出用%s。
	//printf("%c\n", a[0]); //错误,字符串名是a,而不是a[100],后不能加下标。

	return 0;
}

冒泡排序法:

/*
	冒泡排序法,最简单最基本的排序方法
	相邻两个数之间进行比较,每一次循环比较,都将最大或最小的数放在右边,最大(小)值像水泡一样向上冒,所以叫做冒泡排序法。
	双重循环,即完成排序。
*/

# include <stdio.h>

//冒泡排序
void sort(int * a, int len)
{
	int i, j, t;

	for (i=0; i<len-1; ++i)
	{
		for (j=0; j<len-1-i; ++j)
		{
			if (a[j] > a[j+1]) // >(大于号)为升序,<(小于号)为降序。
			{
				t = a[j];
				a[j] = a[j+1];
				a[j+1] = t;
			}
		}
	}

	return;
}

int main(void)
{
	int a[6] = {2, 5, -3, 11, 9, 6};
	int i;

	sort(a, 6);

	for (i=0; i<6; ++i)
		printf("%d ", a[i]);
	printf("\n");

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值