SQL 每月的3流水号,超过999用ABC表示
何必要如此呢,扩大位数岂不更好?
下面是你需要的代码主体,具体参数定义看注释。
---定义当前的流水号,可以从数据库中获取,此处为测试值
DECLARE@CURR_LSHVARCHAR(7)
---新流水号
DECLARE@LSHVARCHAR(7)
---旧流水号第5位
DECLARE@FIRSTCHARVARCHAR(1)
---旧流水号最后2位的数值
DECLARE@LASTCHAR2INT
---旧流水号第5位的asc码
DECLARE@FIRSTCHARASCIIINT
---新的后3位流水号
DECLARE@LASTCHAR3NEWVARCHAR(3)
---测试的旧流水号
SET@CURR_LSH='B307Z98'
---定义当前年份最后1位和两位的月份
DECLARE@YEARVARCHAR(1)
DECLARE@MONTHVARCHAR(2)
SET@YEAR=SUBSTRING(CONVERT(VARCHAR,DATEPART(YEAR,GETDATE())),4,1)
SET@MONTH=RIGHT('0'+CONVERT(VARCHAR,DATEPART(MONTH,GETDATE())),2)
SET@FIRSTCHAR=SUBSTRING(@CURR_LSH,5,1)
SET@FIRSTCHARASCII=ASCII(@FIRSTCHAR)
---@FIRSTCHARASCII48-57表示0-9,65-90表示A-Z
SET@LASTCHAR2=CONVERT(INT,SUBSTRING(@CURR_LSH,6,2))
IF@LASTCHAR2<99
BEGIN
SET@LASTCHAR3NEW=@FIRSTCHAR+RIGHT('00'+CONVERT(VARCHAR,@LASTCHAR2+1),2)
END
ELSE
BEGIN
IF@FIRSTCHARASCII<57
SET@LASTCHAR3NEW=CONVERT(VARCHAR,CONVERT(INT,@FIRSTCHAR+'00')+CONVERT(INT,RIGHT('00'+CONVERT(VARCHAR,@LASTCHAR2+1),3)))
ELSEIF@FIRSTCHARASCII=57
SET@LASTCHAR3NEW='A00'
ELSE
SET@LASTCHAR3NEW=CHAR(@FIRSTCHARASCII+1)+'00'
END
---输出你需要的新流水号
SET@LSH='B'+@YEAR+@MONTH+@LASTCHAR3NEW
---打印出来
PRINT@LSH
参考了第一位兄弟的答案
DECLARE@KeyINT
DECLARE@ASCIIINT
DECLARE@PreKeyVARCHAR(32)
DECLARE@SerialNoVARCHAR(32)
--取已经存在的最大值(需要自行修改一下)
IFNOTEXISTS(SELECTSerialNoFROMtable)
SET@SerialNo='B000000'
ELSE
SELECT@SerialNo=SerialNoFROMtbale
--计算新的前缀
SET@PreKey=LEFT(@SerialNo,1)
SELECT@prekey=@prekey
+CAST(RIGHT(DATEPART(year,GETDATE()),1)*100
+DATEPART(MONTH,GETDATE())ASVARCHAR(32))
--计算流水号部分
SET@key=RIGHT(@SerialNo,2)
IF@Key=99
BEGIN
SET@ASCII=ASCII(LEFT(RIGHT(@SerialNo,3),1))+1
SET@key=0
END
ELSE
BEGIN
SET@ASCII=ASCII(LEFT(RIGHT(@SerialNo,3),1))
SET@key=@key+1
END
IF@ASCII=58
SET@ASCII=65
IF@ASCII>90
GOTOErr
--输出最终的编号
SELECT@PreKey+CHAR(@ASCII)+RIGHT('00'+CAST(@keyASVARCHAR),2)
澳伦特价数码www.abc999shop.cn 上卖的东西为什么那么便宜~?看了让人很心动
我去看了一下,绝对是骗子公司,现在很来多这种网站,大家要小心,超出正常合理价格很多的东西就要注意.有几个办法可以验证是不是骗子公司:1.到太平洋或者中关村在线看看正常报价,少很多的就要小心了源.2.卖东西都要求打现金,不能用支付宝或其他的比较可靠的网购渠道.3.看地址,看有没有那边的朋友,叫他(她bai)去看看.4.看电话,都是手机就不用讲了,如果留了固定电话号码看是不是小灵du通的,可以拨打当地的zhi10000(电信)10060(网通)查询,如果是小灵通的就...5.(最有效的,屡试不爽的方法)直接打电话给网站的电话,说到了他们公司所在的城市了(最好用手机拨打),想去当面交易.如果对方说公司放假、没空、dao不接受当面交易等,那99%就是骗子了。
写程序(在100--999中 输出满足abc=a*a*a+b*b*b+c*c*c的数。) 在下面的程序中,什么地方出错了,帮忙找一下
程序不是只写给机bai器看的,养成一个好习惯du,查问题也方便
#include
intmain()
{
inti;
for(i=100;i<=999;i++)
{
zhiinta,b,c,abc;
abc=i;
a=i/100;//取百位dao
b=(i%100)/10;//先取专到两位数,再取十位
c=i%10;//取个位属数
if(abc==a*a*a+b*b*b+c*c*c)
printf("%d\n",i);
}
getchar();
return0;
}
if(i==(i/100)*(i/100)*(i/100)+((i-i/100*100)/10)*((i-i/100*100)/10)*((i-i/100*100)/10)+(i-i/10*10)*(i-i/10*10)*(i-i/10*10))
多了一2113个5261括号)4102,倒1653数第专二个属
用java求100-999中的水仙花数,(若三位数abc,abc=a^3+b^3+c^3, 则称abc为水仙花数。如153,1^3+5^3+
publicstaticvoidmain(String[]args){
//第一种方bai法du
/*intm,a,b,c;
for(inti=100;i<1000;i++){
m=i;
c=m%10;
b=(m/10)%10;
a=m/100;
if(m==a*a*a+b*b*b+c*c*c){
System.out.println("\t"+m);
}
}*/
//第二种方法
inta,b,c,m;
for(inti=1;i<=9;i++){//a为百位zhi数字,不能为dao0
a=i;
for(intj=0;j<=9;j++){
b=j;
for(intk=0;k<10;k++){
c=k;
m=a*100+b*10+c;
if(m==a*a*a+b*b*b+c*c*c){
System.out.println("\t"+m);
}
}
}
}
}
publicstaticvoidmain(String[]args){
inta,b,c;
inte,f;
for(inti=0;i<10;i++){
a=i;
for(intj=0;j<10;j++){
b=j;
for(intk=0;k<10;k++){
c=k;
e=a*a*a+b*b*b+c*c*c;
f=a*100+b*10+c;
if(f.equals(e)){
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(f);
}
}
}
}
}
我是刚学java就用的for循环楼主看看吧
publicclassTest1{
1653publicstaticvoidmain(String[]args){
内System.out.println("水仙花数:");
for(inti=100;i<999;i++){
inta=i;//取100-999整数
intb1,b2,b3;
b1=a%10;//个位
b2=(a/10)%10;//十位
b3=a/100;//百位容
intsum=b1*b1*b1+b2*b2*b2+b3*b3*b3;
if(a==sum){
System.out.println(a);
}
}
}
}
public?class?ShuX?{
public?static?void?main(String[]?args)?{
int?b1,?b2,?b3;
for(int?m=101;?m<1000;?m++)?{
b3?=?m?/?100;
b2?=?m?%?100?/?10;
b1?=?m?%????10;
if((b3*b3*b3?+?b2*b2*b2?+?b1*b1*b1)?==?m)?{
System.out.println(m+"是一2113个5261水4102仙1653花专数属");?}
}
}
}
publicstaticvoidmain(String[]args){
for(inti=100;i<1000;i++){
intn,nn,nnn;
nnn=i/100;
nn=(i-nnn*100)/10;
n=i-nnn*100-nn*10;
if(i==n*n*n+nn*nn*nn+nnn*nnn*nnn){
System.out.println(i);
}
}
}
C语言:输出100-999中所有水仙花数。
//输出水仙花2113
{for(inti=100;i<1000;i++)
{
intsum=0;
inttemp=i;
intrem;
for(intj=0;j<3;j++)
{rem=temp%10;
temp/=10;
sum+=rem*rem*rem;
}if(sum==i)
{
printf("%d\n",i);
}
}
}
扩展资料
C语言5261:输4102出9*9口诀
#include"stdio.h"
main()
{
inti,j,result;
printf("\n");
for(i=1;i<10;i++)
{for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐1653,占3位*/
}
printf("\n");/*每一内行后换行容*/
}
}
在100-999之间的三位数ABC,满足A3+B3+C3=ABC,就称ABC为水仙花数。
根据你的描述和提供的代码,只需要对输出的结果进行换行即可,修改后的代码如下:
#include
intmain()
{
inti,a,b,c;
for(i=100;i<=999;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("%disadaffodilnumber.\n",i);
}
return0;
}
程序运行结果:
扩展资料:
除了上面使用的C语言实现外,常用的实现语言还有;
ALGOL代码实现“水仙花数”:
begin
integer?i,j,k;
for?i?:=?1?step?1?until?9?do
for?j?:=?0?step?1?until?9?do
for?k?:=?0?step?1?until?9?do
if?i×i×i?+?j×j×j?+?k×k×k?=?100×i?+?10×j?+?k?then
print?(100×i?+?10×j?+?k);
end
PHP代码实现“水仙花数”:
<?php
//使用系统自带函数,即可实现幂运算,何必画蛇添足,自己写函数
functionis_narcissistic($n)
{
$hundreds=floor($n/100);//分解出百位
$tens=floor($n/10)%10;//分解出十位
$ones=floor($n%10);//分解出个位
return(bool)(pow($hundreds,3)+pow($tens,3)+pow($ones,3)==$n);
}
for($i=100;$i<1000;++$i)
{
if(is_narcissistic($i))
echo$i."\n";
}
die();
?>
参考资料:百度百科-水仙花数
水仙花数是指一个n位数(n≥3),它的每个位上bai的数字的n次幂之和等于它本身。判断一个数是否du为水仙花数需要拆分数位,求幂再相加。不过这道题限zhi定了范围,都是三位数,所以可以使用3重循dao环分别代表3个数位,这回样就省去了拆分的麻烦。
代码如下:#include?
int?main()
{
int?i,?j,?k,?sum;
sum?=?0;
for?(i?=?1;?i?<?10;?i++)
答for?(j?=?0;?j?<?10;?j++)
for?(k?=?0;?k?<?10;?k++)
if?((i*i*i?+?j*j*j?+?k*k*k)?==?(i*100?+?j*10?+?k))
printf("%d\n",?i*100?+?j*10?+?k);
return?0;
}
- 本文固定链接: http://www.jsfengsu.com/gpsp/1043.html
- 转载请注明: admin 于 【阿新股票视频网】 发表