博文

[021] 四个数排序(2006-02-18 15:18:00)

摘要:输入4个整数,要求按由大到小的顺序输出。 当然是个很简单的题目了,使我想起了大一学Pascal讲到这一问题时,刚开始也是用的交换法做,记得当时还想了个实例,就是交换法时要用到一个临时空间的问题,就像要交换两个杯子中的水一样,需要一个空杯子,临时存放杯子1中的水,将杯子2水倒入杯子1,再将临时杯中的水倒入杯子2完成交换,所以喜欢用cup做这个变量。再回顾回顾…… #include <stdlib.h>
#include <stdio.h>
int main()
{
    int a, b, c, d, cup;
    printf("Input 4 numbers:\n");
    scanf("%d %d %d %d", &a, &b, &c, &d);
    if (a<b)
        {cup = a; a = b; b = cup;}
    if (a<c)
        {cup = a; a = c; c = cup;}
    if (a<d)
        {cup = a; a = d; d = cup;}
    if (b<c)
        {cup = b; b = c; c = cup;}
    if (b<d)
        {cup = b; b = d; d = cup;}
    if (c<d)
......

阅读全文(4346) | 评论:2

[020] C语言中非0即为真(2006-02-18 13:53:00)

摘要:C语言中,常量、变量、表达式的值为非0时,系统均按"真值"处理。 if ('a') printf ("OK");                      //条件为真,打印OK, 'a' 的ASCII码不为0
x = 5; if (x) printf ("OK");              //条件为真,打印OK
y = 0; if (y==0) printf ("OK");      //条件为真,打印OK, 表达式 y==0 的值为真
           if (y) printf ("OK");            //条件为假,不打印,    变量y的值为0 ,即假......

阅读全文(8743) | 评论:1

[019] 判断闰年(2006-02-18 13:35:00)

摘要:判断年year是否是闰年?
闰年:能被4整除,但不能被100整除, 或能被400整除

year % 4 == 0 && year % 100 != 0 || year % 400 == 0 -----------------小知识-------------------
闰年(leap year)的来历:

关于公历闰年是这样规定的:地球绕太阳公转一周叫做一回归年,一回归年长365日5时48分46秒。因此,公历规定有平年和闰年,平年一年有365日,比回归年短0.2422日,四年共短0.9688日,故每四年增加一日,这一年有366日,就是闰年。但四年增加一日比四个回归年又多0.0312日,400年后将多3.12日,故在400年中少设3个闰年,也就是在400年中只设97个闰年,这样公历年的平均长度与回归年就相近似了。由此规定:年份是整百数的必须是400的倍数才是闰年,例如1900年、2100年就不是闰年。

闰年:格里高利历法中有366天的一年,多出的一天,用2月29日,即闰日来补偿普通年与天文年之间四分之一天的差别

 ......

阅读全文(4976) | 评论:2

[018] C语言中%i是什么东东(2006-02-17 15:05:00)

摘要:Google 论坛中有人贴了这么个东西 #include <stdio.h>
int main (void)
{
    int number;
    printf ("Enter number: ");
    scanf ("%i", &number);
    printf ("%05i", number);
    return 0;
} 在scanf , printf 的格式字符中没有 i 啊,它这里的i是干啥的呢?

研究中……
######################################后续########################################

正如评论中所述,%i 与 %d 功能相同。 ......

阅读全文(4984) | 评论:2

[017] scanf格式控制符的完整格式(2006-02-17 15:36:00)

摘要:scanf格式控制的完整格式:
%  *  m  l或h  格式字符
①格式字符与printf函数中的使用方式相同,以%d、%o、%x、%c、%s、%f、%e,无%u格式、%g格式。
②可以指定输入数据所占列宽,系统自动按它截取所需数据。如:
scanf(“%3d%3d”,&a,&b);
输入:123456
系统自动将123赋给a,456赋给b。
③%后的“*”附加说明符,用来表示跳过它相应的数据。例如:
scanf(“%2d%*3d%2d”,&a,&b);
如果输入如下信息:1234567。将12赋给a,67赋给b。第二个数据”345”被跳过不赋给任何变量。
④输入数据时不能规定精度,例如:
scanf(“%7.2f”,&a);
是不合法的,不能企图输入:12345.67而使a的值为12345.67。

------------------相关-------------------
输入数据流分隔
①根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,就认为这一项结束。如:
scanf(“%d%c%f”,&a,&b,&c);
如果输入如下信息:
1234r1234.567
则scanf函数在接收数据时发现”r”类型不匹配,于是把”1234”转换成整型赋值给a,把”r”赋给变量b,最后把”1234.567”转换成实型数据赋给c。
②根据格式项中指定的域宽分隔出数据项。如语句:scanf(“%2d%3f%4f”,&a,&b,&c);
如果输入如下信息:
123456789012345
   则scanf函数在接收数据时根据域宽把12赋值给a,345赋值给b,6789赋值给c。
③隐示分隔符。空格、跳格符(’\t’)、换行符(’\n’)都是C语言认定的数据分隔符。
④显示分隔符。在scanf函数的两个格式说明项间有一个或多个普通字符,那么在输入数据时,在两个数据之间也必须以这一个或多个字符分隔。如语句:
scanf(“a=%d,b=%f,c......

阅读全文(13740) | 评论:5

[016] printf格式控制符的完整格式(2006-02-17 14:09:00)

摘要:printf的格式控制的完整格式:
%  -  0  m.n  l或h  格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

---------------------------------------
格式字符
格式字符用以指定输出项的数据类型和输出格式。
 ①d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。
②o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用“%mo”格式输出。
例:
   main()
   { int a = -1;
     printf("%d, %o", a, a);
   }
  运行结果:-1,177777
  程序解析:-1在内存单元中(以补码形式存放)为(1111111111111111)2,转换为八进制数为(177777)8。
③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。
④u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。
⑤c格式:输出一个字符。
⑥s格式:用来输出一个串。有几中用法
%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双......

阅读全文(85358) | 评论:12

[015] 字符输入函数getchar(2006-02-16 12:32:00)

摘要:格式:getchar()
作用:从字符缓冲区读入一个字符 ★ 用getchar()得到的字符可以赋绐字符型变量、整型变量,或作为表达式的一部分。
如:c=getchar()+32;
        puchar(c);
若输入:A
则输出:a

一条有点意思的语句:putchar(getchar()); 将输入的字符输出。先学习着,Maybe以后能用上……......

阅读全文(2603) | 评论:0

[014] 字符输出函数putchar(2006-02-15 21:34:00)

摘要:形式: putchar(c)
作用: 向显示器输出一个字符.

★ c 可以是字符型和整型的常量、变量、表达式。为整型时,代表字符的ASCII码,即输出与该数作为ASCII码时所对应该的字符。如:putchar(97) 输出为a (a的ASCII码为97)。 ★ putchar 输出后不换行。......

阅读全文(2495) | 评论:0

[013] 逗号表达式的值(2006-02-15 20:54:00)

摘要:逗号表达式的形式:
表达式1,表达式2,表达式3……表达式i 计算过程:  先计算表达式1的值,再计算表达式2值,……,表达式i
                   
★ 整个逗号表达式的值是表达式 i 的值。 一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式。
如:(a=3*5,a*4),a+5 结果为a 值为15,逗号表达式的值为20 。

★ 逗号运算符是所有运算符中优先级最低的。因此下面两个表达式的作用是不同的:

  ① x=(a=3,6*3)
  ② x=a=3,6*a

    第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。
    第②个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。

    其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中.

    并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。
......

阅读全文(4391) | 评论:0

[012] a+=a-=a*a(2006-02-15 20:33:00)

摘要:    a+=a-=a*a 不等价于 a=a+(a-(a*a))     原因: 原式运行过程为先计算a-=a*a, 即a=a-(a*a), 再计算a+=a,即a=a+a。而此时等号后的a的值已改变(because a-=a*a), 而若按 a=a+(a-(a*a))  计算, a 的值均为初值。因此不等价。
    此类问题关键在于这种表达式是边赋值边运算。     试想应用中是否会真正用到这种有点复杂而又好像很无聊的表示方法呢?
    学习一下知识罢了……......

阅读全文(4653) | 评论:5