第一篇:字符串输出格式
printf的格式控制的完整格式:
%-0m.nl或h格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。
n指精度,用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。
格式小结:
(1)最常用的格式是%d,含义是以10进制形式打印一个整数。
如果输出的整数是负数,则输出的第一个字符就是-号。
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。
(2)%u格式与%d格式类似,只不过要求打印无符号10进制整数。
以无符号十进制形式输出整数。
对长整型可以用“%lu”格式输出。同样也可以指定字段宽度用“%mu”格式输出。
(3)%o格式请求输出8进制整数,以无符号八进制形式输出整数。
对长整型可以用“%lo”格式输出。同样也可以指定字段宽度用“%mo”格式输出。
(4)%x和%X格式请求输出16进制整数。
%x格式中用小写字母a,b,c,d,e,f来表示10到15之间的数,以无符号十六进制形式输出整数。
对长整型可以用“%lx”格式输出。同样也可以指定字段宽度用“%mx”格式输出。%X格式中用大写字母A,B,C,D,E,F来表示10到15之间的数
共同点:8进制和16进制整数总是作为无符号数处理的。
(5)%s格式用于打印字符串,与之对应的参数应该是一个字符指针,待输出的字符始于该指针所指向的地址,直到出现一个空字符(' ')才终止。%s:例如:printf(“%s”, “CHINA”)输出“CHINA”字符串(不包括双引号)。%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。
%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。
%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。
(6)%c格式用于打印单个字符:例如:
printf(“%c”,c);等价于 putchar(c);
(7)%g,%f和%e这三个格式用于打印浮点值。
%g格式用于打印那些不需要按列对齐的浮点数特别有用。其作用有二: 一,去掉该数尾多余的零(没有达到六位的数)
二,保留六位有效数字(多余六位的)
%e格式用于打印浮点数时,一律显示地使用指数形式:例如:输出圆周率时是:
3.141593e+00
两者的区别:
%g格式打印出的数是总共6位有效数字
%e格式打印出小数点后的6位有效数字
%f禁止使用指数形式来表示浮点数。因此圆周率输出为:3.141593
(但注意它的精度要求:也是小数点后6位有效数字)
(8)%%格式用于打印一个%字符。
(9)%E和%G只是在输出时用大写字母(E)代替了小写字母(e)
⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:
%f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。⑧e格式:以指数形式输出实数。可用以下形式:
%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。
%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。
⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。/*******************************************************************/ unsigned int i=295;
printf(“%dn”,i);
295
Press any key to continue
(1).可以在“%”和字母之间插进数字表示最大场宽。
例如: %2d 表示输出3位整型数, 不够2位右对齐。
例如: %5d 表示输出3位整型数, 不够5位右对齐。
例如: %10d 表示输出3位整型数, 不够10位右对齐。
unsigned int i=295;
printf(“%2dn”,i);
printf(“%5dn”,i);
printf(“%10dn”,i);
295
295
295
Press any key to continue
(2).补0或者其它
例如: %02d 表示输出3位整型数, 不够2位右对齐,补0。
例如: %05d 表示输出3位整型数, 不够5位右对齐,补0。
例如: %010d 表示输出3位整型数, 不够10位右对齐,补0。
unsigned int i=295;
printf(“%02dn”,i);
printf(“%05dn”,i);
printf(“%010dn”,i);
295
00295
0000000295
Press any key to continue
(3).负数
int i=-295;
printf(“%02dn”,i);
printf(“%05dn”,i);
printf(“%010dn”,i);
-295
-0295
-000000295
Press any key to continue
(4).可以控制输出左对齐或右对齐, 即在“%”和字母之间加入一个“-” 号可 说明输出为左对齐, 否则为右对齐。
unsigned int i=295;
printf(“%-02dn”,i);
printf(“%-05dn”,i);
printf(“%-010dn”,i);
295
295
295
Press any key to continue
(5).可以在“%”和字母之间加小写字母l, 表示输出的是长型数。
例如: %ld 表示输出long整数
%lf 表示输出double浮点数
(6).%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6, 小数点占一位, 不够9位右对齐。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除./*
unsigned int i=295;
printf(“%dn”,i);
printf(“%1dn”,i);
printf(“%09dn”,i);
printf(“%09dn”,(unsigned char)i);
printf(“%9dn”,(unsigned char)i);
printf(“%-9dn”,(unsigned char)i);
*/
/*
295
295
000000295
000000039
Press any key to continue
*/
/*******************************************************************/ 对于m.n的格式还可以用如下方法表示(例)
int m=10,n=5;
char ch[]=“abcdefghijklmnopqrst”;
printf(“%*.*sn”,m,n,ch);//输出为abcde
前边的*定义的是总的宽度,后边的定义的是输出的个数,分别对应外面的参数m和n。
我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式 /*******************************************************************/ “%08lxn”,4byte
“%04xn”,2byte
“%-2.2BX”,1byte
第二篇:使用队列栈结构反序输出字符串
队列结构
实验目的
1.熟练掌握栈和队列的特点。
2.掌握栈的定义和基本操作,熟练掌握顺序栈的操作及应用。3.掌握对列的定义和基本操作,熟练掌握链式队列的操作及应用, 掌握环形队列的入队和出队等基本操作。
4.加深对栈结构和队列结构的理解,逐步培养解决实际问题的编程能力。
实验要求
1.认真阅读和掌握本实验的算法。2.上机将本算法实现。
3.保存程序的运行结果,并结合程序进行分析。
4.上机过程中,能够熟练运用高级语言的程序调试器DEBUG调试程序。5.上机后,认真整理源程序及其注释,完成实验报告(包括源程序、实验结果、算法分析、心得体会等)。
实验内容
1.在VC++环境下编写调试队列初始化,删除结点,查找结点,插入结点的算法和函数。
2.把已布置作业中的算法改成程序,进行运行。
实验清单
#include
#define size 50
typedef struct { char str[size];int top;}seqstack;
void initstack(seqstack *s);int pop(seqstack *s,char x);int push(seqstack *s,char x);void main(){ int i,j;char str[size],a;seqstack *s;printf(“please input a string :n”);gets(str);s=(seqstack*)malloc(size);initstack(s);for(i=0;str[i]!=' ';i++){ push(s,str[i]);j++;} printf(“the changed string is:n”);for(j=i;j>0;j--){ pop(s,a);
} printf(“n”);}
void initstack(seqstack *s){
s->top=-1;}
int push(seqstack *s,char x){ if(s->top==size-1)
return(0);s->top++;s->str[s->top]=x;return(1);}
int pop(seqstack *s,char x){ if(s->top==-1)
return(0);else {
}
} x=s->str[s->top];s->top--;printf(“%c”,x);return(1);输入数据及相应运行结果
实验心得
在这节课中,我学会用调试这种方法来找出自己的错误
在实验的时候,发现自己对指针内存分配的情况还不是很清楚,会造成内存出错 经过这次上机实验,感觉到自己对序列栈的理解更加深刻,使用起来也更加得心应手
第三篇:文化输出
西方有人认为中国到二十一世纪初叶将成为经济大国,甚至是军事大国,其实中国从本质上说是一个文化大国,最有可能对人类文明做出贡献的是中国文化,二十一世纪将是中国文化的世纪。——季羡林
苟日新,日日新,又日新。”“天行健,君子以自强不息。”这既是中华民族的先哲通过观察宇宙万物提出的重要思想,也深刻揭示了中华民族自强不息的民族精神,因此成为中国的千年传世格言。——胡锦涛
中国,近五十年发展迅速的发展中国家,其经济高速发展之下更是带动起文化的发展和内在历史人文的挖掘。从《舌尖上的中国》到日常的影视作品,甚至日常生活中用到的家居产品,都带着中国人文的精神烙印。一些传统的、历史的、带有人文色彩的产品逐渐从历史中走出,带着新时代的历史使命,重新焕发出新的色彩。
2017年7月27日,作为建军90周年献礼片,《战狼2》登陆国内各大院线。影片以中国海外撤侨真实事件为背景,讲述中国退伍军人冷锋在非洲战乱地区不顾个人安危营救同胞和异国难民的英雄故事。上映以来,几乎场场爆满,凭借良好口碑产生的“自来水效应”,《战狼2》接连打破国内多项电影票房纪录。
2018年2月16日在中国内地上映[2] ;3月1日在中国香港上映《红海行动》
该片体现出了中国军人的英雄气概与大国崛起的精神气度,把中国军事题材影片推向新的高度。它没有把单打独斗式的个人英雄主义当作当代中国海军官兵的精神制高点,而是把镜头的焦点对准了集体的力量。其情感逻辑、动作逻辑的精细把控,和现代艺术技术手段的创造性运用,使得整个撤侨和战争场面的宣言,尤其是危急出兵、突围营救人质,最后的追击等场面,拍出了身临其境的真实感和摄人心魂的震撼效果。
电影工业化往往是文化输出的重要手段,随着中国国力的日渐强盛以及国际影响力的不断扩大,世界渴望中国声音。从战狼类型片构建的价值观,可以管窥中国正在酝酿和试图对外输出的国际关系观:软弱无力的政府军、掺杂恐怖主义的反政府武装、撤侨行动以及我国与他国政府合作构成军事行动的必要条件共同构建一个相同的主题,那就是中国作为国际秩序的主导国家,对于国际责任的承担和克制,即天下体系的重构。
“文运同国运相牵,文脉同国脉相连。”从战狼2到红海行动,从电影工业化到文化输出,中国开始寻求对新型国际关系的思考。这是文化自信的必然体现,更是中国作为国际秩序主导者的责任与担当。
其实,文化输出,我们可不是只有电影,随着综合国力的发展,文化产业也开始成为了我国经济发展中的一支重要力量。很多优秀的文化产品都已经走出了国门,让歪国人们也领略到了一把中国文化的魅力。
以前谈到中国的文化产品,无非是一些国画书法、剪纸纺织这些传统手艺上面。外国人对于中国的认知也只是停留在这些习以为常传统符号上。
而现在,在流行文化上,我们也开始崭露头角。如今中国处在高速的现代化进程中,人们对未来充满了憧憬,科幻小说也随之兴起。中国的科幻小说《三体》、《北京折叠》获得科幻艺术届最高奖“雨果奖”、“星云奖”。并且在海外畅销,中国科幻也赢得了世界目光的青睐,开始了进军世界市场的征途。除了科幻之外,也有越来越多的中国当代文学摆在了欧美发达地区的书店里。
电子游戏产业同样是一个文化输出的全新的领域,经历了数年的厚积薄发后,一批优秀中国的游戏作品也赢得了世界的认可。在海外最大的电子游戏销售平台上,众多国产游戏好评如潮。“中国制造”的手机游戏也能够在超过100个国家进入应用程序销售榜前十名,甚至成为了引导世界手机游戏市场的风向标。
中国在“新时代”文化输出国家实施的措施主要有三点。
1:补齐短板精准扶贫,现代公共文化服务体系建设迈上新台阶
党的十八大以来,在以习近平同志为核心的党中央坚强领导下,广大文化工作者坚定文化自信,坚守中华文化立场,坚持以人民为中心的工作导向,推动社会主义核心价值观和中华优秀传统文化广泛弘扬。
公共文化服务体系建设制度框架初步建立。公共文化服务保障法、公共图书馆法相继施行,明确了各级政府在公共文化服务中的主导地位,为公共文化服务体系建设提供了强有力的法制保障。
2:让主旋律更响亮、正能量更强劲,文艺创作精益求精文化产业蓬勃发展
《战狼2》《芳华》《无问西东》《唐人街探案2》《红海行动》等不同类型的国产影片接连成为“爆款”,业内专家认为,市场的“井喷式”繁荣,得益于创作水平的不断提升。
精益求精搞创作,力争把最好的精神食粮奉献给人民。五年来,我国文艺园地百花竞放、硕果累累,呈现出繁荣发展的生动景象:《平凡的世界》《海棠依旧》《北平无战事》《人民的名义》《白鹿原》等电视剧热播,《朗读者》《国家宝藏》《经典咏流传》等多档文化节目引发观众情感共鸣;现代京剧《西安事变》、豫剧《焦裕禄》、评剧《母亲》、湘剧《月亮粑粑》、话剧《麻醉师》等一大批弘扬社会主义核心价值观的优秀作品,引导人们求真、崇善、向美,让主旋律更响亮,正能量更强劲。
3:坚持创造性转化、创新性发展,优秀传统文化焕发新活力
纪录片《我在故宫修文物》、电视节目《中国诗词大会》等热播,成为现象级节目;文化遗产走出博物馆,通过文化创意产品开发走入百姓家;非物质文化遗产插上“共享经济”“体验经济”翅膀,开辟出产业发展新天地„„近年来,优秀传统文化逐渐融入人民生产生活,重新焕发生机活力。
相信未来会与更多的国产电视剧,电影会火出国门。我们也期待中国的影视作品,能够克服重重难关,逐渐成为中国的文化名片,传递更多的中国声音,向世界阐释更多具有中国特色、体现中国精神、蕴藏中国智慧的优秀文化。
第四篇:Delphi 字符串类型浅析
Delphi 字符串类型浅析 收藏
参考资料《Delphi 5开发人员指南》“第2章Object Pascal语言” 《PASCAL精要》“第7章 字符串操作” “Delphi中String类型和Char类型的比较” “Object Pascal中String类型的内幕探讨”
基本知识字符串类型
•AnsiString这是Pascal缺省的字符串类型,它由AnsiChar字符组成,其长度没有限制,同时与null结束的字符串相兼容。
•ShortString保留该类型是为了向后兼容Delphi1.0,它的长度限制在255个字符内。
•WideString功能上类似于AnsiString,但它是由WideChar字符(UniCode字符集)组成的。引入这种类型,主要是为了支持OLE编程。
•PChar指向null结束的Char字符串的指针,类似于C的char*或lpstr类型。
•PAnsiChar指向null结束的AnsiChar字符串的指针。
•PWideChar指向null结束的WideChar字符串的指针。
字符类型
•AnsiChar,以 8 位表示(共有 256 个不同的符号)。
•WideChar,以 16 位表示(共有 64,000 个不同的符号)。
String类型
注意:以下是指Delphi2007以前的编译器(包括Delphi2007)。
1、缺省情况下,如果用如下的代码来定义字符串,编译器认为是AnsiString字符串: var
S:string;//编译器认为S的类型是AnsiString
2、编译开关$H
“$H编译开关”的值用来决定当变量声明为string时,它是被当作AnsiString类型还是被当作ShortString类型。当“$H”值为负时,string变量是ShortString类型;当“$H”值为正时(缺省情况),string变量是AnsiString类型。下面的代码演示了这种情况: var
{$H-}
S1:string;//S1是ShortString类型 {$H+}
S2:string;//S2是AnsiString类型
使用$H规则的一个例外是,如果在定义时特地指定了长度(最大在255个字符内),那么总是ShortString。var
S:string[63];//63个字符的ShortString字符串
Char类型
1、Delphi2007以前的编译器(包括Delphi2007)缺省情况下认为Char是AnsiChar类型,PChar是PAnsiChar类型。
2、Delphi2009的编译器缺省情况下认为Char是WideChar类型,PChar是PWideChar类型。请注意,没有任何方法可变更这个新的编译器预设设定。对于字符串类型而言,会以固定的硬式编码方式将 Char 类型对应到特定的数据类型。
AnsiString类型
1、AnsiString是生存期自管理类型。
2、AnsiString字符串总是以null字符结束的,这使得AnsiString字符串能与Win32API中的字符串兼容。
3、AnsiString类型是一个指向在堆栈中的字符串结构的指针。可以使用Sizeof去读取AnsiString类型的大小,不论字符串的实际长度是多少,Sizeof(AString)永远是4。
4、AnsiString字符串在内存中分配的情况 注意:
在Delphi2.0以后版本中,不能再通过字符串的第0个元素来设置或得到字符串的长度,只能通过Length()函数来得到字符串的长度,通过SetLength()过程来设置字符串的长度。Borland并不保证String的内存结构在以后的Delphi版本中会保持不变。
(1)、Delphi5内存结构如下:
(2)、Delphi7内存结构如下:
AnsiString指向一块内存起始偏移8字节处,前面8字节依次为引用计数和长度计数两个整数。(3)、Delphi2009内存结构如下:-12-10-8-4
最后一位
字码页
字符大小
引用计数
字串长度
字串内容
0
除了字串长度及引用计数外,新的AnsiString格式包括字符大小及字码页。字符大小可用来区分 AnsiString 及UnicodeString,而字码页特别适用于 AnsiString 类型(可用于 Delphi 2009),UnicodeString 类型的字码页则固定为 1200,字码包括UTF-
8、GBK等,例如“$03A8就是936,查MSDN 936sizeof(StrRec));
showmessage(Format('分配大小:%d 引用计数:%d 字串长度:%d', [P.allocSiz,P.refCnt,P.length]));end;
示例:delphi7字符串内存结构
代码:
procedure TForm1.Button1Click(Sender: TObject);type
PStrRec = ^StrRec;
StrRec = packed record
refCnt: Longint;
length: Longint;
end;var
str: string;
P: PStrRec;
begin
str:='123';
P := Pointer(Integer(str)sizeof(StrRec));
showmessage(Format('字码页:%d 字符大小:%d 引用计数:%d [P.codePage,P.elemSize,P.refCnt,P.length]));end;
示例:widestring的长度
代码:
字串长度:%d', procedure TForm1.Button1Click(Sender: TObject);
//---
function _WStrLen1(const S: WideString): Integer;
begin
if Pointer(S)= nil then
Result := 0
else
Result := PInteger(Integer(S)-4)^ div sizeof(WideChar);
end;var
str: widestring;
begin
str := '测试123';
showmessage(Format('字串长度:%d', [_WStrLen1(str)]));end;
本文来自CSDN博客,转载请标http://blog.csdn.net/starsky2006/archive/2010/07/31/5778729.aspx
出处明:
第五篇:解析各种SQL连接字符串
解析各种SQL连接字符串
数据库对软件有着重要的作用 我想每个程序员无论是在工作还是学习当中都会跟数据库频
繁的打交道吧 所以一个好的程序员对数据库的操作要足够的熟练 想要跟数据库同心就必
须先跟它建立连接
这就好像你想用QQ跟一个人聊天 首先得确认一下对方有没有在线 有没有时间 对方在线
也有时间 我们才能和他交流 数据库也是如此 我们写的连接字符串就是用来找到我们想要
进行通信的那个数据库 然后确定它可以跟我们进行交互 然后才有我们对数据库一系列的操作 下面一起看看.NET中常用的连接字符串:
?4 1.data source=服务器名;database=数据库名;uid=数据库登录名;pwd=登录密码 2.server=服务器IP;Initial Catalog=数据库名;uid=数据库登录名;pwd=登录密码 3.data source=(local);initial catalog=数据库名;Integrated Security=True 4.data source=localhost;initial catalog=数据库名;Integrated Security=SSPI
.........其实连接字符串有好多种 上面的这几个是我感觉比较常用的方式 其实以上几个字符串互
相对应的字符作用都是一样的 只是名字换了一下 什么意思呢 就是说“data source”和
“server”“database”和“initial catalog” 这些对应的字符是等价的 如果把第一个连接
字符串里的“database”换成“initial catalog”效果是一样的integrated securify=true的意思就是以当前的windows身份登录 此时不需要数据库的账
号跟密码 就算你写上uid=啥:pwd=啥 也不起什么作用 但是当值为false的时候账号密码
就起作用了 integrated security后面的值可以是true yes false no 还可以是sspi(与
true是一个效果)还有一个跟integrated securify等价的字符——trusted_connection
同样它的值也可以是true/flase/yes/no/sspi 就不过多的说了 这种用windows身份登录的方式看起来不错 但是安全性似乎不太好 而且容易出错 所以还是推荐用账号密码的方式
登录数据库
还有值得注意的就是data source 后面的参数 它可以是数据库所在计算机的机器名 IP地
址 如果是本地数据库还可以是(local)或localhost 所以如果数据库是在本地那么写哪个
都可以了(不过还是不推荐使用使用local的写法 因为一般我们开发软件数据库至少要被
一个局域网访问)而如果需要远程访问数据库那就只能用机器名或IP的方式了