2022年C程序作业答案讲课讲稿.pdf
C 程 序 作 业 答 案精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 7 页 - - - - - - - - - - 什么是程序及程序设计程序( program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为实现预期目的而进行操作的一系列语句和指令。一般分为系统程序和应用程序两大类。程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。由于程序是软件的本体,软件的质量主要通过程序的质量来体现,在软件研究中,程序设计的工作非常重要,内容涉及到有关的基本概念、工具、方法以及方法学等。程序设计 = 数据结构 + 算法正确理解以下名词及其含义1、源程序目标程序可执行程序2、程序编辑程序编译程序连接3、程序程序模块 程序文件4、函数主函数被调用函数库函数5、程序调试程序测试1、源程序:程序可以用高级语言或汇编语言编写,用高级语言或汇编语言编写的程序称为源程序。目标程序:源程序经过“编译程序”编译所得到的二进制代码称为目标程序。可执行程序:目标程序与库函数连接,形成的完整的可在操作系统下独立执行的程序称为可执行程序。2、程序编辑:是指将完成一件工作所需要的步骤,也就是算法 ,用计算机所能识别的语言,按照一定的程序结构翻译出来,并可被计算机执行的编写代码的全过程.该程序编辑形式(能通过编译、链接生成最终程序(一般是可执行文件)的源代码文件。用户使用编译程序对其个人编制的源程序进行编译的过程称为程序编译。程序连接:编辑就是自己写代码,编译就是将你写的代码翻译成目标文件,连接是将你的目标文件与系统文件(资源、模块等)组合生成可执行文件。3、程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合。程序模块 (program module)即可由汇编程序、编译程序、装入程序或翻译程序作为一个整体来处理的一级独立的、可识别的程序指令。程序以命令形式存储在磁盘上,称为:程序文件,文件扩展名为。PRG 4、库函数由系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。被调用函数:计算机编程术语,即由一个函数调用另一个函数,则称第二个函数为被调用函数。主函数既是程序的入口,又是程序的出口。函数:函数是C 程序的基本单位,在设计良好的程序中,每个函数都用来实现一个或几个特定的功能。5、程序调试:所谓程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。程序测试 (program testing) 是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行。为什么需要计算机语言?高级语言的特点计算机语言( Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句)。这些就是计算机能接受的语言。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令 )来实现的。C 程序设计答案: 4-1 有两个瓶子A 和 B 分别盛放醋和酱油,将他们互换如果A 瓶原来盛醋现改盛酱油,B 瓶原来盛酱油现改盛醋。4-3 开始输入 A、B、C、如果 abc 则输出 A 然后是 B 最后 C b ac 则输出 b 然后是 a 最后 C cab 则输出 c 然后是 a 最后 C 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 7 页 - - - - - - - - - - 4-5 开始输入数N 如果能被 3 整除而且能被5 整除则算法结束。4-7 输入 M 和 N 找出 M 和 N 所有公有质因数,然后将所有公有质因数相乘,其积即为M 和 N 的最大公约数。8 设 YEAR 为被检测的年份S1:1900= year S2:若 year 不能被 4 整除则输出year 的值和“不是闰年”。然后转到S6 检查一下年份。S3:若 year 能被 4 整除不能被 100 整除,则输出year 的值和“是闰年”。然后转到S6 S4:若 year 能被 400 整除输出 year 的值和“是润年”然后转到s6 S5:输出 year 的值和“不是闰年”S6:year+1= year S7:当 year 2000 时,转 S2 继续执行,否则算法停止。假如我国国民生产总值的年增长率r=9% ,计算 n=10 年后我国国民生产总值与现在相比增长百分比p #include int main(int argc, char *argv) int n; float p1=1.0,p2=1.0,r=0.09,p; for(n=1;n=10;n+) p2+=p1*r; p1=p2; p=p2/1.0; printf(10年后的比现在相对增长百分比为:%.2f%n,p*100) ; return 0; 存款利息的计算。有1000 元,想存 5 年,可按以下5 种办法存:(1)一次存 5 年(2)先存 2 年,到期后将本息再存三年期(3)先存 3 年期,到期后将本息再存2 年期( 4)存 1 年期,到期后将本息再存1 年期,连续存5 次( 5)存活期存款。活期利息每一季度结算一次。 2007 年 12 月的银行存款利息是: 1 年期定期存款利息=4.14% ;2 年期=4.68% ;3 年期=5.4% ;5 年期 =5.85% 活期存款利息为0.72% (活期存款每一季度结算一次利息)。如果r 为年利率, n 为存款年数,则计算本息的公式如下。一年期本息和:P=1000* (1+r) n年期本息和: P=1000* (1+n*r ) 存 n 次一年期的本息和:P=1000* (1+r )n (n 次方哦 ) 活期存款本息和: P=1000*(1+r/4)4n(4n次方哦! ) (说明: 1000* (1+r/4 )是一个季度的本息和)#include #include #include #define b 1.0414 #define c 1.0018 main() while (1) int a; printf(Please return the way you want 1,2,3,4,5:); scanf(%d,&a); switch (a) case 1:printf(The money is:%fnn,1000+1000*0.0585*5);break; case 2:printf(The money is:%fnn,1000+(1000+1000*0.0468*2)*0.0540*3);break; case 3:printf(The money is:%fnn,1000+(1000+1000*0.0540*3)*0.0468*2);break; case 4:printf(The money is:%fnn,1000*b*b*b*b*b);break; case 5:printf(The money is:%fnn,1000*pow(c,20);break; system(pause); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 7 页 - - - - - - - - - - 分析下面的程序:#include int main(). 省略1、运行时会出现什么信息为什么2、如果将程序4、5 行改为c1=197 c2=198 运行时会出现什么信息为什么3、将 3 行给为int c1 ,c2 ;运行时会出现什么信息为什么1,输出: c1=a,c2=b c1=97,c2=98 原因:因为输出为整型格式时,就输出对应的ASC 代码值;字符格式就输出相应的字符。2,输出: c1?, c2?c1 59c2 58 原因:英文字母对应的asc 值越界,所以输出?(不能输出对应的特殊符号,应为格式是c),至于后面输出的负数,是因为字符常量在内存中存储的时候实际上是以二进制形式存储的,197 和 198 存储进去,内存中因为越界不能完整存储相应的二进制码,而存储的二进制码输出来的整数就是那二进制码对应的负数了。3,输出: c1=a,c2=b c1=97,c2=98 原因和 1 的问基本相同了。用下面的 SCANF 函数输入数据,使a=3 ,b=7 ,x=8.5 ,y=71.82 ,c1=A ,c2=a ,问在键盘上如何输入#include int main() int a,b; char c1,c2; float x,y,z; scanf(%d%d,&a,&b); getchar(); scanf(%c,&c1); getchar(); scanf(%c,&c2); scanf(%f%f%f,&x,&y,&z); printf(%d %d %c %c %f %f %fn,a,b,c1,c2,x,y,z); return 0; C 语言中如何表示“真”和“假”?系统如何判定一个量的“真”和“假. C 语言编译系统在表示逻辑运算结果时,以数值1 代表“真”,以0 代表“假”其实语句是否执行由用户的代码(即判断条件)决定的,而系统只用0 和非 0 进行判断,当用户认为此句可执行,系统判断为“真”,反之亦然写出下面逻辑表达式的值,设a=3.b=4,c=5 0 1 1 0 1 有三个整数a,b,c,由键盘输入,输出其中最大值方法一#include main() int a,b,c; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 7 页 - - - - - - - - - - printf(请输入 3 个整数: ); scanf(%d,%d,%d,&a,&b,&c); if(ab) if(bc) printf(max=%dn,c); else printf(max=%dn,b); else if(ac) printf(max=%dn,c); else printf(max=%dn,a); 输入两个正整数m 和 n,求其最大公约数和最小公倍数。main() long m,n,i=1,j,s; scanf(%ld,%ld,&m,&n); for(;i=m&i=n) j=m; else j=n; for(;!(j%m=0&j%n=0);j+); printf(s=%ld,j=%ldn,s,j); 求 Sn=a+aa+aaa+aa aaa(有 n 个 a)之值,其中a 是一个数字。例如:2+22+222+2222+22222(n=5 ),n由键盘输入。#includemath.h main() int n,sum=0,i=1,s=2; scanf(%d,&n); while(i=n) sum=sum+s;s=s+2*pow(10,i); i+; printf(sum=%dn,sum); 打印以下图案#includemath.h main() int i,j,k; for(i=0;i=3;i+) for(j=0;j=2-i;j+) printf( ); for(k=0;k=2*i;k+) printf(*); printf(n); for(i=0;i=2;i+) for(j=0;j=i;j+) printf( ); for(k=0;k=4-2*i;k+) printf(*); printf(n); 打印出以下杨辉三角形(要求打印出10 行)。main() static int m,n,k,b1515; b01=1; for(m=1;m15;m+) for(n=1;n=65&str1i=97&str1i=122) str2i=219-str1i; else str2i=str1i; printf(%sn%sn,str1,str2); 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。maxyueshu(m,n) int m,n; int i=1,t; for(;i=m&i=n) j=m; else j=n; for(;!(j%m=0&j%n=0);j+); return j; main() int a,b,max,min; printf(enter two number is: ); scanf(%d,%d,&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf(max=%d,min=%dn,max,min); 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。psushu(m) int m; int i=2,t; for(;i=m;i+) if(m%i=0&i=65&str0i=97&str0i=48&str0i=57) b1+; else if(str0i=32) b2+; else b3+; main() char str1100;static int i,a4; gets(str1); tongji(str1,a); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 7 页 - - - - - - - - - - printf(zimu Shuzi Kongge Qitan); for(i=0;i4;i+) printf(%-8d ,ai);printf(n); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 7 页 - - - - - - - - - -