C语言复习day4

两个值交换

int a=6,b=8;
a=a^b;
b=a^b;
a=a^b;
printf("%d %d\n",a,b);

6:110 8:1000
a=1110 b:1000
b=110 a:1110
a=1000=8 b=110=6

数组

清零函数

bzero

#include <strings.h>
void bzero(void *s, size_t n);
功能:数组内容清零
参数:s:数组首地址 n:字节大小
返回值:无

#include<stdio.h>
#include<strings.h>
int main(int argc, char const *argv[])
{
    int a[5]={97,98,99,100,101};
    for(int i=0;i<5;i++)
        printf("%d\n",a[i]);
    bzero(a,sizeof(a));
    // for(int i=0;i<5;i++)
    //     a[i]=0;等效于将数组内容全部变为0
    for(int i=0;i<5;i++)
        printf("%d\n",a[i]);
    return 0;
}

memset

#include <string.h>
void *memset(void *s, int c, size_t n);
功能:数组元素清零
参数:s:数组首地址 c:要设置的值 n:字节大小
返回值:数组首地址

#include<stdio.h>
#include<string.h>
int main(int argc, char const *argv[])
{
    int a[5]={97,98,99,100,101};
    for(int i=0;i<5;i++)
        printf("%d\n",a[i]);
    memset(a,0,sizeof(a));//将数组内容全部替换为0
    for(int i=0;i<5;i++)
        printf("%d\n",a[i]);
    return 0;
}

strlen和sizeof的区别

sizeof是关键字,strlen是函数
sizeof是计算元素实际开辟的大小空间,strlen是计算字符串的实际元素个数
char a[]=“hello”; sizeof计算包括’\0’, strlen计算不包括’\0’

输入一个字符串,大小写转换输出

#include <stdio.h>
int main(int argc, char const *argv[])
{
    char a[10] = {};
    gets(a);
    for(int i = 0;a[i] != '\0';i++)
    {
        if(a[i] >='a' && a[i] <= 'z')//核心部分begin
            a[i] -= 32;
        else if(a[i] >= 'A' && a[i] <= 'Z')
            a[i] += 32;
    }//end
    puts(a);
    return 0;
}

简单算法

1.选择排序

2个数比较1轮,5个数比较4轮
假设最左边位置为最小值,分别和剩下的每一个元素比较,比较的过程中如果遇到更小值,暂存更小值的下标,直到这一轮比较结束后,再把更小值和最左边元素交换

int main()
{
	int a [5]={2,9,8,7,6};//目标:从小到大
	for (int i =0;i<5-1;i++)//轮数
	min=i;					//min存下最小值的下标,初始化是赋值最左边的下标	
	for (int j=i+1; j<5; j++) //找到剩下的每一个元素
	{
	if (a[min]>a[j])
		min=j;//比较的过程中,暂存更小值的下标
	}
	//交换a[min] a[i]
if(min!=i)	//当最小元素位置和最左边不在同一位置时,再交换
{
	a[min]=a[min]^a[i];
	a[i]=a[min]^a[i];
	a[min]=a[min]^a[i];
}
}//打印数组内容
for(int i=0; i<5;i++)
	printf("%d\n",a[i]);
	return 0;
}

2.冒泡排序

main()
{
	int a[5]={6,5,4,3,2};
	for (int i=0;i<5-1;i++)
	{
		for(int j=0;j<5-1-i;j++)
		{
		   a[j]=a[j]^a[j+1];
            a[j+1]=a[j]^a[j+1];
             a[j]=a[j]^a[j+1];
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值