12.28作业 strlen strcpy实现 调整数组使奇数全部都位于偶数前面

本文展示了C语言中的strlen和strcpy函数实现,以及如何调整数组使奇数在偶数之前。通过my_strlen和my_strcopy函数演示字符串操作,setarr函数则用于重排整数数组的顺序。

  strlen实现

#include <stdio.h>
#include <assert.h>

int my_strlen(char *p)
{    
	int i=0;
    assert(p!=NULL);
	while (*(p+i)!='\0')
	{
	i++;
	}
	return i;
}
int main()
{	char a[10]="abcdefj";
	char b[10];
	printf("%d",my_strlen(a));
	return 0;
}

strcpy实现

#include <stdio.h>
#include <assert.h>
char *my_strcopy(char *p,const char *t)
{
	int i=0;
	assert(p!=NULL);
	while (*(t+i)!='\0')
	{	*(p+i)=*(t+i);
	i++;
	}
	*(p+i)='\0';
	return p;
}
int main()
{	char a[10]="abcdefj";
	char b[10]="xxxxxxxxxx";
	printf("%s",my_strcopy(b,a));
	return 0;
}

 调整数组使奇数全部都位于偶数前面

#include <stdio.h>
#include <assert.h>
int *my_strcopy(int *p,const int *t)
{
	int i=0;
	assert(p!=NULL);
	while (*(t+i)!='\0')
	{	*(p+i)=*(t+i);
	i++;
	}
	*(p+i)='\0';
	return p;
}
void setarr(int* p,int* t)
{
	my_strcopy(p, t);
	int i,j;
	
	for(i=0,j=0;i<=10;i++)
	{
		if(*(p+i)%2==1)
		{
			*(t+j)=*(p+i);
			j++;
		}
	}
	for (i=0; i<=10; i++) 
	{
		if (*(p+i)%2==0) 
		{
			*(t+j)=*(p+i);
			j++;
		}
	}
}
int main()
{	int a[10]={1,3,2,4,5,6,7,8,5,9};
	int b[10];
	int i=0;
	setarr(b, a);
	for (i=0; i<=9; i++) 
	{
		printf("%d",a[i]);
	}
	return 0;
}

实现点击触发爱心动画效果可以通过以下几个步骤完成,以下以Vue 3为例,结合提供的引用内容说明: ### 1. 创建爱心动画组件 创建一个名为 `LikeAnimation` 的组件,用于实现爱心动画效果。这个组件可以使用CSS动画来创建爱心的动画效果。 ```vue <!-- LikeAnimation.vue --> <template> <div class="like-animation"> <!-- 这里可以使用SVG或者图片来表示爱心 --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="red"> <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" /> </svg> </div> </template> <style scoped> .like-animation { position: absolute; animation: likeAnimation 1s ease-out forwards; } @keyframes likeAnimation { 0% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(1.5); } } </style> <script setup> import { defineEmits } from 'vue'; const emits = defineEmits(['onAnimationEnd']); const handleAnimationEnd = () => { emits('onAnimationEnd'); }; </script> ``` ### 2. 在主组件中使用 `transition-group` 管理动画 在主组件中,监听点击事件,获取点击位置的坐标,并将其存储在一个数组中。使用 `transition-group` 来管理爱心动画组件的显示和隐藏。 ```vue <template> <!-- 爱心动画组 --> <transition-group tag="div"> <!-- 监听组件传过来的动画消失事件onAnimationEnd,执行动画消失事件 --> <LikeAnimation v-for="(item, index) in likes" :key="item.key" @onAnimationEnd="removeLike(index)" :X="item.x" :Y="item.y" :style="{ top: `${item.y}px`, left: `${item.x}px` }" /> </transition-group> </template> <script setup> import { ref } from 'vue'; import LikeAnimation from './LikeAnimation.vue'; // 爱心数组 const likes = ref([]); // 添加爱心动画函数 const addLikes = (e) => { // 获取点击处的坐标X与Y likes.value.push({ x: e.clientX, y: e.clientY, key: Date.now() }); }; // 爱心数组消失函数 const removeLike = (index) => { likes.value.splice(index, 1); // 移除指定的点赞动画 }; </script> <style scoped> /* 主组件样式 */ div { position: relative; width: 100%; height: 100vh; } </style> ``` ### 3. 绑定点击事件 在主组件的模板中,绑定点击事件,调用 `addLikes` 函数来触发爱心动画。 ```vue <template> <div @click="addLikes"> <!-- 爱心动画组 --> <transition-group tag="div"> <!-- 监听组件传过来的动画消失事件onAnimationEnd,执行动画消失事件 --> <LikeAnimation v-for="(item, index) in likes" :key="item.key" @onAnimationEnd="removeLike(index)" :X="item.x" :Y="item.y" :style="{ top: `${item.y}px`, left: `${item.x}px` }" /> </transition-group> </div> </template> ``` 通过以上步骤,就可以实现点击触发爱心动画效果。当用户点击页面时,会在点击位置出现一个爱心动画,并且动画结束后会自动消失。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值