博文

[028] break与continue(2006-02-23 14:35:00)

摘要:break:在循环语句中,break语句的作用是在循环体中测试到应立即结束循环条件时,控制程序立即跳出循环结构,转而执行循环语句后的语句。continue:只能用于循环结构中,作用是结束本次循环。一旦执行了continue语句,程序就路跳循环体中位于该语句后的所有语句,提前结束本次循环周期并开始新一轮循环。 <1> 求1到100的和,如果和超过4000,则跳出循环,此时输出的和是多少? #include <stdio.h>int main(){    int i = 1, sum = 0;    for(i = 1; i < 101; i++)    {        sum += i;        if(sum > 4000)            break;       /* 结束for循环 */    }    printf("i=%d sum=%d\n", i, sum);    return 0;} 运行结果:======================i=98 sum=4005====================== <2> 求1到100内的偶数的和 #include <stdio.h>int main(){    int i = 1, even_sum = 0;        for(i = 1; i < 101; i++)    {        if(i % 2 != 0)&nb......

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

[027] 1到100之和~while^do-while区别(2006-02-23 13:41:00)

摘要:练练循环结构: 1到100之和 <1> for 语句 #include <stdio.h>int main(){    int i, sum;    sum = 0;    for (i = 1; i < 101; i++)        sum += i;    printf("sum=%d\n", sum);    return 0;    } <2> goto 语句 #include <stdio.h>int main(){    int i = 1, sum = 0;    table: sum += i;       /*有点像汇编^_^ */          i++;          if(i < 101)              goto table;          printf("sum=%d\n", sum);          return 0;} ★ goto 语句使程序的转移控制变得非常灵活,但是也造成了导致破坏程序良好结构的可能性,使用时要谨慎。另外,goto语句的使用机会已大大减少,只是需要从多层循环的内层循环跳到外层循环外时才用到goto语句。但是这种用法不符合结构化原则,一般不宜......

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

[026] 求两数最大公约,最小公倍数(2006-02-22 14:03:00)

摘要:P120 6.1 <谭> 输入两个正整数m和n, 求其最大公约数和最小公倍数. <1> 用辗转相除法求最大公约数算法描述:m对n求余为a, 若a不等于0则 m <- n, n <- a, 继续求余否则 n 为最大公约数<2> 最小公倍数 = 两个数的积 / 最大公约数#include <stdio.h>int main(){    int m, n;    int m_cup, n_cup, res;          /*被除数, 除数, 余数*/    printf("Enter two integer:\n");    scanf("%d %d", &m, &n);    if (m > 0 && n >0)    {        m_cup = m;        n_cup = n;        res = m_cup % n_cup;        while (res != 0)        {            m_cup = n_cup;            n_cup = res;          &nb......

阅读全文(11969) | 评论:28

[025] while((c=getchar())!='\n')(2006-02-21 21:59:00)

摘要:while ((c = getchar()) != '\n');  作用:从键盘输入字符,直到输入回车为止, 最后的分号为循环体,即一个空语句 等价于:c = getchar();while( c != '\n' )    c = getchar(); 当然也可用for语句实现,如:for( ; (c = getchar()) != '\n' ; )    printf("%c", c) ;其作用是每读入一个字符后立即输出该字符,直到输入一个“换行”为止。注意:从终端键盘向计算机输入时,是在按Enter键以后才送到内存缓冲区中去的。不是从终端敲入一个字符马上输出一个字符,而是按下Enter键后数据送入内存缓冲区,然后每次从缓冲区读一个字符,再输出该字符。#include <stdio.h>int main(){    char c;    for( ; (c = getchar()) != '\n' ; )        printf("%c", c) ;    return 0;}运行结果:====================afdasdfkjffl&%#$879e↙afdasdfkjffl&%#$879e==================== 用while语句实现如下:#include <stdio.h>int main(){    char c;    c = getchar();    while( c != '\n' )    {        printf("%c", c);        c = getchar();    }     return 0;}★......

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

[024] 简单计算器(2006-02-21 14:44:00)

摘要:目的: 练习switch语句题目: 设计一个简单的计算器, 完成两个数的加减乘除--------------------------------------#include <stdio.h>int main(){    float x, y, result;    char op;    scanf("%f%c%f", &x, &op, &y);    /* 输入不能有空格 */    switch (op)    {    case '+' : result = x + y; break;    case '-' : result = x - y; break;    case '*' : result = x * y; break;    case '/' :         if(y == 0.0) op = '#';  /*除数不为0*/        else result = x / y;         break;    default  : op = '#';           /*op不为+ - * / 时做个标记,以便最后结果的输出*/    }    if (op != '#')        printf("%.2f%c%.2f=%.2f\n", x, op, y, result);   ......

阅读全文(4410) | 评论:3

[023] 开关语句(2006-02-20 22:01:00)

摘要:形式:    switch(表达式)    {case 常量表达式1:语句1      case 常量表达式2:语句2      …      case 常量表达式n:语句n      default :语句n+1    }(1) switch后面括弧内的“表达式”, ANSI标准允许它为任何类型。(2) 当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。(3) 每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。(4) 各个case和default的出现次序不影响执行结果。(5) 执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行Switch语句时,根据Switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。例如,下面的例子:要求按照考试成绩的等级打印出百分制分数段------------------------------------#include <stdio.h>int main(){    char grade;    scanf("%c",&grade);    switch(grade)    {    case 'A' : printf("85~100\n");    case 'B' : printf("70~84\n");    case 'C' : printf("60~69\n");    case 'D' : printf("< 60\......

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

[022] 条件运算符(2006-02-19 14:18:00)

摘要:条件运算符要求有3个操作对象,称三目(元)运算符,它是c语言中唯一的一个三目运算符。条件表达式的一般形式为:  表达式1?表达式2∶表达式3(1) 条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。        max = (a>b) ? a : b执行结果就是将条件表达式的值赋给max。也就是将a和b二者中大者赋给max。(2) 条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max。条件运算符的优先级别比关系运算符和算术运算符都低。因此        max = (a > b) ? a : b括号可以不要,可写成        max = a > b ? a : b如果有        a > b ? a : b+1相当于a > b ? a : (b+1), 而不相当于(a>b ? a : b)+1。(3) 条件运算符的结合方向为“自右至左”。如果有以下条件表达式:a > b ? a : c > d ? c : d相当于a > b ? a : (c > d ? c : d)如果a=1,b=2,c=3,d=4,则条件表达式的值等于4。(4) 条件表达式还可以写成以下形式:  a>b? (a=100) : (b=100)或       a>b? printf("%d",a) : printf("%d",b);即“表达式2”和“表达式3”不仅可以是数值表达式,还可以是赋值表达式或函数表达式。上面第二个条件表达式相当于以下if-else语句:  if(a>b) printf("%d", a);  else printf("%d", b);(5) 条件表达式中,表......

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

[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)        {cup = c; c = d; d = cup;}&nb......

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

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

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

阅读全文(9182) | 评论: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日,即闰日来补偿普通年与天文年之间四分之一天的差别  ......

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