C语言-模块化程序设计ppt课件.ppt
《C语言-模块化程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言-模块化程序设计ppt课件.ppt(57页珍藏版)》请在咨信网上搜索。
第第4章章 模块化程序设计模块化程序设计 北京交通大学计算机学院北京交通大学计算机学院赵宏赵宏1.教学目标教学目标理解如何用函数模块构造程序理解如何用函数模块构造程序熟悉标准库中常见的函数熟悉标准库中常见的函数会定义和调用函数并理解函数调用的机制会定义和调用函数并理解函数调用的机制掌握变量的作用域和存储类别掌握变量的作用域和存储类别理解并运用递归函数编写程序。理解并运用递归函数编写程序。2.4.1 模块化程序设计概述模块化程序设计概述 4.2 函数的声明、定义和调用函数的声明、定义和调用 4.3 函数的多级调用函数的多级调用 4.4 变量的作用域和存储类别变量的作用域和存储类别 4.5 计算机随机模拟方法计算机随机模拟方法 4.6 编译预处理编译预处理 3.复杂任务可以分解为若干子任务。复杂任务可以分解为若干子任务。重复使用的程序段,将其进行独立设计,使计算机可以重重复使用的程序段,将其进行独立设计,使计算机可以重复执行。复执行。4.1 模块化程序设计概述模块化程序设计概述main()func1()func2()func3()func4()func5()func6()图图4-1 程序模块结构图程序模块结构图4.1.引例引例 4.2 函数的声明、定义和调用函数的声明、定义和调用/*程序名:程序名:4_1.cpp*/*功能:计算两个实数中大的值功能:计算两个实数中大的值*/#include float fmax(float x,float y);/*函数说明函数说明*/void main()float a,b,c;scanf(“%f,%f”,&a,&b);c=fmax(a,b);/*函数调用函数调用*/printf(“max=%fn”,c);float fmax(float x,float y)/*函数定义函数定义*/float z;z=x y?x:y;return z;5.2.函数说明函数说明 说明格式为:说明格式为:函数返回值类型函数返回值类型 函数名函数名(参数表参数表);#include float fmax(float x,float y);/*函数说明函数说明*/void main()float a,b,c;scanf(“%f,%f”,&a,&b);c=fmax(a,b);printf(“max=%fn”,c);函数说明是一条语句函数说明是一条语句,它指它指出函数返回值的类型、函出函数返回值的类型、函数的名称、函数要接收的数的名称、函数要接收的参数的个数、顺序和类型。参数的个数、顺序和类型。如果在一个函数中要调用如果在一个函数中要调用另外一个函数,则在调用另外一个函数,则在调用之前要对该函数进行说明。之前要对该函数进行说明。4.2 函数的声明、定义和调用函数的声明、定义和调用 6.3.函数定义函数定义 函数定义的一般形式:函数定义的一般形式:函数值类型函数值类型 函数名函数名(形参表形参表)/*)/*函数头函数头*/*/*/*函数体函数体*/*/说明部分说明部分 执行部分执行部分 4.2 函数的声明、定义和调用函数的声明、定义和调用 float fmax(float x,float y)float z;z=x y?x:y;return z;函数头函数头函数体函数体7.4.函数调用函数调用 函数调用的一般形式为函数调用的一般形式为:函数名(实参表)函数名(实参表);4.2 函数的声明、定义和调用函数的声明、定义和调用 void main()float a,b,c;scanf(“%f,%f”,&a,&b);c=fmax(a,b);printf(“max=%fn”,c);可用两种方式调用函数:可用两种方式调用函数:(1)函数的调用可以在允许表函数的调用可以在允许表达式出现的任何地方。如:达式出现的任何地方。如:c=fmax(a,b);(2)函数调用可以作为一条独函数调用可以作为一条独立的语句。比如,有函数定义:立的语句。比如,有函数定义:void printstar()printf(“*”);则可以把该函数调用作为一个则可以把该函数调用作为一个独立语句,独立语句,printstar();8.4.2 函数的声明、定义和调用函数的声明、定义和调用 函数返回值函数返回值 函数返回值的类型是由函函数返回值的类型是由函数定义或说明中的函数返数定义或说明中的函数返回类型决定的。如果返回回类型决定的。如果返回的类型与函数说明的不同,的类型与函数说明的不同,则在返回值时,先作隐含则在返回值时,先作隐含的类型转换,然后再返回。的类型转换,然后再返回。#include int fmax(float x,float y)return x y?x:y;void main()float max;max=fmax(3.5,2.6);printf(“max=%fn”,max);结果结果?9.4.2 函数的声明、定义和调用函数的声明、定义和调用 形参和实参形参和实参 形式参数:定义函数时放在函数名称之后括号中的参形式参数:定义函数时放在函数名称之后括号中的参数,简称形参。数,简称形参。实际参数:调用函数时括号中的参数,简称实参。实际参数:调用函数时括号中的参数,简称实参。形参与实参的结合:函数在调用时,将生成实参值的形参与实参的结合:函数在调用时,将生成实参值的一个副本传递给对应的形参,这个过程称为形参与实一个副本传递给对应的形参,这个过程称为形参与实参的结合。如果只允许实参向形参传递数据,则被称参的结合。如果只允许实参向形参传递数据,则被称为为“单向传递单向传递”。10.4.2 函数的声明、定义和调用函数的声明、定义和调用 参数传递实例参数传递实例 void swap(float x,float y)float t;t=x;x=y;y=t;void main()float a,b;scanf(“%f,%f”,&a,&b);swap(a,b);printf(“%f,%fn”,a,b);3.53.52.62.6实参实参a实参实参b形参形参x形参形参y图图4-2 实参和形参数据的传递实参和形参数据的传递11.4.2 函数的声明、定义和调用函数的声明、定义和调用 函数的调用过程函数的调用过程 void main()float a,b,c;scanf(“%f,%f”,&a,&b);c=fmax(a,b);printf(“max=%fn”,c);float fmax(float x,float y)float z;z=x y?x:y;return z;保保存存返返回回地地址址及及当当前前现现场场,为为形形参参分分配配内内存存并并将将实实参参的值传给形参变量的值传给形参变量恢恢复复main函函数数的的现现场场,取取得得返返回回地址和返回值地址和返回值12.4.带自定义函数的程序设计带自定义函数的程序设计 4.2 函数的声明、定义和调用函数的声明、定义和调用 程序设计思路:程序设计思路:(1)定义一个函数定义一个函数isprime(int m)判断)判断m是否为素数,若是素数,是否为素数,若是素数,函数返回函数返回1,否则返回,否则返回0。int isprime(int m)int i;for(i=2;i=m-1;i+)if(m%i=0)return 0;return 1;(2)在主函数中输入一个整数,调用在主函数中输入一个整数,调用isprime函数,如果函数值为函数,如果函数值为1,则,则打印是素数,否则打印不是素数。打印是素数,否则打印不是素数。void main()int iNumber;printf(请输入一个整数:请输入一个整数:);scanf(%d,&iNumber);if(isprime(iNumber)printf(%d是素数是素数,iNumber);else printf(%d不是素数不是素数,iNumber);【例【例4-2】从键盘输入一个整数,判断该整数是否为素数。】从键盘输入一个整数,判断该整数是否为素数。13.1.嵌套调用嵌套调用int min2(int a,int b)return ab?a:b;int min3(int a,int b,int c)int x,y;x=min2(a,b);y=min2(t,c);return y;#includevoid main()int t1,t2;t1=min2(-2,8);printf(“min=%dn”t1,);t2=min3(-2,8,-6);printf(“min=%dn”,t2);4.3 函数的多级调用函数的多级调用14.4.3 函数的多级调用函数的多级调用main函数函数t1=min2(-2,8);t2=min3(-2,8,-6);min3函数函数x=min2(a,b);min2函数函数return a=0&x=9)printf(%dn,x);else printf(%d,x%10);invertLongInt(x/10);4.3 函数的多级调用函数的多级调用24.小结:小结:函数分为系统函数和自定义函数。函数分为系统函数和自定义函数。每个函数的都是每个函数的都是独立定义独立定义的,如果函数定义在后、的,如果函数定义在后、调用在前,要对函数原型进行说明。调用在前,要对函数原型进行说明。除了主函数外,其他函数可以相互调用,如果除了主函数外,其他函数可以相互调用,如果A调调用用B,B又调用又调用C,称为嵌套调用,如果直接或间,称为嵌套调用,如果直接或间接调用自己,称为递归。接调用自己,称为递归。25.练习:练习:函数函数fun实现计算两个数之差的绝对值,并实现计算两个数之差的绝对值,并将差值返回调用函数,请编写将差值返回调用函数,请编写fun函数函数 fun(int x,int y)26.第第7周作业:周作业:1在主函数中输入三角形的的三条边,调用子在主函数中输入三角形的的三条边,调用子函数,判断是否能组成三角形,若可以则返回函数,判断是否能组成三角形,若可以则返回1否则返回否则返回0。在主函数中输出判断结果。在主函数中输出判断结果。2编写函数,求两个正整数编写函数,求两个正整数m和和n的最大公约数。的最大公约数。m 和和 n 作为函数的参数。函数返回运算结果,由作为函数的参数。函数返回运算结果,由主函数输出。主函数输出。4.习题习题4.2要求要求:第第8周上课前提交周上课前提交27.(1)程序区程序区:存放用户程序代码,即程序中各个函数的代码。:存放用户程序代码,即程序中各个函数的代码。(2)静态存储区静态存储区:存放程序的全局数据和静态数据。分配在静态:存放程序的全局数据和静态数据。分配在静态存储区中的变量的生命期最长,它们在存储区中的变量的生命期最长,它们在main函数运行之前就函数运行之前就存在了,在程序的整个活动期(从程序开始执行到执行结束)存在了,在程序的整个活动期(从程序开始执行到执行结束)中,这些变量始终占用静态存储区中对应的存储空间,即程中,这些变量始终占用静态存储区中对应的存储空间,即程序开始执行时分配存储单元,程序执行完毕后释放。序开始执行时分配存储单元,程序执行完毕后释放。(3)动态存储区动态存储区:存放局部变量。分配在动态存储区中的变量只:存放局部变量。分配在动态存储区中的变量只有在所定义的函数被调用时才分配存储单元,函数结束时就有在所定义的函数被调用时才分配存储单元,函数结束时就释放。系统对函数调用时的现场保护、返回地址等也占用动释放。系统对函数调用时的现场保护、返回地址等也占用动态保护区。态保护区。(4)堆堆:自由存储区,用于运行程序时动态申请内存。自由存储区,用于运行程序时动态申请内存。4.4 变量的作用域和存储类别变量的作用域和存储类别1.程序在内存中的分布区域程序在内存中的分布区域 28.局部变量:在块内定义的变量。局部变量:在块内定义的变量。局部变量作用域:块内定义、块内使用。所谓块内是指一对局部变量作用域:块内定义、块内使用。所谓块内是指一对以以 为界限的若干个语句,例如函数体、复合语句。而块内为界限的若干个语句,例如函数体、复合语句。而块内使用,是指变量的作用范围仅仅局限在从变量定义处开始、使用,是指变量的作用范围仅仅局限在从变量定义处开始、到变量定义所在的那个块结束。如:到变量定义所在的那个块结束。如:4.4 变量的作用域和存储类别变量的作用域和存储类别2.局部变量及存储类别局部变量及存储类别 局部于局部于main的局部变量的局部变量局部于局部于func的局部变量的局部变量void main()int n=5;printf(“%d”,n);func();void func()int n=8;printf(“%d”,n);29.形式参数也为局部变量,其作用范围是形式参数所在形式参数也为局部变量,其作用范围是形式参数所在的整个函数。例如:的整个函数。例如:void main()printf(“%d,%d”,x,y);/*error*/void func(int x,int y)/*/4.4 变量的作用域和存储类别变量的作用域和存储类别30.局部变量的存储类别局部变量的存储类别:自动变量自动变量:用关键字:用关键字auto(可缺省可缺省)加以说明的局部变量。如:加以说明的局部变量。如:auto float b;或或float b;特点:是短生命期的局部变量,安排在动态存储区,由系统自动特点:是短生命期的局部变量,安排在动态存储区,由系统自动分配和释放,用到时分配内存,不用时释放内存,以节省程序执分配和释放,用到时分配内存,不用时释放内存,以节省程序执行时的内存资源。行时的内存资源。局部静态变量局部静态变量:用关键字:用关键字static 加以说明的局部变量。局部静态加以说明的局部变量。局部静态变量在静态存储区分配空间。如:变量在静态存储区分配空间。如:static int count;特点:是长生命期的局部变量。函数执行结束后,分配给该变量特点:是长生命期的局部变量。函数执行结束后,分配给该变量的存储区不释放。局部静态变量安排在静态存储区。的存储区不释放。局部静态变量安排在静态存储区。寄存器变量寄存器变量:用关键字:用关键字register说明的局部变量为寄存器变量。说明的局部变量为寄存器变量。特点:寄存器变量的值存放在特点:寄存器变量的值存放在CPU的寄存器中。可以提高程序的的寄存器中。可以提高程序的执行效率。执行效率。4.4 变量的作用域和存储类别变量的作用域和存储类别31.【例【例4-10】局部变量存储方式举例,分析下面程序运行结果:】局部变量存储方式举例,分析下面程序运行结果:/*程序名:程序名:4_10.cpp*/*功能:局部变量存储方式示例功能:局部变量存储方式示例*/#includeint fun1(int);int fun2(int);void main()int i;for(i=2;i 5;i+)printf(fun1(%d)=%d t,i,fun1(i);printf(n);for(i=2;i 5;i+)printf(fun2(%d)=%d t,i,fun2(i);printf(n);4.4 变量的作用域和存储类别变量的作用域和存储类别32.续上页:续上页:int fun1(int x)int f=1;return(f*=x);int fun2(int x)static int f=1;return(f*=x);4.4 变量的作用域和存储类别变量的作用域和存储类别程序执行结果为:程序执行结果为:fun1(2)=2 fun1(3)=3 fun1(4)=4fun2(2)=2 fun2(3)=6 fun2(4)=2433.#includeint func(int,int);void main()int k=4,m=1,p;p=func(k,m);printf(%d,p);p=func(k,m);printf(%dn,p);int func(int a,int b)static int m,i=2;i+=m+1;m=i+a+b;return(m);结果:结果:8,17主函数:主函数:第一次第一次fun函数:函数:km41mi02mi83第二次第二次fun函数:函数:mi83mi171234.全局部变量:函数外定义的变量。全局部变量:函数外定义的变量。全局变量作用域:全局变量的作用范围是从变量定义处开始到所定义的源全局变量作用域:全局变量的作用范围是从变量定义处开始到所定义的源文件结束处,即从全局变量定义所在处开始到源文件结束处之间的所有函文件结束处,即从全局变量定义所在处开始到源文件结束处之间的所有函数都可以访问该变量数都可以访问该变量。如如:int n=1;void main()printf(“%d”,n);func();printf(“%d”,n);float m;void func()n=5;m=3;4.4 变量的作用域和存储类别变量的作用域和存储类别2.全局部变量及存储类别全局部变量及存储类别 35.【例【例4-11】全局变量的作用域举例,分析下面程序运行结果。】全局变量的作用域举例,分析下面程序运行结果。#includevoid swap(void);int a,b;/*是两个函数公用的变量是两个函数公用的变量*/void main()scanf(%d%d,&a,&b);printf(交换前的交换前的 a和和 b是是%d,%dn,a,b);swap();printf(交换后的交换后的 a和和 b是是%d,%dn,a,b);void swap()int t;t=a;a=b;b=t;/*使用的变量名使用的变量名 a和和 b 全局变量全局变量 a和和 b*/4.4 变量的作用域和存储类别变量的作用域和存储类别36.局部变量与全局变量同名时的处理:小范围优先局部变量与全局变量同名时的处理:小范围优先【例【例4-12】分析下面程序运行结果:】分析下面程序运行结果:int i=1;/*变量变量i定义在所有函数之外,属于全局变量定义在所有函数之外,属于全局变量*/void main()printf(“主函数中访问的变量主函数中访问的变量 i:%dn ,i);i=test()+1;printf(“主函数中访问的变量主函数中访问的变量 i:%dn,i);int test()int i;printf(“test 中访问的变量中访问的变量 i:%dn,i);i=2;printf(“test 中访问的变量中访问的变量 i:%dn,i);return i;4.4 变量的作用域和存储类别变量的作用域和存储类别程序运行结果:程序运行结果:主函数中访问的变量主函数中访问的变量 i:1test 中访问的变量中访问的变量 i:28345test 中访问的变量中访问的变量 i:2主函数中访问的变量主函数中访问的变量 i:337.全局部变量的存储类别全局部变量的存储类别:静态全局变量静态全局变量:使用关键字:使用关键字 static定义定义 的全局变量是文件内部的的全局变量是文件内部的全局变量。全局变量。特点:只能被定义所在的源文件中的所有函数访问,同一程序的特点:只能被定义所在的源文件中的所有函数访问,同一程序的其它其它 源文件中的函数都不能访问该变量。源文件中的函数都不能访问该变量。非静态全局变量非静态全局变量:使用缺省关键字的全局变量。:使用缺省关键字的全局变量。特点:则该变量不仅能被定义所在的源文件中的所有函数访问,特点:则该变量不仅能被定义所在的源文件中的所有函数访问,而且组成程序的其它源文件中的所有函数也都能访问该变量。因而且组成程序的其它源文件中的所有函数也都能访问该变量。因此,从作用范围看,缺省关键字的全局变量要比使用关键字此,从作用范围看,缺省关键字的全局变量要比使用关键字 static 的静态全局变量大。的静态全局变量大。关键字关键字 extern 的作用的作用 关键字关键字 extern 的作用是对要使用的某个尚未定义的全局变量在的作用是对要使用的某个尚未定义的全局变量在使用前作变量说明,该全局变量或者是以后会在该源文件中定义使用前作变量说明,该全局变量或者是以后会在该源文件中定义的全局变量,或者是在另一个源文件中使用缺省关键字定义的全的全局变量,或者是在另一个源文件中使用缺省关键字定义的全局变量。局变量。4.4 变量的作用域和存储类别变量的作用域和存储类别38.【例【例4-13】全局变量存储方式举例,分析下面程序运行结果:】全局变量存储方式举例,分析下面程序运行结果:/*程序名:程序名:4_13.cpp*/*功能:全局变量存储方式示例功能:全局变量存储方式示例*/#includeextern int a;/*对对4_13_2.cpp中定义的变量进行说明中定义的变量进行说明*/void fun1();void fun2();void main()fun1();fun2();printf(函数函数 main 中的中的 a是是%dn,a);4.4 变量的作用域和存储类别变量的作用域和存储类别39./*程序名:程序名:4_13_1.cpp*/#includestatic int a;/*只允许文件只允许文件4_13_1.cpp中函数访问的全局变量中函数访问的全局变量*/void fun1()a=2;printf(函数函数 fun1 中的中的 a是是%dn,a);/*程序名:程序名:4_13_2.cpp*/#includeint a;/*允许其它文件中函数访问的全局变量允许其它文件中函数访问的全局变量*/void fun2()a=4;printf(函数函数 fun2 中的中的 a是是%dn,a);4.4 变量的作用域和存储类别变量的作用域和存储类别40.rand()函数可随机生成函数可随机生成0RAND_MAX之间的一个整数。之间的一个整数。RAND_MAX是头文件是头文件中定义的一个符号常量。中定义的一个符号常量。ANSI规定规定RAND_MAX的值不小于的值不小于32767。根据下面公式可以得到所需范围内的随机数:根据下面公式可以得到所需范围内的随机数:n=a+rand()%b 其中其中a为位移,是所需连续整数范围的第一个数,为位移,是所需连续整数范围的第一个数,b是比例因子,是比例因子,是所需连续整数范围的宽度,则希望产生是所需连续整数范围的宽度,则希望产生16之间随机数的公之间随机数的公式为:式为:face=1+rand()%64.5 计算机随机模拟方法计算机随机模拟方法1.伪随机数的产生伪随机数的产生 41.【例【例4-14】编写一个模拟投掷硬币的程序,模拟】编写一个模拟投掷硬币的程序,模拟20次,统计出次,统计出正面出现的次数。正面出现的次数。#include#includevoid main()int i,face,iCount=0;for(i=1;i=20;i+)face=rand()%2;printf(%5d,face);if(i%10=0)printf(n);if(face)iCount+;printf(正面出现次数:正面出现次数:%d次次n,iCount);4.5 计算机随机模拟方法计算机随机模拟方法42.运行程序,结果为:运行程序,结果为:1 1 0 0 1 0 0 0 0 01 1 1 1 1 1 1 0 1 0正面出现次数:正面出现次数:11次次再次运行该程序结果为:再次运行该程序结果为:1 1 0 0 1 0 0 0 0 01 1 1 1 1 1 1 0 1 04.5 计算机随机模拟方法计算机随机模拟方法43.用用srand()函数进行随机化函数进行随机化void main()unsigned seed;printf(“输入一个非负整数做种子:输入一个非负整数做种子:”);scanf(“%d”,&seed);srand(seed);for(int i=1;i=10;i+)printf(%3d,1+rand()%6);运行运行3次程序:次程序:输入一个非负整数做种子:输入一个非负整数做种子:161 3 4 3 5 6 5 2 6 2输入一个非负整数做种子:输入一个非负整数做种子:333 1 5 3 5 6 5 4 1 5输入一个非负整数做种子:输入一个非负整数做种子:161 3 4 3 5 6 5 2 6 24.5 计算机随机模拟方法计算机随机模拟方法44.使用系统定时使用系统定时/计数器的值做为随机种子:计数器的值做为随机种子:srand(time(NULL);time()函数返回以秒为单位的当前时间值,因为有时钟参数,函数返回以秒为单位的当前时间值,因为有时钟参数,而时间始终在变,随机数序列就不会固定不变了。而时间始终在变,随机数序列就不会固定不变了。【例【例4-16】编写程序,用来生成一个随机小写字符串。】编写程序,用来生成一个随机小写字符串。#include#include#include void main()srand(time(NULL);for(int i=1;i=20;i+)printf(%c,97+rand()%26);4.5 计算机随机模拟方法计算机随机模拟方法45.4.7 本章小结本章小结函数分为系统函数和自定义函数。函数分为系统函数和自定义函数。每个函数的都是独立定义的,如果函数定义在后、调用在前,每个函数的都是独立定义的,如果函数定义在后、调用在前,要对函数原型进行说明。要对函数原型进行说明。除了主函数外,其他函数可以相互调用,如果除了主函数外,其他函数可以相互调用,如果A调用调用B,B又调用又调用C,称为嵌套调用,如果直接或间接调用自己,称为,称为嵌套调用,如果直接或间接调用自己,称为递归。递归。内存为用户提供的存储空间可以分三类:内存为用户提供的存储空间可以分三类:程序区、程序区、静态存静态存储区、动态存储区。储区、动态存储区。从变量占用空间的角度来分析问题,划分出全局变量和局部从变量占用空间的角度来分析问题,划分出全局变量和局部变量,这是变量的作用域问题。由变量值存在的时间来分析变量,这是变量的作用域问题。由变量值存在的时间来分析问题,由此划分出了变量的静态存储和动态存储,这是变量问题,由此划分出了变量的静态存储和动态存储,这是变量的存储类别问题。的存储类别问题。4.7 本章小结本章小结52.思考题思考题为什么要对函数进行说明?为什么要对函数进行说明?局部变量和全局变量的有效范围都是什么?局部变量和全局变量的有效范围都是什么?变量的动态存储和静态存储有何区别变量的动态存储和静态存储有何区别?变量的作用域和生存期有什么区别变量的作用域和生存期有什么区别?有什么联系有什么联系?53.作业实验二54.趣味程序编写程序,帮助小学生学习加减法。用编写程序,帮助小学生学习加减法。用rand()函数函数产生两个一位数,然后输入下列问题:产生两个一位数,然后输入下列问题:?然后输入答案,程序检查学生的答案。如果正确,然后输入答案,程序检查学生的答案。如果正确,则打印则打印“正确正确”,然后提出另外一个加法问题,如果,然后提出另外一个加法问题,如果不正确,则打印不正确,则打印“错误错误”,让学生重复回答这个问题,让学生重复回答这个问题,直到正确为止。直到正确为止。sy4-1.cpp55.void main()int k,flag=1;while(flag)/*显示菜单显示菜单*/printf(1加法运算加法运算n);printf(2减法运算减法运算n);printf(0退出退出n);printf(请输入选项请输入选项(0-2):);scanf(%d,&k);/*输入选项输入选项*/switch(k)/*根据选项调用相应的函数根据选项调用相应的函数*/case 1:add();break;case 2:sub();break;case 0:flag=0;56.void add()int a,b,c,m,n=0;srand(time(NULL);/*随机化随机数序列随机化随机数序列*/while(1)a=rand()%10;/*生成两个随机数,和不能超过生成两个随机数,和不能超过10*/b=rand()%(10-a);printf(%d+%d=,a,b);scanf(%d,&c);if(c=a+b)printf(正确正确n);/*显示计算正确显示计算正确*/else printf(“错误错误n);printf(还想做一道题吗还想做一道题吗(1-yes/0-no)?);scanf(%d,&m);if(m=0)return;n=0;/*n n=0;/*n用来统计计算错误次数用来统计计算错误次数用来统计计算错误次数用来统计计算错误次数*/*/while(c!=a+b)/*while(c!=a+b)/*允许计算三次允许计算三次允许计算三次允许计算三次*/*/n+;n+;if(n 3)if(n 3)printf(printf(错误,请重计算一次错误,请重计算一次错误,请重计算一次错误,请重计算一次n);n);printf(%d+%d=,a,b);printf(%d+%d=,a,b);scanf(%d,&c);scanf(%d,&c);if(c=a+b)printf(if(c=a+b)printf(正确正确正确正确n);n);else /*else /*三次不正确就给出答案三次不正确就给出答案三次不正确就给出答案三次不正确就给出答案*/*/c=a+b;c=a+b;printf(printf(答案为:答案为:答案为:答案为:%dn,c);%dn,c);57.- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 模块化 程序设计 ppt 课件
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文