Unity3D特效百例 | 案例项目实战源码 | Android-Unity实战问题汇总 |
---|---|---|
游戏脚本-辅助自动化 | Android控件全解手册 | 再战Android系列 |
Scratch编程案例 | 软考全系列 | Unity3D学习专栏 |
蓝桥系列 | ChatGPT和AIGC |
👉关于作者
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单。
👉实践过程
😜三角螺旋阵
方阵的主对角线之上称为“上三角”。
请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
例如:当n=3时,输出:
1 2 3
6 4
5
当n=4时,输出:
1 2 3 4
9 10 5
8 6
7
当n=5时,输出:
1 2 3 4 5
12 13 14 6
11 15 7
10 8
9
程序运行时,从标准输入获得整数n(3~20)
程序输出:方阵的上三角部分。
要求格式:每个数据宽度为4,右对齐。
import java.util.Scanner; public class 三角螺旋阵 { // 输出 public static void print(int[][] m){ for(int[] x:m){ for(int y:x){ System.out.printf("%4d",y); } System.out.println(); } } // 初始化 public static void init(int[][] m){ for(int i=0;i<m.length;i++){ m[i] = new int[m.length-i]; } } // 螺旋填充数字 public static void f(int[][] m,int k,int num){ if(k>=m.length/2) return ; // 第一行 for(int i=k;i<m[k].length-k;i++){ m[k][i] = num++; } // 最后一位 for(int i=k+1;i<m[k].length-k;i++){ m[i][m[i].length-1-k] = num++; } // 左列 for(int i=m[k].length-2-k;i>k;i--){ m[i][k] = num++; } f(m,k+1,num); // 递归进行内圈填充 } public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("输入整数n(3~20)"); int n = scan.nextInt(); int[][] m = new int[n][]; init(m); // 初始化 f(m,0,1); // 螺旋填充数字 print(m); // 输出 }
}
😜干支记年法
在我国古代和近代,一直采用干支法纪年。它采用10天干和12地支配合,一个循环周期为60年。
10天干是:甲,乙,丙,丁,戊,己,庚,辛,壬,癸
12地支是:子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥
如果某年是甲子,下一年就是乙丑,再下是丙寅,…癸酉,甲戌,乙亥,丙子,…
总之天干、地支都是循环使用,两两配对。
今年(2012)是壬辰年,1911年辛亥革命
下面的代码根据公历年份输出相应的干支法纪年。已知最近的甲子年是1984年。
请分析代码逻辑,并推测划线处的代码。
public class 干支记年法 { public static void f(int year){ char[] x = {'甲','乙','丙','丁','戊','己','庚','辛','壬','癸'}; char[] y = {'子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥'}; int n = year - 1984; while(n<0) { n += 60; } System.out.printf("%d %s%s\n", year,x[n%10], y[n%12]); } public static void main(String[] args){ f(1911); f(1970); f(2012); }
}
运行结果:
1911 辛亥
1970 庚戌
2012 壬辰
😜异或加密法
在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。
解密的方法就是再执行一次同样的操作。
加密过程中n位二进制数会循环使用。并且其长度也可能不是8的整数倍。
下面的代码演示了如何实现该功能。
public class 异或加密法 { public static void print(char[] p){ for(char x:p){ System.out.printf("%s", x); } System.out.println(); } public static void f(char[] buf, char[] uckey, int n) { int i; for (i = 0; i < n; i++) buf[i] = (char) (buf[i] ^ uckey[i]); } public static void main(String[] args) { char p[] = "abcd中国人123".toCharArray(); // 待加密串 char[] key = "11001100010001110".toCharArray(); // 以串的形式表达的密匙,运算时要转换为按位存储的形式。 int np = p.length; int nk = key.length; char[] uckey = new char[np]; // 密匙串需要按位的形式循环拼入 uckey中 int i; for (i = 0; i < np * 8; i++) { if (key[i % nk] == '1') uckey[i/8] |= (char)0x80 >> (i%8); // 填空1 else uckey[i/8] &= ~(char)0x80 >> (i%8); // 填空2 } f(p, uckey, p.length); print(p); f(p, uckey, p.length); print(p); }
}
😜金字塔
下面代码的目标是输出一个大写字母组成的金字塔。
其中space表示金字塔底距离左边的空白长度,x表示金字塔底的中心字母。
比如:space=0, x=’C’,则输出:
A
ABA
ABCBA
再如:space=2,x=’E’, 则输出:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
请分析该段代码的逻辑,填写缺少的部分。
public class 金字塔 { public static void h(int space, char x){ int i; if(x<'A' || x>'Z') return; h(space+1,(char)(x-1)); // 填空 for(i=0; i<space; i++) System.out.printf(" "); for(i=0; i<x-'A'; i++) System.out.printf("%c",'A'+i); for(i=0; i<=x-'A'; i++) System.out.printf("%c",(char)(x-i)); // 填空 System.out.printf("\n"); } public static void main(String[] args) { int space=0; char x= 'E'; h(space,x); }
}
运行结果:A ABA ABCBA ABCDCBA
ABCDEDCBA
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。