找到
10
篇与
lx5555iou
相关的结果
-
【挑战两个月开发自己的小程序】第二期代码集合 1.1 创建小程序项目——纯净环境 1.1.1 把component,.eslintrc.js删掉,然后把pages的index.json中删除 "navigation-bar": "/components/navigation-bar/navigation-bar";然后删除index.wxss和index.wxml中所有内容。 最后因为要把skyline渲染模式换成webview,所以需要在app.json中删除这些代码: `"renderer": "skyline", "rendererOptions": { "skyline": { "defaultDisplayBlock": true, "defaultContentBox": true, "tagNameStyleIsolation": "legacy", "disableABTest": true, "sdkVersionBegin": "3.0.0", "sdkVersionEnd": "15.255.255" }}, "componentFramework": "glass-easel", ` 选删project.config.json和project.private.config.json和sitemap.json(这些删完以后,同理也要去删除引用他们的位置。 要勾选:不校验合法域名、web-view(业务域名)、TLS 版本以及HTTPS 证书(不然不合法) 2 首页的案例 小知识点: margin和padding margin我这个箱子和外界之间的距离 padding我这个箱子和内部的组件之间的距离 2.1 button(按钮)组件使用 我是个按钮 参考文档:https://developers.weixin.qq.com/miniprogram/dev/component/button.html 在修改button的颜色的时候,如果加了type(修改颜色),就没法改,因为type的优先级>background-color(如果要改,也可以,可以写成background-color:red !important;表示优先以这个样式为准) 除了类选择器,还有组件选择器,不用写点,表示修改这个页面中所有的这种组件的样式 例如在index.wxss中写: `button{ margin-top:300rpx; }` 表示index.wxml中所有的button组件距离顶部页边距300rpx。 2.2 首页轮播图(swiper+swiper-item) 结构: ` 乘以三 ` swiper组件: swiper下面只能跟swiper-item组件 在swiper组件中使用autoplay,自动播放 在swiper组件中使用indicator-dots,表示使用指示点 indicator-color="#00FF00"表示指示点颜色(直接写某颜色的英文也可以) 夸克百科,十六进制色值:https://page.quark.cn/baike?id=12e8a61455d2420ab3652972d57506f3 在swiper组件中使用interval='3000'表示轮播间隔三秒(默认是五秒) circle从最后一个又转回第一个滑动 swiper-item组件: 在这个组件中再写一个image标签,写图片地址,写mode和style,调整,使得其完全适应屏幕 做轮播图,在index.wxml里写: `<swiper autoplay="true" interval="3000" indicator-dots="true" indicator-color="#RRGGBB" circular> <image src="../../image/swiper/1.png" mode="widthFix" style="width: 100%;"></image> <image src="../../image/swiper/2.png" mode="widthFix" style="width: 100%;"></image> <image src="../../image/swiper/3.png" mode="widthFix" style="width: 100%;"></image> ` 2.3 首页提示版块 结构: ` 乘以八 ` 技巧: 在写颜色的部分如果跳出一个颜色方块,可以点击颜色方块,调用自己想要的颜色 做首页提示板块,在index.wxml中写: ` 欢迎使用我们的系统,谢谢~~ ` 在index.wxss里写 `.tips{ background-color: #ffeabb63; color:brown; font-size:30rpx; border-radius:50rpx; / margin的属性值分别表示距离上下右左的距离值 / margin:30rpx 10rpx 30rpx 10rpx; / padding-left字在盒子内部与边界的距离 / padding-left: 20rpx; }` 2.4 flex布局(menu部分布局) 结构: ` 乘以八 ` 先让豆包做八张图。等下要做4x2的一个矩形,放8张图片+文字提示 在index.wxml中写 ` 造梦无双 火线精英 冒险岛 洛克王国 原神 绝区零 重返未来 明日方舟 ` 在index.wxss中写 `/ flex布局 / .menu{ display:flex; justify-content: space-between; padding:16rpx; border-radius:10rpx; flex-wrap:wrap; } .item{ display:flex; flex-direction:column; justify-content: center; align-items:center; width:150rpx; height:150rpx; border:rgb(192,251,255) solid 1rpx; margin:1rpx; background-color: rgb(156, 255, 94); } .img{ width:88rpx; height:88rpx; border-radius:10rpx; } .title{ margin-top:12rpx; font-size:24rpx; }` 2.5 通知布局 结构: ` ` 一个图片(图片让豆包生成)一个文字的公告 小知识点: 选择一个选择器下的组件,如类名:notice下的 写代码如下: .notice>text 在index.wxml中写 ` 通知公告 ` 在index.wxss中写 `.notice{ display:flex; justify-content:flex-start; margin-top:20rpx; margin-bottom: 20rpx; } .notice>text{ flex-grow:1; font-size:70rpx; }` 2.6 底部布局 结构: ` 乘以四 ` 放四张图片(2x2布局) 小技巧: 格式化代码,可以让布局更加规范整齐 在index.wxml中写 ` ` 在index.wxss中写 `.bottom{ display: flex; justify-content:space-between; flex-wrap:wrap; } .bottom>view>image{ width:345rpx; height:200rpx; padding:10rpx; }` 3 小程序中引入矢量图 打开iconfont官网,注册一个账号,搜素想要的图标,选择心仪的图标,加入购入车,添加进项目,在项目里找到”项目设置“(灰色),选择Base64,保存。然后点击复制代码,放到搜索栏。 在项目中新建文件夹wxss,然后在里面放font.wxss文件,再把刚才复制的代码放到font.wxss中,这样写的作用时什么呢?如果你的所有样式都写在app.wxss,那里面的样式会变得非常多,不便于管理,把font放在font.wxss,只需要引用,就能使得文件更加整齐划一。 引用的方法: 在app.wxss中写: @import "./wxss/font.wxss"; 然后font.wxss中有一些类名,只需要写在需要添加图标的组件的类名中就好了 例如,在font.wxss中有如下代码,这个代码看着很吓人,其实只用关注最底部这些类名,拉到最下面,两个类名,一个是iconfont,另一个是icon-tishi,把这两个类名写在同一个组件中,就能在组件中看到相应的图标了。然后,在index.wxml写一个text组件: <text class="iconfont icon-tishi"></text> 这样就能看到图标了。 ` @font-face { font-family: "iconfont"; / Project id 5126894 / src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAM0AAsAAAAAByAAAALnAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcAqCHIIcATYCJAMICwYABCAFhGcHLxtXBsi+QDaGA61+0oYILVOzsZk41ztpIyffLVD4eYt4eFr737mzs/Ndk2DazDx9GkksqqQMJYtWPHTewOn2rvj9vcfhpe1T53N0RbIwkQLMwrI0amlNUwZVFaFK7MrbFNpinjA/UjfX1ar3azNojNTrja7UXT2gEPiviZ7e73XlcfW1HsExalQAuf//veP/a4tfAG/NQWtTPQvzgD5QYy2LsJMXGLfI7grEIp8RaLVYBbRx/fQKxekjW9CAMNuDJD2mVfkIacEryzjRLBTo0iyeqkn30h14Erw//ulGmqSumFl7L68uEL7PWyMQDUH1nRivCg9PqFFh/sr0cbDZulssis4Ha62yxk2Q8iz4GbzHXfcfjyAKM7UdjGPuOfEc/qn+MoGMgsvAjV7XUvpl6uSv5G8fPwZ899OnNvbBhw+id96/P11edN/fnWhZEbTlHryJ30/z/qi313ff6K5Xd16eSCQvq9m1bF4cMVruvlYa5yfd/tdIxx55X11W2Oxmsrq1aSGIJ1ub5fcumHLvPBuOvLf0nRBf53e+4EKQvHZci2cderil8ndhct/xV8JtnHXJT7+ES5nXBqQy2lqAxuq/qv6A73jnU/el+c1tGfy4DxK4GzPA7IDmM7QGr1t2EojMmo+Uq3hCMrkseQfiVitAg+ns9eqr7LutZGjWd3P2JmMJVJpNYJkyF2ptlkLRbBW0mqe9uk2fiZjILZhphyB0u0LS6S1Uuj2wTHlCbdAHim5/aHU4Ctu1mRnnhUdHpgsGW8xD25JsBQdEn0kOjKNXFnonz1dxAHVFyyc2ZJE3xIz5Su4uFhImM9vEDncaGYaNk5mt0Zmb2YKdqaomVS9phmMTFjzkiJELFPiGcmc2i+ShOft5z4gsYDjygNh71ONTMXGkU2gAbCO1QHVXssvcB1nXApOghIfiJtQRzMRQozY0qR6kIWesKesRdkypFiqBSpvzy81H2wGtTFUKq0+lvqr6igoAAA==') format('woff2'), url('//at.alicdn.com/t/c/font_5126894_c9ddlrup08.woff?t=1772119451957') format('woff'), url('//at.alicdn.com/t/c/font_5126894_c9ddlrup08.ttf?t=1772119451957') format('truetype');} .iconfont { font-family: "iconfont" !important; font-size: 16px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-tishi:before { content: "\e662"; }` 4 事件绑定 4.1 按钮等某些组件点击以后,能触发事件执行xx.wxml的某个组件写属性bind:TT="tt",(TT和tt分别表示某一事件以及变量名。然后在xx.js的Page({})中书写代码 在my.wxml中写: `===事件绑定=== 点击控制台打印` 在my.js中写: `Page({ data: {} handleConsole(){ console.log("我被点了")}, })` 4.2 事件冒泡 父组件有子组件,子组件上有事件,父组件上也绑定了事件 点击子组件时子组件事件触发,父组件事件也会触发,这个称为事件冒泡。 在my.wxml中写: `===事件冒泡=== 按钮 阻止事件冒泡 ` 在my.js中写: `handleParent(){ console.log("父亲被点了") }, handleChildren(){ console.log("孩子被点了") },` 4.3 事件对象-传参 4.3.1 当绑定了事件后-->函数都是可以接收一个对象,事件对象叫做event 4.3.2 传参-->放到event事件对象中-->js中可以取出来使用 wxml能触发事件的组件,添加这些自定义属性,他们的信息就会被记录到event中 data-* 自定义名字 mark: 自定义属性 方法一: 在my.wxml中写: <使用data-,给元素绑定自定义数据的固定参数,可以通过这种方式在调试器的Console的,然后在my.js中给事件加个参数event,然后console.log(event.target.dataset.id),(event.target.dataset.id)中event后半部分根据需求任改 --> <!-- CurrentTarget的dataset和target的dataset里面显示 CurrentTarget:用于事件绑定者 target:事件触发者 如果有事件冒泡,那么target的dataset显示的就是触发事件的组件参数,而CurrentTarget的dataset显示的是绑定事件的组件的参数 --> <view bind:tap="handleClick01" data-id="1001" data-name="justin">点我1</view> 在my.js中写: `handleClick01(event){ console.log(event); console.log(event.target.dataset); console.log(event.target.dataset.id); console.log(event.target.dataset.name); console.log(event.mark.name); }` 方法二: 在my.wxml中写: <view bind:tap="handleClick01" mark:name="2001">点我2</view> 在my.js中写: ` handleClick01(event){ console.log(event.mark.name); }` 5 页面跳转 小技巧:JavaScript(js) 对字符串的单 / 双引号没有强制限制,单引号(')和双引号(")都可以用 5.1 组件跳转(声明式导航) 5.1.1 navigation组件,加属性-->实现跳转 my.wxml中加入跳转登录页,注意url先带斜杠后写地址 ` 去登录 ` 5.1.2 更多跳转方式(open-type) navigator组件的其他属性 open-type="(填入下列属性值)" 1.navigate(默认值):保留当前页面,跳转到应用内的某个页面。但是不能跳到tabbar.list的子页面 2.redirect:关闭当前页面,跳转到应用内某个页面,但是不能跳转到tabbar.list的子页面 3.switchTab:跳转到tabBar页面,并关闭其他所有非tabBar.list子页面的页面 4.reLaunch:关闭所有页面,打开应用内的某个页面 5.navigateBack:关闭当前页面,返回上一页面或上多级页面 示例: 在my.wxml中写: `===页面跳转(声明式导航)=== 去登录 去登录2 ` ` 去首页(失败) ` ` 去首页2 ` ` 去首页3 ` 新增一个页面login,在login.wxml中写: `login 返回上一个页面 ` 注意,如果使用open-type="navigateBack" delta="2",可以一次性返回两次页面。 5.1.3 跳转携带参数 介绍onLoad在页面跳转传参场景下的含义:onLoad(options)是专门用来“接住“发起页通过导航URL传递过来的参数的”容器“ 跳转以后,再目标页面的.js中的onLoad(options){};中获取参数 具体来说,就是这样补写代码: `onLoad(options){ console.log(options) };` 然后控制台就能把你携带的参数给带过来 5.2 js跳转(编程式导航) 5.2.1 使用js控制跳转 原理:在wxml中写按钮,按钮绑定事件,然后在js中写事件如何跳转页面,点击按钮实现功能 5.2.2 5个方法-->和声明式导航跳转是对应的 `wx.navigateTo({ url:'url', }) wx.redirectTo({ url:'url', }) wx.switchTab({ url:'url', }) wx.reLaunch({ url:'url', }) wx.navigateBack()` 在my.wxml中写: `===页面跳转(编程式导航)=== navigateTo redirectTo switchTab reLaunch` 在my.js中写: `handlenavigateTo(){ wx.navigateTo({ url:'/pages/login/login', }) }, handleredirectTo(){ wx.redirectTo({ url:'/pages/login/login', }) }, handleredirectTo(){ wx.redirectTo({ url:'/pages/login/login', }) }, handleswitchTab(){ wx.switchTab({ url:'/pages/index/index', }) }, handlereLaunch(){ wx.reLaunch({ url:'/pages/index/index', }) },`此外,如果你想让你的目标页面获取my.js的参数,可以在URL中填入当前页面的各种信息。如,第一个页面中的URL中写一个叫张三的人,爱好是游泳,在第一个处理函数中修改成这样 `handlenavigateTo(){ wx.navigateTo({ url:"/pages/login/login?name=zhangsan&hobby=swim",}` 然后,修改目标页面js中的onload(){}, 假设要跳转到login 那么就修改login.js `onload(options){ console.log(options.name); console.log(options.hobby); },` options用于存放刚才解析过来的URL信息。 在login.wxml中写: <button type="warn" bind:tap="handlenavigateBack">navigateBack</button> 在login.js中写: ` handlenavigateBack(){ wx.navigateBack({ })},` 6 wxml语法 6.1 模板语法 在login的js文件中定义的变量想在页面中展示,这就涉及到wxml模板语法了。 为了后续操作方便,接下来,来到登录界面,设置登录界面为启动界面。 6.1.1 在页面xx.js的Page()方法的data对象中进行声明定义 6.1.2 在xx.wxml中使用{{}}包裹,显示数据 6.1.3 可以显示变量、算数运算、三元运算、逻辑判断,不能编写js语句或js方法 -
【2025.12.13】函数指针-用于定积分计算 $[泡泡表情]::(哈哈)今天我们来学c语言的指针函数 函数指针顾名思义,是一个指向函数的指针 基本写法 类型名 (*函数指针)(指向函数的类型); 现在我举一个小学二年级就学过的定积分示范一下如何使用函数指针 #include<stdio.h> #include<math.h> //因为f2要用到三角函数,这里需要调用math.h double calc(double(*funp)(double),double a,double b){ return (b-a)/2.0*(funp(a)+funp(b)); } //这里用梯形公式计算定积分,第一个形参就是一个函数指针 //如果没有这个函数指针,calc的形参不能直接写具体函数,那么就得把梯形公式放到每个函数里面,就比较麻烦 //所以引用函数指针可以省很多事 //只需要把具体函数的地址传给funp,就可以反复套用定积分计算公式 double f1(double x){ return x*x; } double f2(double x){ return sin(x)/x; } double (*funp)(double); int main(void) { double a,b; double result; printf("此代码用梯形公式计算定积分\n"); printf("请输入定义域左边:"); scanf("%lf",&a); printf("\n"); printf("请输入定义域右边:"); scanf("%lf",&b); //下面给大家介绍函数内以函数指针为形参的两种用法 //第一种用法直接传具体函数f1,这里传入的函数在c语言中会自动转换为函数的地址,然后计算定积分 result=calc(f1,a,b); printf("此定义域内第一个函数的定积分:%.4f\n",result); //第二种方法是先将具体函数f2的地址传给funp,再调用calc计算定积分 funp=f2; result=calc(funp,a,b); printf("此定义域内第二个函数的定积分:%.4f\n",result); return 0; } 继续学 -
马上期末考试了,水一道发扑克牌 //$[泡泡表情]::(哈哈)前言:虽然用的是cpp,但下文写的代码本质上是c语言。 #include<stdio.h> #include<stdlib.h>//用于调用rand函数和srand函数 #include<time.h>//用系统时间设定随机数 struct card{ int suit; int face; //$[泡泡表情]::(小乖)可以看到这里的suit和face都是整型变量而不是char型 //花色有四个,面值有十三个,这是suit和face数字化的前提 //之后可以通过数学运算,通过随机数确定每个牌的suit和face的值是多少 //然后用这个值作为新数组char *suit和char *face的项,就能得到对应牌号的花色和面值 };//用结构体定义card的所包含的两个元素suit和face void deal(struct card *wdeck){//引用deal函数发牌 int i,m,t;//i是循环变量,m用于选取随机数,然后i给t定调,保证t遍历0~51(合计52张牌,也就是除去大小王) int temp[52]={0};//0和1判断未发牌和发牌 srand(time(NULL));//随机数的初始化,如果只写rand会导致每次随机生成的结果不变 for(i=0;i<52;i++){ while(1){//如果temp[m]不是0就一直循环 m=rand()%52; if(temp[m]==0){ break; } } temp[m]=1; t=(i%4)*13+(i/4);//$[泡泡表情]::(吐舌)这样做模拟了整个发牌流程,i%4保证是依次发牌,*13保证了每个人是13张牌,i/4表示每个人都得到一张牌后,进入下一个周期 //部分流程示意:i=0时,t=0*13+0,此时给1号玩家发牌;i=1时,t=13+0,此时给2号玩家发牌;i=2时,t=26+0,此时给3号玩家发牌;i=3时,t=39+0,此时给4号玩家发牌;i=4时,t=0*13+1,此时给1号玩家发牌,加法前一部分定了发牌顺序,牌主所得牌的牌号范围,后一部分则保证了经历过一遍循环之后牌号就往前挪一次。 //照这种分法,1号玩家的牌号就是0~12,2号玩家的牌号就是13~25,以此类推。 wdeck[t].suit=m/13;//m/13只有四种可能,随机确定花色 wdeck[t].face=m%13;//m%13只有十三种可能,随机确定面值 } } int main(void){ struct card deck[52]; const char *suit[]={"Heart","Diamond","Club","Spade"};//定义char型的指针数组, //方便使用%s直接打印 const char *face[]={"A","K","Q","J","2","3","4","5","6","7","8","9","10"}; //道理同上 deal(deck); //引用deal函数发牌 for(int i=0;i<52;i++){ if(i%13==0){ //一个玩家需要循环13次,从0~12为第一位玩家,所以以0,13,26,39作为玩家标记 printf("Player %d\n",i/13+1); //加1让结果向后偏移一位,正好能指向当前被发牌的玩家 } printf("%s ",face[deck[i].face]); //回看结构体中suit和face的定义,再去看主函数中的suit和face的定义 //就能理解为什么这里是face[deck[i].face]了 //我简单解释一下,内层i确定了内层face的值是多少 //然后用这个值作为外层face的项数,就能确定face是多少了,suit同理。 printf("%s\n",suit[deck[i].suit]); } return 0; }感谢您的收看,如果您有其他见解(如算法优化),不妨留言讨论吧!$[阿鲁表情]::(害羞) -
洛谷(学习c++字符串)写了一整天的王老师的任务 #include<bits/stdc++.h> using namespace std; int i,q[1000],z[1000],sum[1000],changdu=0;//i是循环总数,q,z用于存储当前循环的两个数字,sum是两个数通过运算得到的结果,changdu用于计算q+z=sum这个算式的长度 char x[1000],y[1000];//x用于存储当前的运算符,y是用于判断第一个输出结果是运算符还是数字 string string1[1000],string2[1000],string3[1000];//因为c++中数字没有长度的概念,所以需要用三个字符串分别存储数组长度,以便计算算式的长度“changdu” int main(void)//多数情况下可以省略void,只是我写习惯了$[阿鲁表情]::(高兴){ cin>>i; if(i<=0||i>50)return 0;//根据题意,限制i的范围 for(int j=0;j<i;j++)//第一个循环用于输入数字,不过我现在相通了,洛谷的题不需要把输入和输出分成两个循环写,因为你输入和输出并不在同一个输入框,所以一边输入一边输出也可以正常执行{ cin>>y;//用y来判断是否满足算式符号abc或者数字 if(y[0]>='a'&&y[0]<='z')//如果输入的是运算符就给x赋值{ x[j]=y[0]; cin>>q[j]>>z[j]; } else//如果输入的是数字就给q赋值,并让这次的运算符与上一次保持一致{ sscanf(y,"%d",&q[j]); x[j]=x[j-1]; cin>>z[j]; } if(x[j]=='a')//这个sum[j]完全可以用q[j]+z[j]代替 //例如printf("%d+%d=%d",q[j]+z[j],q[j]+z[j])$[阿鲁表情]::(赞一个);{ sum[j]=q[j]+z[j]; } else if(x[j]=='b')//减法{ sum[j]=q[j]-z[j]; } else if(x[j]=='c')//乘法{ sum[j]=q[j]*z[j]; } else sum[j]=0; string1[j]=to_string(q[j]);//to_string可以将括号内的数字类型转换成字符串类型 string2[j]=to_string(z[j]); string3[j]=to_string(sum[j]); } for(int c=0;c<i;c++){ //计算changdu changdu=2+string1[c].size()+string2[c].size()+string3[c].size(); if(x[c]=='a'){ printf("%d+%d=%d\n",q[c],z[c],sum[c]); cout<<changdu<<endl; } if(x[c]=='b'){ printf("%d-%d=%d\n",q[c],z[c],sum[c]); cout<<changdu<<endl; } if(x[c]=='c'){ printf("%d*%d=%d\n",q[c],z[c],sum[c]); cout<<changdu<<endl; } changdu=0; } return 0; }只能说我太菜了,入门题写了这么久,不过通过这题学到了一堆东西。$[泡泡表情]::(惊哭) 按照输入输出同时进行的逻辑,存储q,z是完全没有必要的,并且printf支持直接计算结果sum,所以没有必要多定义一个数组sum来存储运行结果。如果你有更简单的方法,欢迎留言分享。$[泡泡表情]::(吐舌) 《口算练习题》题目链接: https://www.luogu.com.cn/problem/P1957