goto、math.round、输出固定个数换行

今天学了几集比较基础的内容,还是有些内容在当初学习时疏忽了,开始记录一下。

 一、goto语句,goto语句在java中几乎用不到,但是在跳出子循环继续执行父循环这方面还是很方便的,如:

outer:for(int i=1;i<100;i++)
{
for(int j=2;j<10;j++)
{
if(i%j==0)
continue outer;
System.out.print(j);
}
System.out.println();
}


二、math.round是四舍五入,如:math.round(7.5);


三、当要求输出100以内5的倍数,一行三个时;

for(int i=1;i<100;i++)
{
if(i%5==0)
System.out.print(i+" ");
if(i%(5*3)==0)
System.out.println();
}


四、递归思想的思路还是要理清晰,如下面计算阶乘。当a=1时 返回给上层return 2*test(1),而test(1)因为a=1所以return 1,所以上层就是2*1;

public static int test(int a)
{
if(a==1)
return 1;
else
return a*test(a-1);
}

数据类型: 数据类型定义与格式化调用一致(涉及强制转换(涉及void任意型)) 整型与字符型之间存在对应关系(涉及ascii表及isxxxxx类库函数) 除for()内的i,n或Arr的下标外均可将int换为long long 运算过程中可能会溢出int甚至long long(涉及取模运算) 注意有时long long不宜直接进行非整除得double? 注意有时需要unsigned int或unsigned long long型 注意区分1(默认int),1LL,1ULL(常见于位运算>>或<<中) 指针根据指向对象亦有类型;变量地址必为size_t整型 函数根据返回的情况具有数据类型,注意函数参数所需类型 int,long long,double型分别对应绝对值函数abs,llabs,fabs 数据结构: 条件语句: if-else或if-else if-else,避免并列if的出现 注意:()后无分号;运算符及其优先级(括号);非0即真 选择语句: switch-case-break-default 注意break的对跃出当前case的作用 循环语句: for/while/do-while(L.不定组输入);break;continue;goto 注意:for中i的首末及增量;while死循环;do-while至少执行一次 注意:i++和++i的差异及初值经循环后的意义;注意for()后的分号 注意:多级循环注意下标检索的区分;提前break或continue可优化 注意:break仅跳出一层循环,可考虑sign或flag等额外标记处理之 注意:goto A;A:后不能直接连定义语句,而需分号空语句单独占一行 注意:时间复杂度(数据的预处理及检索;不要反复调用strlen等函数) 输入输出: 输入基础: scanf(不支持空格/换行),fgets(不支持换行符),getchar(支持字符) scanf:需对非字符串型取地址&传入;字符(匹配)或字符串前消空白 scanf:可返回正确输入的个数;遇EOF(cntrl^Z)失败 fgets:可能会占用str余下位置填充’\n’;len(str)=strlen(str)-1;删换行 getchar:getchar()可消去”%c””%s”scanf输入前的空白字符 多组输入: 若仅需实现提问次数的限制,直接while(n--)即可,否则建议for()处理 可考虑数组存储 不定输入: while(scanf(“%d%d”)==2)//正常输入则继续 while((c=getchar())!EOF&&c!=’\n’)//非终止或换行则继续 while(fgets(str,sizeof(str),stdin!=NULL)//非空则继续至换行 while(1){终止条件} 可考虑数组存储 输出基础: printf(注意添加换行);puts(自动换行) printf格式化输出(符号;前导;宽度;精度);注意特殊转义’\’;%% 一次输入可直接对应一次输出,或采用数组存储一次性输入输出 常量变量: 常量可采用宏定义:EPS;MAX_N且:acos(-1)=π;exp(1)=e str[]=”Hello”为不可修改的字符串常量;拓展:指针常量与常量指针 变量分全局变量和局部变量;函数调用时全局变量不在形参列表中 变量必须先定义再调用;定义和调用需要数据类型的对应 浮点精度 浮点数的二进制存储方式 浮点数比较:EPS精度控制;fabs(a-b)<=EPS判断相等? /截断;floor下取整;ceil上取整;round四舍五入;int(x+0.5)强制转换? 模拟浮点数:整数部分先输出,小数部分借助.x输出,得形式上的浮点数 超高精度的四则运算及阶乘等:涉及数组与进位模拟(可能需四舍五入) 位运算 基本运算:&(位与),|(位或),^(异或),~(取反),>>(右移),<<(左移) 基础取位操作:(x>>i)&1可取x第i位的二进制数 基础置位操作:x&=~(1LL<<i);x|=(1LL<<i)分别将第i位置0,1 基础翻转操作:x^= (1LL << i)可将第i位翻转 a^b^a=b可实现二元数值交换,节省一中间变量 快速计算与奇偶判断:快速幂;二的乘方与幂次判断;奇偶数判断 数组 定义n长数组下标从0到n-1; 不允许定义以变量为长度的数组 较大数组需放main外(建议统一外置);会自动初始化为全零数组 数组初始化需要注意初始化数值对后续输入数据的影响 数组前后元素比较时,循环下标可自i=1开始,比较[i-1]和[i]防越界 数组在最值求解时需要直接预设其为[0]而非自设初始值 数组在频率统计等问题中涉及到数组嵌套,注意含义解析 数组可用于记忆化/判断是否已操作! 数组的前缀和/差项的应用! 二维数组定义时第一维可缺省,内存会自动分配 二维数组字符串列表,调用一维A[i]即调用i对应字符串 二维数组可用于矩阵/坐标/图案/字符串或状态列表等 任意维数组都可划归为一维数组,都可用指针代替 sizeof()返回数组总字节数;strlen()遇’\0’记其前元素数 字符串 字符串本质是以’\0’作结的字符数组;有时需要强制补’\0’ 字符串列表可以二维数组形式表现,二维缺省以一维下标查找 字符串比较:strcmp;strncmp strcmp(s1,s2):全等返回0;字典序s1[i]>s2[i]返回正差值 strncmp(s1,s2,n):比较下标[0]到[n-1],返回情况同上所述 字符串拼接:strcat;strncat strcat(dest,s1):s1置于dest后,会删除dest后’\0’;注意长度 strncat(dest,s1,n):s1前至多n符置于dest后,可能需要强制补’\0’ 字符串复制strcpy;strncpy strcpy(dest,s1):将s1复制入dest;注意长度 strncpy(dest,s1,n):将s1至多n符复制入dest,可能需要强制补’\0’ 字符串子串strstr strstr(target,s1):在target中找s1,返回其子串首指针,否则NULL 字符查找strchr;strrchr strchr(target,c):在target中查找字符c并返回首次出现c的指针 查找范围包括’\0’,因此:strchr(s,’\0’)可获取字符串末尾 strrchr(target,c):在target中查找字符c并返回末次出现c的指针 数串转换:sprintf;snprintf;sscanf sscanf(str,xxx%dxxx,num)实现str中格式化提取%d等(类正则) sprintf(dest,”%d”,num):实现将num强制转换为字符形式的’0’-‘9’ snprintf(des,n,”%d,num);实现仅对至多n位num执行上述操作 指针视角下str+i可实现字符串首元素偏移 指针 涉及对变量地址的访问,涉及取地址和解引用;通过地址访问变量值 数组和字符串均可通过指针形式访问具体元素,+i表示偏移i位次 指针涉及:常量指针,指针常量,多级指针,函数指针 指针经典运用:swap函数通过地址对a,b实现值交换 库函数 <stdio.h>标准输入输出库 格式化输出printf, fprintf, sprintf, snprint 格式化输入scanf, fscanf, sscanf 读一个字符getchar, getc, fgetc 写一个字符putchar, putc, fputc 读字符串fgets 写字符串fputs, puts <stdlib.h>通用工具库 动态内存分配与释放malloc, calloc, realloc, free 字符串转整数/浮点数atoi, atol, atoll, atof 更安全的字符串转数字strtol, strtoul, strtod 求绝对值abs, labs, llabs 快速排序qsort 二分查找bsearch <string.h>字符串和内存操作 字符串拷贝strcpy, strncpy 字符串拼接strcat, strncat 字符串比较strcmp, strncmp 获取字符串长度strlen 查找字符strchr, strrchr 查找子串strstr 字符串分割(破坏原串)strtok <math.h>数学函数库 三角函数(弧度) sin, cos, tan 反三角函数asin, acos, atan 指数与对数exp, log, log10 乘方与开方pow(x, y), sqrt 向某端取整ceil, floor 舍入与截断round, trunc 浮点绝对值fabs 浮点取模fmod <ctype.h>字符类型判断与转换 是否字母isalpha(c) 是否数字isdigit(c) 是否字母或数字isalnum(c) 是否小写/大写islower, isupper 是否空白字符isspace(c) 转小写/大写tolower(c), toupper(c)
最新发布
12-03
C语言程序设计基础 数据类型: 数据类型定义与格式化调用一致(涉及强制转换(涉及void任意型)) 整型与字符型之间存在对应关系(涉及ascii表及isxxxxx类库函数) 除for()内的i,n或Arr的下标外均可将int换为long long 运算过程中可能会溢出int甚至long long(涉及取模运算) 注意有时long long不宜直接进行非整除得double? 注意有时需要unsigned int或unsigned long long型 注意区分1(默认int),1LL,1ULL(常见于位运算>>或<<中) 指针根据指向对象亦有类型;变量地址必为int整型 函数根据返回的情况具有数据类型,注意函数参数所需类型 int,long long,double型分别对应绝对值函数abs,labs,fabs 数据结构: 条件语句: if-else或if-else if-else,避免并列if的出现 注意:()后无分号;运算符及其优先级(括号);非0即真 选择语句: switch-case-break-default 注意break的对跃出当前case的作用 循环语句: for/while/do-while(L.不定组输入);break;continue;goto 注意:for中i的首末及增量;while死循环;do-while至少执行一次 注意:i++和++i的差异及初值经循环后的意义;注意for()后的分号 注意:多级循环注意下标检索的区分;提前break或continue可优化 注意:break仅跳出一层循环,可考虑sign或flag等额外标记处理之 注意:goto A;A:后不能直接连定义语句,而需分号空语句单独占一行 注意:时间复杂度(数据的预处理及检索;不要反复调用strlen等函数) 输入输出: 输入基础: scanf(不支持空格/换行),fgets(不支持换行符),getchar(支持字符) scanf:需对非字符串型取地址&传入;字符(匹配)或字符串前消空白 scanf:可返回正确输入的个数;遇EOF(cntrl^Z)失败 fgets:可能会占用str余下位置填充’\n’;len(str)=strlen(str)-1;删换行 getchar:getchar()可消去”%c””%s”scanf输入前的空白字符 多组输入: 若仅需实现提问次数的限制,直接while(n--)即可,否则建议for()处理 可考虑数组存储 不定输入: while(scanf(“%d%d”)==2)//正常输入则继续 while((c=getchar())!EOF&&c!=’\n’)//非终止或换行则继续 while(fgets(str,sizeof(str),stdin!=NULL)//非空则继续至换行 while(1){终止条件} 可考虑数组存储 输出基础: printf(注意添加换行);puts(自动换行) printf格式化输出(符号;前导;宽度;精度);注意特殊转义’\’;%% 一次输入可直接对应一次输出,或采用数组存储一次性输入输出 常量变量: 常量可采用宏定义:EPS;MAX_N且:acos(-1)=π;exp(1)=e str[]=”Hello”为不可修改的字符串常量;拓展:指针常量与常量指针 变量分全局变量和局部变量;函数调用时全局变量不在形参列表中 变量必须先定义再调用;定义和调用需要数据类型的对应 浮点精度 浮点数的二进制存储方式 浮点数比较:EPS精度控制;fabs(a-b)<=EPS判断相等? /截断;floor下取整;ceil上取整;round四舍五入;int(x+0.5)强制转换? 模拟浮点数:整数部分先输出,小数部分借助.x输出,得形式上的浮点数 超高精度的四则运算及阶乘等:涉及数组与进位模拟(可能需四舍五入) 位运算 基本运算:&(位与),|(位或),^(异或),~(取反),>>(右移),<<(左移) 基础取位操作:(x>>i)&1可取x第i位的二进制数 基础置位操作:(x>>i)&0可置x第i位数位为0;|1则可置之为1 快速计算与奇偶判断:快速幂;二的乘方与幂次判断;奇偶数判断 数组 字符串 指针 库函数 函数 递归
12-03
win10系统如何运行.class public Lcom/example/floatingball/FloatingBallService$TouchListener; .super Ljava/lang/Object; .source “FloatingBallService.java” .implements Landroid/view/View$OnTouchListener; .field private final context:Landroid/content/Context; .method public constructor (Landroid/content/Context;)V .registers 2 .param p1, “context” # Landroid/content/Context; .line 1 invoke-direct {p0}, Ljava/lang/Object;-><init>()V .line 2 iput-object p1, p0, Lcom/example/floatingball/FloatingBallService$TouchListener;->context:Landroid/content/Context; .line 3 return-void .end method .method public onTouch(Landroid/view/View;Landroid/view/MotionEvent;)Z .registers 13 .param p1, “v” # Landroid/view/View; .param p2, “event” # Landroid/view/MotionEvent; .line 10 invoke-virtual {p2}, Landroid/view/MotionEvent;->getAction()I move-result v0 packed-switch v0, :pswitch_data const/4 v0, 0x0 return v0 .line 11 :pswitch_0 # ACTION_DOWN invoke-virtual {p2}, Landroid/view/MotionEvent;->getX()F move-result v1 invoke-virtual {p2}, Landroid/view/MotionEvent;->getY()F move-result v2 sput v1, Lcom/example/floatingball/FloatingBallService;->initialTouchX:F sput v2, Lcom/example/floatingball/FloatingBallService;->initialTouchY:F invoke-virtual {p1}, Landroid/view/View;->getLeft()I move-result v1 invoke-virtual {p1}, Landroid/view/View;->getTop()I move-result v2 sput v1, Lcom/example/floatingball/FloatingBallService;->initialX:I sput v2, Lcom/example/floatingball/FloatingBallService;->initialY:I goto :return_true .line 12 :pswitch_1 # ACTION_MOVE invoke-virtual {p2}, Landroid/view/MotionEvent;->getX()F move-result v1 invoke-virtual {p2}, Landroid/view/MotionEvent;->getY()F move-result v2 sget v3, Lcom/example/floatingball/FloatingBallService;->initialX:I sget v4, Lcom/example/floatingball/FloatingBallService;->initialTouchX:F sub-float v5, v1, v4 invoke-static {v5}, Ljava/lang/Math;->round(F)I move-result v5 add-int/2addr v3, v5 move v1, v3 sget v3, Lcom/example/floatingball/FloatingBallService;->initialY:I sget v4, Lcom/example/floatingball/FloatingBallService;->initialTouchY:F sub-float v5, v2, v4 invoke-static {v5}, Ljava/lang/Math;->round(F)I move-result v5 add-int/2addr v3, v5 move v2, v3 invoke-virtual {p1, v1, v2, v1, v2}, Landroid/view/View;->layout(IIII)V goto :return_true .line 13 :pswitch_2 # ACTION_UP invoke-virtual {p2}, Landroid/view/MotionEvent;->getX()F move-result v1 invoke-virtual {p2}, Landroid/view/MotionEvent;->getY()F move-result v2 sget v3, Lcom/example/floatingball/FloatingBallService;->initialTouchX:F sub-float v4, v1, v3 invoke-static {v4}, Ljava/lang/Math;->abs(F)F move-result v4 sget v5, Lcom/example/floatingball/FloatingBallService;->initialTouchY:F sub-float v6, v2, v5 invoke-static {v6}, Ljava/lang/Math;->abs(F)F move-result v6 const/high16 v7, 0x3f000000 # 0.5f cmpl-float v8, v4, v7 cmpg-float v9, v6, v7 or-int v8, v8, v9 if-nez v8, :not_click iget-object v8, p0, Lcom/example/floatingball/FloatingBallService$TouchListener;->context:Landroid/content/Context; const-string v9, "\u6d6e\u7403\u88ab\u70b9\u51fb" const/4 v10, 0x1 invoke-static {v8, v9, v10}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object v8 invoke-virtual {v8}, Landroid/widget/Toast;->show()V :not_click goto :return_true :return_true const/4 v0, 0x1 return v0 :pswitch_data .packed-switch 0x0 :pswitch_0 :pswitch_1 :pswitch_2 .end packed-switch .end method .end class
10-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值