精华内容
下载资源
问答
  • C语言现代方法源码

    2012-05-01 20:53:28
    C语言现代方法源码,方便大学学习和提高编程水平,为官方网站下载
  • 此文记录关于C语言现代方法阅读时整理的之前学习C语言可能会忽略的细节 1.解决/**/形式的注释的嵌套问题 比如 /* /*** wrong ***/ */ 这种注释嵌套不合法 可以使用 #if 0 /**** test ****/ #endif ...

    此文记录关于C语言现代方法阅读时整理的之前学习C语言可能会忽略的细节


    1.解决/**/形式的注释的嵌套问题

    比如

    /*

        /*** wrong ***/

    */

    这种注释嵌套不合法

    可以使用

    #if 0

    /****  test ****/

    #endif

    包含想要注释的部分

     

    2.C语言标识符长度问题

    C89只要求编译器记住标识符的前31个字符,

    C99只要求编译器记住标识符的前63个字符

    ———所以如无必要,不要给自己的变量起太长的名字

    另外,对于类型中带有外部链接extern的标识符,

    C89仅仅识别前6位,并且不区分大小写(历史原因——早期的链接器就是那样)

    C99可识别前31位,区分大小写

    注意:以上仅仅是C语言标准,具体能认多少字符还是看编译器实现,

    编译器能做到的是“至少”满足C标准。

     

    3.scanf匹配规则

    空白字符:包括空格符,换行符,水平和垂直制表符,换页符

    规则:

    (1) 在格式串中发现"%d" "%f"之类的转换规范时,在输入流中开始匹配时忽略空白字符

    (2) 系统先读格式串,如果遇到了空白字符(一个或多个),就会把它和输入流中的空白字符(零个或多个)进行匹配,也就是说scanf会先排除掉格式串和输入流中空白字符的干扰;

    (3) 在遇到非空白的普通字符的时候,立即从输入流中读取下一个位置的数据进行匹配,未匹配上就异常退出。

    举例:

    格式串"%d/%d"可以以匹配输入"  5/    5",但是不能匹配输入"5         /5"

    上面的例子中"/" 就是普通字符,

    所以只有"%d  /%d" 才能匹配"5         /5"

     

    4.C99对于负数的/ %操作规定

    操作结果向0截取

    例如-7/5 = -1  ,  -7%5 = -2

    也就是说把负数当成正数对待,仅仅在考虑符号时决定是否在结果前加上"-"

     

    5.左值的含义

    左值表示存储在计算机内存(或寄存器--register变量)中的对象,而不是常量或计算的结果。

     

    6.子表达式的求值顺序

    除了带有逻辑运算符(&&    ||),条件运算符(<  <= > >= 等),逗号运算符(,)的表达式之外,

    表达式中的子表达式之间并没有明确的求值顺序,

    所以注意不确定的顺序可能会引起的问题,

    比如c = (b = a+2) - (a = 1) 或者j = i * i++这样的可能会导致未定义行为,部分编译器会直接报错。

     

    7.取余相关(对于第4条的补充)

    (1) 浮点数取余函数: fmod

    (2) 取余规则一定会保证

    (a/b)*b + a%b =a

     

    8.++ 和 -- 可以用于浮点数

     

    9."短路"计算(参照第6条)

    if ( (a < 3) && (b < 4) )

    上述的表达式会先计算(a < 3) 后计算 (b < 4),

    有明确的先后顺序,

    如果左边的结果可以确定计算结果,那就无需计算右边

     

    10.多级if中的else

    多个if级联时,最后一个else属于最后一个"if",

    即出现

    if  ... //1号if

    else if ... //2号if

    else

    时,

    最后一个else属于2号if

     

    11.C99中的bool类型

    C99中添加的类型_Bool(实质是无符号整形),

    可以通过包含 stdbool.h使用

    给类型的变量赋值的时候,

    任何非零值会被赋值1

     

    12.switch使用

    case 可以识别单独的整形变量和字符变量,

    不能识别浮点和字符串

     

    13.C99中for循环中可以声明语句

    for (int i = 0; i< n; i++)

    ...

    备注:for语句中声明的变量在for之外不可用

     

    14.break

    C语言中的break只能跳出一重循环,要跳出多重循环可以使用goto

     

    15.for中的第三条语句比continue更接近一次循环的“底部”

    比如

    for(;i<3;i++)

        continue;

    相当于

    while(i<3) {

        continue;

        i++;

    }

     

    16.空语句的作用

    空语句除了用在循环体中说明为空之外还可以与标号配合,专供goto跳跃

    例如:

    {

    ...

    goto end_of_stmt;

    ...

    end_of_stmt: ;

    原因是标号不能独立存在,它后面必须有语句,所以可以放置一个空语句。

     

    17.整数常亮默认类型

    对于常量后面没有U,L来表明常亮类型的,

    编译器默认赋予的类型优先级为:

    有符号>无符号>更长类型

     

    18.整数溢出

    有符号数运算结果溢出,结果是未定义的,有危险

    无符号数运算结果溢出时直接取模

    比如无符号16位数65535+1结果为0

     

    19.C99中sizeof无法确定变长数组大小

     

    20.定义在函数体内的typedef无法在函数体外被识别

    展开全文
  • C语言程序设计:现代方法(第2版)是C语言的经典之作,被誉为“近10年来的一部C语言著作”。
  •   为什么我的if(flag==4)break;放在下面这个位置不行? <code>#include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <time.h>...</p>
  • 编程题 2 #include<stdio.h> int main(void) { int r = 10, v; v = 4.0f / 3.0f * 3.14*r*r*r; printf("%d\n", v); system("pause"); return 0; } 3 #include<stdio.h>... int r...

    编程题

    • 2
    #include<stdio.h>
    int main(void) {
    	int r = 10, v;
    	v = 4.0f / 3.0f * 3.14*r*r*r;
    	printf("%d\n", v);
    	system("pause");
    	return 0;
    }
    

    在这里插入图片描述

    • 3
    #include<stdio.h>
    int main(void) {
    	int r, v;
    	printf("请输入半径(整数):");
    	scanf("%d", &r);
    	v = 4.0f / 3.0f * 3.14*r*r*r;
    	printf("体积为:%d\n", v);
    	system("pause");
    	return 0;
    }
    

    在这里插入图片描述

    • 4
    #include<stdio.h>
    int main(void) {
    	float x, y;
    	printf("Enter an amount:");
    	scanf("%f", &x);
    	y = x * 1.05;
    	printf("With tax added: $%.2f", y);
    	printf("\n");
    	system("pause");
    	return 0;
    }
    

    在这里插入图片描述

    • 7
    #include<stdio.h>
    int main(void) {
    	int m; int a, b, c;
    	printf("Enter a dollar amount:");
    	scanf("%d",&m);
    	a = m / 20;
    	m %= 20;
    	b = m / 10;
    	m %= 10;
    	c = m / 5;
    	m %= 5;
    	printf("$20 bills:%d\n", a);
    	printf("$10 bills:%d\n", b);
    	printf(" $5 bills:%d\n", c);
    	printf(" $1 bills:%d\n", m);
    	printf("\n");
    	system("pause");
    	return 0;
    }
    

    在这里插入图片描述

    • 8
    #include<stdio.h>
    int main(void) {
    	float x, y, z, t;
    	printf("Enter amount of loan:");
    	scanf("%f",&x);
    	printf("Enter interest rate:");
    	scanf("%f", &y);
    	y = y / 12 / 100;
    	printf("Enter monthly payment:");
    	scanf("%f", &z);
    	t = x * y + (x - z);
    	printf("Balance remaining after first payment:%.2f\n",t);
    	t = t * y +  (t - z);
    	printf("Balance remaining after first payment:%.2f\n",t);
    	t = t * y +  (t - z);
    	printf("Balance remaining after first payment:%.2f\n",t);
    	printf("\n");
    	system("pause");
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • C语言现代方法 书籍笔记

    千次阅读 2012-10-31 16:28:57
    1.代码可以这样写,第一次看到,但确实是正确的! int value="abc"[2]; 2.C 语言允许初始化式(不包括空字符)与变量有完全相同的长度:  ...char date 3[7] = " June 14";...编译器把初始化式中的字符简单地复制到...

    1.代码可以这样写,第一次看到,但确实是正确的!

    int value="abc"[2];


    2.C 语言允许初始化式(不包括空字符)与变量有完全相同的长度: 
    char  date 3[7] = " June  14"; 
    编译器把初始化式中的字符简单地复制到date 3 中: 
     没有空间给空字符,所以编译器也不会试图存储一个空字符。

    3.↓问:字符串字面量可以有多长? 
    ↑答:按照C 语言的标准,编译器必须最少支持 509 个字符长的字符串字面量。(没错,就是 509 。不要怀
    疑。)许多编译器会允许更长的字符串字面量。


    ↓问:结构可否同时有标记名和类型名?(p .233 ) 
    ↑答:可以。事实上,虽然不要求,但是标记名和类型名甚至可以是一样的: 
    typedef  struct part  { 
       int number ; 
       char  name [ NAME _ LEN +1 ] ; 
       int on_ hand ; 
    }  part  ; 

    展开全文
  • #include char *censor(char a[],char b[]) { int j=0; while(a[j]) { if(a[j]==b[0] && a[j+1]==b[1] && a[j+2]==b[2]) { a[j]='x'; a[j+1]='x';
    #include<stdio.h>
    char  *censor(char a[],char b[])
    {
        int j=0;
        while(a[j])
        {
            if(a[j]==b[0] && a[j+1]==b[1] && a[j+2]==b[2])
            {
                a[j]='x';
                a[j+1]='x';
                a[j+2]='x';
                j=j+3;
            }
            else
            j=j+1;
    
        }
        return a;
    }
    int main()
    {
        char a[20]={'\0'},ch;
        int i=0;
        while((ch=getchar())!='\n')
        {
            a[i++]=ch;
            if(i>=20)
            break;
        }
        a[i]='\0';
        censor(a,"foo");
        printf ("%s",a);
        getch();
    
    }

    转自:http://blog.csdn.net/wuweiweinanjing/article/details/6978570
    展开全文
  • C语言现代方法》第一章编程题

    千次阅读 2013-01-31 19:57:37
    4.编写程序,输入一个美元数量,然后显示出增加5%税率后的相关金额。 #include #include #include using namespace std; int main() { double a,b; printf("Enter an amount: ");... printf("\nWit
  • //转换day,使得它成为char *,sprintf的功能是把格式化字符串打印到字符串中, //sprintf第一个就是要打印的目的字符串(打印到哪),其余的和以前的printf一样 //错误2:day应该以2位的方法输出,应该改成sprintf(day_...
  • C语言设计现代方法

    2018-07-26 11:19:18
    C语言设计现代方法 第二版 清晰电子书 适用于初学者,欢迎下载
  • C语言程序设计现代方法_第二版_吕秀峰等译_pdf.扫描版,还可以.
  • C语言程序设计现代方法第2版,PDF版本,非常简单易懂的学习C语言的书籍,被众多老师推荐,初学者可以提供此书,更好入门理解。
  • 最好的C语言入门,C语言设计:现代方法C语言程序设计:现代方法
  • c语言程序设计_现代方法c语言程序设计_现代方法c语言程序设计_现代方法c语言程序设计_现代方法
  • C语言现代编程 ,高清电子书pdf,C语言入门最佳书籍,C语言
  • 第二章c语言基本概念 2.1编写一个简单的c程序 2.1,2编译与链接 首先生成pun.c文件(注意扩展名为 .c) 接下来: 预处理,交给预处理器 preprocessor 执行以#开头的命令,通常称为指令directive ,这里会对程序...
  • C语言程序设计现代方法P198
  • C语言程序设计 现代方法 第2版
  • C语言程序设计现代方法附录 C语言程序设计现代方法源码
  • 本书最主要的一个目的就是通过一种“现代方法”来介绍 C语言,书中强调标准 C,强调软件工程,不再强调“手工优化”。这一版中紧密结合了 C99标准,并与 C89标准进行对照,补充了 C99中的最新特性。本书分为 C语言的...
  • C语言程序设计:现代方法中文C语言程序设计:现代方法中文C语言程序设计:现代方法中文
  • 鸟哥linux私房菜 C 现代方法课后题答案

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,237
精华内容 494
关键字:

c语言现代方法

c语言 订阅