精华内容
下载资源
问答
  • Q:本门课程面向的授课群体是什么?...A:在授课过程中,我们会注重解释“为什么”,揭示知识点背后的原理和思想,适时引入错误程序的分析、测试与调试,将一些易被忽视且对高水平程序设计很重要的“点”逐一...

    Q:本门课程面向的授课群体是什么?没有任何基础能学习本课程吗?

    A:本门课程的基本内容是面向零基础的学生。进阶内容是面向有一定编程基础或者大学计算机基础的学生,但是进阶内容不做为课程考试内容。

    Q:本课程与其他课程在授课内容和讲授方法上有何不同?

    A:在授课过程中,我们会注重解释“为什么”,揭示知识点背后的原理和思想,适时引入错误程序的分析、测试与调试,将一些易被忽视且对高水平程序设计很重要的“点”逐一展现给你,沿着数据结构从简单到复杂的主线展开,将软件工程相关的思想和方法渗透其中,从紧密结合实际的问题出发,在一个实例的“不断深化和提升”中逐步引出相关知识点,通过对问题的举一反三和前后知识点的融会贯通,由浅入深地启发引导你循序渐进地编程,让你在不知不觉中逐步加深对程序设计方法的了解和掌握。期望通过这样的设计,你在学完以后,不只是简单地掌握了C语言的语法,还能够理解隐藏在语法背后的思想,并初步具备灵活使用这些思想进行编程的能力。

    Q:我想考二级,学完这个课程可以考吗?

    A:二级考试题考查语言的语法细节较多,所以能否通过二级考试,要看你的应试水平如何。本课侧重于讲解程序设计的方法以及错误程序的排错方法,更关注实战能力,因此应该说本课程对学生的要求是高于二级考试的要求的。

    Q:如何学好程序设计?

    A:“熟读唐诗三百首,不会吟诗也会诌”,编程也是如此。写出的漂亮程序不是听课听出来的,也不是看书看出来的,而是读别人的程序读出来的,更是自己动手练出来的。学习编程一定要多读多写多练啊,除此以外是没有捷径可走的。

    Q:上机编写C语言程序使用什么软件好?

    A:课程演示会使用Code::Blocks+gcc+gdb集成开发环境,但是你使用任何其他C语言开发工具也都可以。不过,我们推荐使用Code::Blocks,在教材网站(https://book.sunner.cn)上有软件下载的网址链接,《C语言程序设计学习指导(第2版)》上有关于如何使用这个软件的详细介绍,它是一个开源的跨平台的C/C++集成开发环境,它安装简单,比Visual C 6.0等其他集成开发环境更简单易学。

    Q:使用codeblocks在sources中新建一个file,也就是不在原来默认的main.c里面写代码,那么应该如何调试才能使运行的时候直接运行新建的里面的程序呢?

    A:给工程添加完新的文件后,移出旧的文件main.c再重新编译即可,移出文件的方法和添加的方法类似。

    Q:为什么安装好软件后创建新项目的时候软件总是说:could not ssave project maybe the file is write-protected 呢?

    A:codeblocks要求软件安装的目录最好不要带空格或汉字,不要按默认设置安装到program file目录下,卸载后再选择安装到根目录下试试。更多注意事项,参见高等教育出版社的《C语言程序设计学习指导(第2版)》

    Q:在高级语言,比如说C语言中,我们要赋一个很大很大的数(超过了所有数据类型的取值范围),那要怎么办呢?

    A:用数组或链表的方式来存储大数,并制定相应的运算规则。以数组为例,一个元素存储数据的一位,数据的位数就是数组元素的个数,链表存储就是一个节点代表一位。高等教育出版社出版的《C语言程序设计学习指导(第2版)》中给出了一个用数组实现的计算50位阶乘的例子。

    Q:计算机有16位和32位之分,在某些情况下的计算可能会发生数值溢出。数值溢出是因为计算的数值太大导致的,但是为什么我们的电脑里的自带计算器可以计算很大很大的数却不会发生问题呢?

    A:先说“计算机有16位和32位之分”的问题,计算机字长代表了计算机进行一次整数运算所能直接处理的二进制数据的位数。字长越长,计算机运算速度就越快,运算精度越高,内存容量越大,性能就越强(因支持的指令多)。32位计算机的运算速度高于16位计算机,是因为32位计算机一次可进行32位的运算,而16位计算机每次只能进行16位的运算,所以它必须将较大的数拆分成16位的量才能计算,这就造成了其速度变慢。

    高级语言中引入了数据类型的概念才会出现数值溢出,因为不同的数据类型所占内存的字节数及其取值范围是不同的并且是有限的,当向某种类型的变量赋以超出该类型取值范围的数值时,就会产生数值溢出。当程序从高位计算机向低位计算机移植(例如从64位系统移植到32位系统)时,很可能出现溢出问题。做无符号整数减法时,如果被减数小于减数,也会发生溢出。

    Q:c语言的头文件有何用处?不同的头文件有何区别?

    A:include 文件包含命令是把尖括号<>或引号""内指定的文件包含到本程序中来,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为.h,因此也称为头文件。C语言的头文件中包括了各个标准库函数的函数原型。在程序中调用一个库函数时,必须包含该函数原型所在的头文件。""是在编译器指定的目录(目录名通常为include)中查找这个头文件,而<>是先在源文件当前所在的目录中查找,找不到就在系统指定的目录中找.

    Q:怎样判断一个函数需不需要返回值?

    A:C语言中函数可以通过return返回一个值,是一个便利条件,因为它确实在很多情况下可以为我们提供便利,尽管有些函数看似无需返回值,但其实为什么还要将其设计成有返回值就是为了要利用这个便利条件。例如,scanf(),printf(),strcpy(),strcat()等其实都是有返回值的,而这个返回值还确实很有用。以scanf()为例,它返回的是正确读入的数据个数,如果出错则返回0值,这样我们就可以通过测试scanf()的返回值来判断用户是否正确读入了数据,而strcpy(str1,str2)返回的是str1指针,即拷贝后的字符串的地址,这样就可以将strcpy函数调用用在链式操作中了。

    Q:函数和指针的联系是什么?

    A:指针可以做函数参数的类型,也可以做函数返回值的类型,还可以让指针指向一个函数(即函数指针)。

    Q:定义指向函数的指针时,指针类型是与函数返回值一致呢,还是与函数参数的类型一致?

    A:函数指针的基类型是指它所指向的函数的返回值的类型,因此函数指针的基类型应与函数返回值的类型一致。

    展开全文
  • C语言程序设计精髓选修课答案 问关于党与民,正确的启示是) 答党来自人民 党扎根人民 党造福人民 为人民服务是党的根本宗旨 问中国戏曲研究院成立后周恩来总理的题词是) 答重视与改造 团结与教育 二者缺一不可 问面对...
  • 插入排序a[i] 的有序位置右移a[i](a)插在中间a[i] 的有序位置右移a[i](b)插在最前面a[i] 的有序位置a[i](c)插在最后面插入排序的基本原理学习目标和要求1.理解插入排序的基本原理2、知道插入排序算法的种类直接插入...

    插入排序

    a[i] 的有序位置

    右移

    a[i]

    (a)插在中间

    a[i] 的有序位置

    右移

    a[i]

    (b)插在最前面

    a[i] 的有序位置

    a[i]

    (c)插在最后面

    插入排序的基本原理

    学习目标和要求

    1.理解插入排序的基本原理

    2、知道插入排序算法的种类

    直接插入排序 解放军理工大学

    直接插入排序

    插入排序的基本原理

    直接插入排序 解放军理工大学

    直接插入排序

    插入排序的基本原理

    基本操作:有序插入

    在有序序列中插入一个元素,保持序列有序

    起初,a[0]是长度为1的子序列

    然后,逐一将a[1]至a[n-1]插到有序子序列中

    直接插入排序 解放军理工大学

    直接插入排序

    有序插入方法

    在插入a[i]前,数组a的前半段(a[0]~a[i-1] )是有序

    段,后半段(a[i]~a[n-1] )是停留于输入次序的“无

    序段”。

    插入a[i]使a[0]~a[i]有序,也就是要为a[i]找到有序

    位置j (0≤j ≤i ),将a[i]插在a[j]的位置上。

    直接插入排序 解放军理工大学

    直接插入排序

    图示

    a[i] 的有序位置

    右移

    a[i]

    (a)插在中间

    a[i] 的有序位置

    右移

    a[i]

    (b)插在最前面

    a[i] 的有序位置

    a[i]

    (c)插在最后面

    直接插入排序 解放军理工大学

    直接插入排序

    插入排序的种类

    直接插入排序 解放军理工大学

    直接插入排序

    直接插入排序

    学习目标和要求

    1.编写直接插入排序算法

    2、知道算法的时间复杂性和稳定性

    直接插入排序

    展开全文
  • C语言程序设计精髓第4周编程题 1 分数比较 #include <stdio.h> int main() { int a, b, c, d, res; printf("Input a/b, c/d:" ); scanf("%d/%d,%d/%d", &a, &b, &c, &d); res = a * d...

    C语言程序设计精髓第4周编程题

    1 分数比较

    #include <stdio.h>
    int main()
    {
        int a, b, c, d, res;
        
        printf("Input a/b, c/d:"  );
        scanf("%d/%d,%d/%d", &a, &b, &c, &d);
        
        res = a * d - b * c;
        if (res > 0)
            printf("%d/%d>%d/%d\n", a, b, c, d);
        else if (res < 0)
            printf("%d/%d<%d/%d\n", a, b, c, d);
        else
            printf("%d/%d=%d/%d\n", a, b, c, d);
        return 0;
    }
    

    2 存款利率计算器v2.0

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        double rate, capital, deposit;
        int year;
    char ch;
    
        printf("Input rate, year, capital:");
        scanf("%lf,%d,%lf", &rate, &year, &capital);
    
        printf("Compound interest (Y/N)?");
        scanf(" %c", &ch);
    
        if(ch == 'Y' || ch == 'y')
            deposit = capital * pow(1 + rate, year);
        if(ch == 'N' || ch == 'n')
            deposit = capital * (1 + rate * year);
    
        printf("deposit = %.4f\n", deposit);
    
        return 0;
    }
    

    3 存款利率计算器v3.0

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        double rate, capital, deposit;
        int year;
        char ch;
    
        printf("Input capital, year:");
        scanf("%lf,%d", &capital, &year);
    
        printf("Compound interest (Y/N)?");
        scanf(" %c", &ch);
    
        switch (year)
        {
            case 1 :    rate = 0.0225;  break;
            case 2 :    rate = 0.0243;  break;
            case 3 :    rate = 0.0270;  break;
            case 5 :    rate = 0.0288;  break;
            case 8 :    rate = 0.0300;  break;
            default :   printf("Error year!\n");  return 0;
        }
    
        if(ch == 'Y' || ch == 'y')
            deposit = capital * pow(1 + rate, year);
        if(ch == 'N' || ch == 'n')
            deposit = capital * (1 + rate * year);
    
        printf("rate = %.4f, deposit = %.4f\n", rate, deposit);
    
        return 0;
    }
    
    

    4 博弈论之Best Response

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        float A, B, compete, standard;
    
        printf("Input percent of A and B:");
        scanf("%f%f", &A, &B);
    
        compete = A * 10 + B * 6;
        standard = A * 8 + B * 10;
    
        printf("compete = %.4f\nstandard = %.4f\n", compete, standard);
        if(compete > standard)
            printf("The Best Response is compete!");
        else
            printf("The Best Response is standard!");
    
        return 0;
    }
    

    1 检测用户错误输入

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        int a, b, t;
    
        if(scanf("%d %d", &a, &b) == 2)
            printf("a = %d, b = %d\n", a, b);
        else
            printf("Input error!");
    
        return 0;
    }
    

    2 闰年判断

    #include <stdio.h>
    
    int main()
    {
        int year;
    
        scanf("%d", &year);
    
        if (year >= 1)
        {
            if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                printf("Yes\n");
            else
                printf("No\n");
        }
        else
            printf("Input error!\n");
    
        return 0;
    }
    

    3 程序改错v1.0

    #include<stdio.h>
    int main()
    {
        int score;
        char grade;
    
        printf("Please input score:\n");
        if ((scanf("%d", &score) != 1) || (score < 0 || score > 100))
            printf("Input error!\n");
        else
        {
            if (score >= 90)
                grade = 'A';
            else if (score >= 80)
                grade = 'B';
            else if (score >= 70)
                grade = 'C';
            else if (score >= 60)
                grade = 'D';
            else
                grade = 'E';
            printf("grade: %c\n", grade);
        }
        return 0;
    }
    

    4 字符类型判断

    #include<stdio.h>
    int main()
    {
        char ch;
    
        printf("Input simple:\n");
        scanf("%c", &ch);
    
        if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
            printf("It is an English character.\n");
        else if (ch >= '0' && ch <= '9')
            printf("It is a digit character.\n");
        else
            printf("It is other character.\n");
    
        return 0;
    }
    

    5 快递费用计算

    #include<stdio.h>
    
    #define EPS 1E-6
    
    int main()
    {
        int zone, w;
        float weight, price = 0;
    
        scanf("%d,%f", &zone, &weight);
    
    
        w = weight - (int)(weight) <= EPS ? (int)(weight) : (int)(weight) + 1;
        // w = (int)(weight + 0.99999999);
    
        switch (zone)
        {
            case 0:  price = 10 + 3 * (w - 1);     break;
            case 1:  price = 10 + 4 * (w - 1);     break;
            case 2:  price = 15 + 5 * (w - 1);     break;
            case 3:  price = 15 + 6.5 * (w - 1);   break;
            case 4:  price = 15 + 10 * (w - 1);    break;
            default: printf("Error in Area\n");
        }
        printf("Price: %5.2f\n", price);
    
        return 0;
    }
    

    6 数位拆分v2.0

    #include <stdio.h>
    
    int main()
    {
        int n, a, b;
        printf("Please input n:\n");
        scanf("%d", &n);
    
        a = n / 100;
        b = n % 100;
    	printf("%d,%d\n", a, b);
    	printf("sum=%d,sub=%d,multi=%d\n", a + b, a - b, a * b);
    
    	if (b != 0)
            printf("dev=%.2f,mod=%d\n", (float)a / b, a % b);
        else
            printf("The second operator is zero!\n");
    
        return 0;
    }
    

    7 出租车计价

    #include <stdio.h>
    
    int main()
    {
        float distance, fee = 0;
        int time;
    
        printf("Input distance and time:");
        scanf("%f,%d", &distance, &time);
    
        fee += 8;
        if (distance > 3)
            if (distance <= 10) fee += (distance - 3) * 2;
            else fee += 7 * 2 + (distance - 10) * 3;
    
        fee += time / 5 * 2;
    
        printf("fee = %.0f\n", fee);
    
        return 0;
    }
    

    8 数据区间判断

    #include <stdio.h>
    
    int main()
    {
        int n;
    
        printf("Please enter the number:\n");
        scanf("%d", &n);
    
        if (n <= 0 || n >= 10000)
            printf("error!\n");
        else if (n >= 1000)
            printf("%d: 1000-9999\n", n);
        else if (n >= 100)
            printf("%d: 100-999\n", n);
        else if (n >= 10)
            printf("%d: 10-99\n", n);
        else
            printf("%d: 0-9\n", n);
    
        return 0;
    }
    

    9 计算一元二次方程的根v2.0

    #include  <stdio.h>
    #include  <math.h>
    
    #define EPS 1e-6
    
    main()
    {
    	float  a, b, c, disc, p, q;
    	printf("Please enter the coefficients a,b,c:\n");
    	scanf("%f,%f,%f", &a, &b, &c);
    
    	if (fabs(a) <= EPS)
    	{
    		printf("error!\n");
    		exit(0);
    	}
    
    	disc = b * b - 4 * a * c;
    	if (disc < -EPS)
    	{
    		printf("error!\n");
    	}
    	else
    	{
    		p = - b / (2 * a);
    		q = sqrt(fabs(disc)) / (2 * a);
    		printf("x1=%7.4f, x2=%7.4f\n", p + q, p - q);
    	}
    
    	return 0;
    }
    
    展开全文
  • 检索树(上)root40X>40X=6032 67 X<6714 36 54 75 X>5428 46 64 88 X<6420问题能否更快?如何查找二叉...

    检索树(上)

    root

    40

    X>40

    X=60

    32 67 X<67

    14 36 54 75 X>54

    28 46 64 88 X<64

    20

    问题

    能否更快?

    如何查找二叉树中的元素?

    遍历 T(n)=O(n)

    树结构 解放军理工大学

    回顾

    有序顺序表

    二分查找

    树结构 解放军理工大学

    问题

    什么样的二叉树能用类似二分

    查找方法实现查找呢?

    树结构 解放军理工大学

    检索树

    教学目标和要求

    1. 能够准确描述检索树的基本特征;

    2. 能够编程实现检索树的查找、插入、构造、删

    除算法 (递归、非递归)。

    树结构 解放军理工大学

    检索树的基本概念和查找

    root

    40

    X>40

    X=60

    32 67 X<67

    14 36 54 75 X>54

    28 46 64 88 X<64

    20

    检索树

    检索树

    a

    也称排序树,二叉树中任何一个值为a的 ≤a >a

    结点,其左子树上结点值均小于或等于a,

    其右子树上的结点值均大于a。

    检索树“左小右大” ,中序序列是“从小到大”

    树结构 解放军理工大学

    问题

    检索树如何进行查找呢?

    树结构 解放军理工大学

    检索树的查找基本思想

    只需沿着根到某个叶结点的一条路径搜索,使x与当前结点值比较:

     遇到空树,结点x不在树中,查找失败;

     如果相等,找到x ,查找成功;

     若x小于当前结点值,递归地查找左子树

    展开全文
  • Y↙ rate = 0.0243, deposit = 10491.9049 程序的运行结果示例2: Input capital, year:10000,2↙ Compound interest (Y/N)?n↙ rate = 0.0243, deposit = 10486.0000 程序的运行结果示例3: Input capital, year:...
  • C语言程序设计精髓第九周编程题

    千次阅读 2020-03-29 19:08:23
    C语言程序设计精髓第九周编程题 练兵区 1.二分法求根 题目内容: 用二分法求下面的一元三次方程在区间[-10, 10]上误差不大于的根。 用二分法求方程的根的基本原理是:若函数有实根,则函数曲线应当在根x*这一点上与...
  • C语言程序设计精髓习题总汇(上)

    万次阅读 多人点赞 2019-12-19 10:10:32
    循环 5.1 判断一个整型数据有几位v2.0 5.2 奖金计算 5.3 程序修改—1 5.4 程序修改—2 5.5 程序改错—1 5.6 程序改错—2 5.7 程序改错—3 5.8 猴子吃桃程序_扩展1 5.9 猴子吃桃程序_扩展2 5.10 6位密码输入检测 5.11...
  • 《《嵌入式嵌入式CC语言程序设计语言程序设计》》我们已经介绍了keil c51编程软件、单片机开发板等硬件调试平台、proteusproteus软件仿真调试平台软件仿真调试平台。。本次课程完整演示两种学习C语言的平台操作过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,080
精华内容 2,832
关键字:

c语言程序设计精髓

c语言 订阅