C语言程序写版式Word文件下载.docx
《C语言程序写版式Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序写版式Word文件下载.docx(42页珍藏版)》请在冰豆网上搜索。
if(width<
height)
dosomething();
}
for(initialization;
condition;
update)
//空行
other();
风格不良的代码行示例:
intwidth,height,depth;
//宽度高度深度
X=a+b;
y=c+d;
z=e+f;
height)dosomething();
【建议】尽可能在定义变量的同时初始化该变量(就近原则)
如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。
如果引用了未被初始化的变量,可能会导致程序错误。
本建议可以减少隐患。
例如:
intwidth=10;
//定义并初绐化width
intheight=10;
//定义并初绐化height
intdepth=10;
//定义并初绐化depth
3.代码行内的空格
【规则3-1】关键字之后要留空格。
象const、virtual、inline、case等关键字之后至少要留一个空格,否则无法辨析关键字。
象if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。
【规则3-2】函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。
【规则3-3】‘(’向后紧跟,‘)’、‘,’、‘;
’向前紧跟,紧跟处不留空格。
【规则3-4】‘,’之后要留空格,如Function(x,y,z)。
如果‘;
’不是一行的结束符号,其后要留空格,如for(i=1;
i<
10;
i++)。
【规则3-5】赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=”“>
=”、“<
=”、“+”、“*”、“%”、“&
&
”、“||”、“<
<
”,“^”等二元操作符的前后应当加空格。
【规则3-6】一元操作符如“!
”、“~”、“++”、“--”、“&
”(地址运算符)等前后不加空格。
【规则3-7】象“[]”、“.”、“->
”这类操作符前后不加空格。
【建议】对于表达式比较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格,如:
for(i=0;
i<
i++)和if((a<
=b)&
(c<
=d))
代码行内的空格示例:
voidFunc1(intx,inty,intz);
//良好的风格
voidFunc1(intx,inty,intz);
//不良的风格
if(year>
=2000)//良好的风格
if(year>
=2000)//不良的风格
if((a>
=d))//良好的风格
if(a>
=b&
c<
=d)//不良的风格
for(i=0;
i++)//良好的风格
for(i=0;
i++)//不良的风格
for(i=0;
i<
10;
i++)//过多的空格
x=a<
b?
a:
b;
x=a<
b?
a:
b;
//不好的风格
int*x=&
y;
int*x=&
y;
array[5]=0;
//不要写成array[5]=0;
a.Function();
//不要写成a.Function();
b->
Function();
//不要写成b->
Function();
4.对齐
【规则4-1】程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。
【规则4-2】{}之内的代码块在‘{’右边数格处左对齐。
风格良好的对齐示例:
voidFunction(intx)
…//programcode
if(condition)
else
While(condition)
如果出现嵌套的{},则使用缩进对齐,如:
…
风格不良的对齐示例:
voidFunction(intx)
{…//programcode}
if(condition){…//programcode}
else{…//programcode}
update)
while(condition){…//programcode}
5.长行拆分
【规则5-1】代码行最大长度宜控制在70至80个字符以内。
代码行不要过长,否则眼睛看不过来,也不便于打印。
【规则5-2】长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。
拆分出的新行要进行适当的缩进,使排版整齐,语句可读。
if((very_longer_variable1>
=very_longer_variable12)
(very_longer_variable3<
=very_longer_variable14)
(very_longer_variable5<
=very_longer_variable16))
for(very_longer_initialization;
very_longer_condition;
very_longer_update)
在C语言中,是如何取得这个随机数的?
一个语句:
rand();
它的作用就是随机取0到RAND_MAX之间的任何数。
ANSI标准指出,RAND_MAX值的范围至少是32767,也就是双字节整数的最大值。
下面我们用一个例子来取得从1到6的随机整数:
#include<
stdio.h>
stdlib.h>
main()
{
inti;
for(i=1;
=20;
i++)
printf("
%10d"
1+(rand()%6));
第2行的stdlib.h是rand()函数的头文件,第7行就是实现功能的语句了。
前面我们以经说过函数取的值是介于0到RANDMAX之间的,而我们所要的是1到6之间的整数。
想一想就知道:
任一整数除以6所得的余数是0~5之间的整数,再加一之后就是1到6了,也就是我们的目标。
利用这个原理我们使用%号对随机数进行了缩放。
OK,运行两次程序:
一:
66556511536624262341
二:
66556511536624262341
发现:
两次运行的结果完全一样。
结论:
这算什么随机数。
具有讽刺意味的是,这种重复性是rand的一个重要特点,在调试程序时,这种重复性是必不可少的,因为它可以证明对程序的修改能够正常运行。
实际上,rand函数产生的是伪随机数。
但我们需要的是随机数。
于是,需要对程序进行随机化,这就需要使用标准库函数srand来实现了。
这二个函数的具体工作过程如下:
1)首先给srand()提供一个种子,它是一个unsignedint类型,其取值范围从0~65535;
2)然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
3)根据需要多次调用rand(),从而不间断地得到新的随机数;
4)无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
以下是一个产生随机数的例子
unsigndeseed;
Enteraseed:
"
);
scanf("
%u"
&
seed);
srand(seed);
for(i=1;
程序的运行结果是当我们输入不同的SEED时,产生不同组的随机数。
这句话的意思有两个:
当输入相同的SEED时,产生的同组随机数;
每次运行我们都要输入一个SEED。
如果我们希望不用每次输入SEED值,而且每次运行时SEED值都是不同的,我们可以用下面语句代替上面的第三块的三个语句:
srand(time(NULL));
这会使计算机自动读取自己的时钟以获得SEED值。
于是我们就获值了每次运行都会改变的SEED,同样也就获得了真正的随机数。
下面是两个使用随机数的例子。
例1:
输出10个在[60-100]之间随机的整数。
利用公式rand()%(b-a)+a,就会产生在[a,b]之间的一个随机数
time.h>
{intmagic,i;
{magic=rand()%40+60;
magic);
\n"
例2:
输出5个在[4-30]之间随机的整数。
{magic=rand()%(30-4)+4;
例3:
猜数游戏(范围:
10-100)
#include<
{intmagic,num;
intcount;
magic=rand()%(100-10)+10;
count=0;
while
(1)
printf("
pleaseguessthenum:
scanf("
%d"
num);
count++;
if(num>
magic)printf("
big"
elseif(num<
small"
else{printf("
right"
count=%d"
count);
break;
3顺序题
方法不是唯一的,仅供参考。
题目4:
#include"
stdio.h"
{floatf,c;
inputf:
"
%f"
f);
c=5*(f-32)/9;
c=%6.2f\n"
c);
题目5:
{charc1,c2,b,d;
pleaseinputasmallletter:
%c"
c1);
c2=c1-32;
b=c2-1;
d=c2+1;
thebigletteris%c\n"
c2);
beforeis%c,lateris%c\n"
b,d);
题目6:
{intx,y,h,f;
%d%d"
h,&
x=2*h-f/2;
y=f/2-h;
x=%d,y=%d\n"
x,y);
题目7:
{floatx,y,h,s;
%f%f%f"
x,&
y,&
h);
s=(x+y)*h/2;
s=%f\n"
s);
题目8:
{charx,y;
pleaseinputtwoletter:
%c,%c"
y);
theloweris%c,%c\n"
x+32,y+32);
theasciiis%d,%d\n"
题目9:
math.h"
{floatx,y,z;
%f%f"
z=sqrt(y)+pow(x,5)/2;
z=%f\n"
z);
选择题
。
题目1:
{inta,b,c,max;
inputthreeinteger:
%d%d%d"
a,&
b,&
c);
if(a<
b)
if(b<
c)
max=c;
else
max=b;
else
if(a<
max=a;
max=%d"
max);
题目2:
{intx,y;
inputx:
x);
if(x<
1)
{y=x;
x=%d,y=x=%d"
elseif(x<
10)
{y=2*x-1;
x=%d,y=2x-1=%d"
{y=3*x-11;
x=%d,y=3x-11=%d"
题目3:
floatscore;
chargrade;
pleaseinputascore:
score);
switch((int)(score/10))
case10:
case9:
grade='
A'
;
break;
case8:
B'
case7:
C'
case6:
D'
case5:
case4:
case3:
case2:
case1:
case0:
grade='
E'
score:
%5.1f,grade:
%c\n"
score,grade);
题目5:
{inta,b,x,y;
inputa,b:
b);
x=a*a+b*b;
if(x>
100)
{y=x/100;
y);
a+b);
题目6:
{charch;
pleaseinputachar:
ch=getchar();
if(ch<
32)
\nThecharisacontrolchar.\n"
elseif(ch>
='
ch<
Z'
)
\nThecharisacaptalchar.\n"
elseif(ch>
a'
z'
\nThecharisalowerchar.\n"
1'
9'
\nThecharisadigitchar.\n"
\nThecharisanotherchar.\n"
operator
break
default
说明:
g格式符:
以f格式或e格式输出实数,且不输出无意义的零。
选择f格式或e格式的原则是:
那种格式输出时所占宽度较小,即使用其为g格式符的输出形式。
题目9:
#include"
{inta,b,c,t,min;
%d,%d,%d"
t=(abs(a)<
abs(b))?
min=(abs(t)<
abs(c))?
t:
c;
min);
题目10:
{intm,n,x;
m,&
n,&
if((x%n==0&
x%m==0)&
(n%x==0&
m%x==0))
既是公约数,又是公倍数\n"
elseif(x%n==0&
x%m==0)
公倍数\n"
elseif(n%x==0&
m%x==0)
公约数\n"
既不是公约数,又不是公倍数\n"
题目11:
{inta,b;
%d,%d"
if(sqrt(a*a+b*b)<
15)
in"
elseif(sqrt(a*a+b*b)==15)
on"
out"
题目12:
intm;
ch=getchar();
switch(ch)
{case'
:
m);
(1):
10to16---%x"
m);
case'
2'
:
(2):
10to8---%o"
3'
%o"
(3):
8to10---%d"
m);
4'
quit"
循环试题
实验题
sn=sn+tn
tn=tn+a
(1)
{inti,j,k,m;
for(i=100;
=999;
{
j=i/100;
k=i/10-j*10;
m=i%10;
if(i==j*j*j+k*k*k+m*m*m)
%5d"
i);
(2)
{inti,j,k,n,m;
=9;
for(j=0;
j<
j++)
for(k=0;
k<
k++)
{m=i*100+j*10+k;
n=i*i*i+j*j*j+k*k*k;
if(m=