C语言程序设计快速入门

C语言程序设计快速入门
C语言程序设计快速入门

第1部分语言篇

第1章程序设计入门

阅读资料[摘录自网络以及专业书籍]

Main函数相关:

每个 C++ 程序都包含一个或多个函数,而且必须有一个命名为 main。函数由执行函数功能的语句序列组成。操作系统通过调用 main 函数来执行程序,main 函数则执行组成自己的语句并返回一个值给操作系统。

下面是一个简单的 main 函数,它不执行任何功能,只是返回一个值:

int main()

{

return 0;

}

操作系统通过 main 函数返回的值来确定程序是否成功执行完毕。返回 0 值表明程序程序成功执行完毕。

main 函数在很多方面都比较特别,其中最重要的是每个 C++ 程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显式调用的函数。

定义 main 函数和定义其他函数一样。定义函数必须指定 4 个元素:返回类型、函数名、圆括号内的形参表(可能为空)和函数体。main 函数的形参个数是有限的。本例中定义的 main 函数形参表为空。第 7.2.6 节将介绍 main 函数中可以定义的其他形参。

main 函数的返回值必须是 int 型,该类型表示整数。 int 类型是内置类型,即该类型是由 C++ 语言定义的。

函数体函数定义的最后部分,是以花括号开始并以花括号结束的语句块:

{

return 0;

}

例中唯一的语句就是 return,该语句终止函数。

注意 return 语句后面的分号。在 C++ 中多数语句以分号作为结束标记。分号很容被忽略,而漏写分号将会导致莫名其妙的编译错误信息。

当 return 带上一个值(如 0)时,这个值就是函数的返回值。返回值类型必须和函数的返回类型相同,或者可以转换成函数的返回类型。对于 main 函数,返回类型必须是 int 型,0 是 int 型的。

在大多数系统中,main 函数的返回值是一个状态指示器。返回值 0 往往表示 main 函数成功执行完毕。任何其他非零的返回值都有操作系统定义的含义。

通常非零返回值表明有错误出现。每一种操作系统都有自己的方式告诉用户 main 函数返回什么内容。

已初始化变量和未初始化变量

在 C++ 中,初始化是一个非常重要的概念。

已初始化变量是指变量在定义时就给定一个值。未初始化变量则未给定初始值:

int val1 = 0; // initialized

int val2; // uninitialized

给变量一个初始值几乎总是正确的,但不要求必须这样做。当我们确定变量在第一次使用时会赋一个新值,那就不需要创建初始值。

定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。

EOF 文件终止符

竞赛中常采用while(scanf( ... ) != EOF){ ... }来实现多组读入。

这是因为竞赛经常采用重定向的方式,把输入数据文件输入到程序中。而EOF表示文件结束。(End Of File)

从键盘输入文件结束符

操作系统使用不同的值作为文件结束符。Windows 系统下我们通过键入control—z——同时键入“ctrl”键和“z”键,来输入文件结束符。

nix 系统中,包括 Mac OS—X 机器,通常用 control—d。

C/C++编码规范

一个好的程序,不仅要算法正确,效率高,而且还应该可读性好。所谓程序的可读性,就是程序是否能让人容易读懂。在开发实践中,许多情况下可读性与代码效率同等重要。

软件开发是团队工作,接手别人编码的程序并在此基础上进行改进是必不可少的,因此可读性在工程实践中非常重要。即使是自己编写的程序,如果可读性不好,过一段时间需要改进时自己再看,也常会看不懂。

如何提高程序的可读性呢?在标识符、书写格式、注释三个方面加以培养,再养成一些好的习惯,就能够有效增强程序的可读性。

1.5.1 标识符命名注意事项

应该对变量、常量以及函数等标识进行适当的命名。好的命名方法使标识符易于记忆且使程序可读性大大提高。

对标识符命名的基本要求是,看到标识符就能想起或猜出它是做什么用的。如果名字能体现变量的类型或作用域等性质,当然更好。标识符命名应注意以下几点:(1)标识符号应能提供足够信息以说明其用途。一定不要怕麻烦而懒得起足够长的变量名,少按几个键省下的时间,和日后自己读程序或别人读你的程序揣摩该变量的作用所花的时间相比,实在微不足道。在没有国标合作的项目中编写程序,如果英语实在不好,可以使用拼音,但不要使用拼音缩写。

(2)为全局变理取长的、描述信息多的名字,为局部变量限稍短的名字。

(3)名字太长时可以适当采用单词的缩写。但要注意缩写方式一致,要缩写就全部缩写。比如单词Number,如果在某个变量里缩写成了:

int nDoorNum;

那么最好包含Number单词的变量都缩写成Num。

(4)注意使用单词的复数形式。如

int nTotalStudents,nStudents;

nStudents容易让人理解成代表学生数目,而nStudent含义就不十分明显。

(5)对于返回值为真或假的函数,加“IS”前缀如:

int IsCanceled();

int isalpha(); //C语言标准库函数

BOOL IsButtonPushed();

1.5.2 程序的书写格式

书写格式好的程序,看起来才有好心情,谁也不愿意看下面这样的程序:

void main()

{

int t, x, y;

cin>>t;

while (t>0)

{

min=60000;

cin>>N>>x>>y>>max; plat[0].x1=x;

plat[0].x2=x; plat[0].h=y;

for (int i=1;i<=N;i++)

{

cin>>plat[i].x1>>plat[i].x2>>plat[i].h;

plat[i].t1=-1;

plat[i].t2=-1;

if (plat[i].h>y) {i--; N--; }

}

plat[0].t1=0;plat[0].t2=0;

qsort((void*)(&plat[1]), N, sizeof(plat[0]), compare);

tryway(0);

t--;

cout<

}

}

因此,如果想要让你的程序看起来赏心悦目,应该注意以下几点:

(1)正确使用缩进

首先,一定要有缩进,否则代码的层次不明显。缩进应为4 个空格较好。需要缩进时一律按Tab 键,或一律按空格键,不要有时用Tab 键缩进,有时用空格键缩进。一般开发环境都能设置一个Tab 键相当于多少个空格,此时就都用Tab 键。

(2)行宽与折行

一行不要太长,不能超过显示区域,以免阅读不便。太长则应折行,折行最好发生在运算符前面,不要发生在运算符后面。如

if(Condition1() && Condition2()

&& Condition3()) {

}

3)‘{’, ‘}’位置不可随意放置。

建议将‘{’放在一行的右边,而将‘}’单独放置一行。如:

if(condition1()) {

DoSomething();

}

比较

if(condition1())

{

DoSomething();

}

这种写法,前者既不影响可读性,又能节省一行。

但是对于函数体或结构定义的的第一个‘{’,还是单独一行更为清晰。

(4)变量和运算符之间最好加1个空格,如:

int nAge = 5;

nAge = 4;

if(nAge >= 4)

printf(“%d”, nAge);

for(i = 0; i < 100; i++);

1.5.4 一些好的编程习惯

(1)尽量不要用立即数,而用#define 或 const 定义成常量,以便以后修改。例如:#define MAX_STUDENTS 20

struct SStudent aStudents [MAX_STUDENTS];

struct SStudent aStudents [20];

好。

再例如:

#define TOTAL_ELEMENTS 100

for(i = 0; i < TOTAL_ELEMENTS; i++) {

}

(3)稍复杂的表达式中要积极使用括号,以免优先级理解上的混乱以及二义性。

n = k++ + j; //不好

n = (k++) + j; //好一点

(4)不很容易理解的表达式应分几行写:

n = (k++) + j;应该写成:

n = k + j;

k++;

(5)嵌套的if else 语句要多使用 { }

if(Condition1())

if(condition2())

DoSomething();

else

NoCondition2();

不够好,应该:

if(Condition1()) {

if(condition2())

DoSomething();

else

NoCondition2();

}

(6)单个函数的程序行数最好不要超过100 行(两个屏幕高)。

(7)尽量使用标准库函数。

(8)不要随意定义全局变量,尽量使用局部变量。

(9)保持注释与代码完全一致,改了代码别忘改注释。

(10)循环、分支层次最好不要超过5层。

(11)注释可以与语句在同一行,也可以在上行。

(12)一目了然的语句不加注释。

1.6 小结与习题

通过前几个小节的学习,对顺序结构程序设计和分支程序设计的核心概念和方法,然而对这些进行知识进行总结,并且完成适当的练习是很有必要的。

1.6.1 数据类型实验

实验A1:表达式11111*11111的值是多少?把5个1改为6个1呢?9个1呢?

解答:(1)计算表达式11111*11111的值

#include

int main(){

printf("11111*11111=%ld",11111*11111);

return 0;

}

程序的运行结果为11111*11111=123454321。

(2)计算表达式111111*111111的值

只须将(1)中的printf语句改为printf("111111*111111=%ld",111111*111111);,程序的运行结果为111111*111111=-539247567。正确的结果应为12345654321,由于这个数比较大,所以产生了溢出。

(3)计算表达式111111111*111111111的值

只须将(1)中的printf改为printf("111111111*111111111=%ld ",111111111*1111111 11);,程序的运行结果为111111111*111111111=1653732529。正确的结果应为12345678987 654321,由于这个数比较大,所以产生了溢出。

实验A2:把实验A1中的所有数换成浮点数,结果如何?

解答:(1)计算表达式11111.0*11111.0的值

#include

int main(){

printf("11111.0*11111.0=%lf",11111.0*11111.0);

return 0;

}

程序的运行结果为11111*11111=123454321.000000。

(2)计算表达式111111.0*111111.0的值

只须将(1)中的printf语句改为printf("11111*11111=%lf",11111*11111);,程序的运行结果为111111.0*111111.0=12345654321.000000。

(3)计算表达式111111111.0*111111111.0的值

只须将(1)中的printf改为printf("111111111.0*111111111.0=%lf ",111111111.0 *111111111.0);,程序的运行结果为111111111.0*111111111.0=12345678987654320.00000 0。

实验A3:表达式sqrt(-10)的值是多少?尝试用种方法输出。在计算过程中系统会报错吗?

解答:

#include

#include

int main(){

printf("sqrt(-10)=%lf",sqrt(-10));

return 0;

}

程序的运行结果为sqrt(-10)=-1.#IND,没有报错,但结果异常。

实验A4:表达式1.0/0.0、0.0/0.0的值是多少?尝试用种方法输出。在计算过程中系统会报错吗?

解答:

#include

int main(){

printf("1.0/0.0=%lf 0.0/0.0=%lf",1.0/0.0,0.0/0.0);

return 0;

}

输出结果为1.0/0.0=1.#INF 0.0/0.0=-1.#IND。在计算过程中系统会报错,提示信息为“divdide or mod by zero”。

实验A5:表达式1/0的值是多少?在计算过程中系统会报错吗?

解答:表达式1/0的值无结果。在计算过程中系统会报错,提示信息为“divdide or mod by zero”。

1.6.2 scanf输入格式实验

scanf("%d%d",&a,%b);语句用来输入两个数,可用Tab、空格、回车,作为分隔符。

实验B1:在同一行中输入12和2,并以空格分隔,是否得到了预期的效果?

解答:

#include

void main() {

int a,b;

scanf("%d%d",&a,&b);

printf("%d, %d\n",a,b);

return;

}

从键盘上输入:12 2↙,可以达到输入两个数给变量a和b的效果。

实验B2:在不同的两行中输入12和2,是否得到了预期的效果?

解答:

从键盘上输入:12↙

2↙,也可以达到输入两个数给变量a和b的效果。。

实验B3:在实验B1和B2中,在12和2的前面和后面加入大量的空格或水平制表符(TAB),甚至插入一些空行。

解答:从键盘上输入的12和2,也可以前面和后面加入大量的空格或水平制表符(TAB),甚至插入一些空行,达到输入两个数给变量a和b的效果。

实验B4:把2换成字符s,重复实验B1~B3。

解答:从键盘上输入:12 2↙,而输出的结果为12 -85899360。

1.6.3 printf语句输出实验

在printf语句中的格式字符串,决定了数据的输入/输出格式。

实验C1:仅用一条printf语句,打印1+2和3+4,用两个空行隔开。

解答:

#include

void main() {

printf("%d\n\n%d",1+2,3+4);

return;

}

实验C2:试着把%d中的两个字符(百分号和小写字)输出到屏幕。

解答:

#include

void main() {

printf("%%d\n");

return;

}

实验C3:试着把\n中的两个字符(反斜线和小写字母n)输出到屏幕。

解答:

#include

void main() {

printf("\\n");

return;

}

实验C4:像C2、C3那样也需要“特殊方法”才能输出的东西还有哪些?哪些是printf 函数引起的问题,哪些不是?

解答:输出单引号和双引号需要用\’和\"。

1.6.4 测试你的实践能力

问题1:int型整数的最小值和最大值是多少?(需要精确度)。

解答:(1)方法一

#include

#include

int main() {

int a,b;

a=-pow(2,31);

b=pow(2,31)-1;

printf("%d %d\n",a,b);

return 0;

}

注意:在TC中int型整数(2字节)的最小值和最大值分别为-32768和32767;在VC6.0中int型整数(4字节)的最小值和最大值分别为-2147483648和2147483647,所以不同的编译系统为整型数据分配的字节数是不相同的。本题程序是在VC6.0中调试的。

(2)方法二

#include

#include

int main() {

int a,b;

a=INT_MAX;

b=INT_MIN;

printf("%d %d\n",a,b);

return 0;

}

说明:头文件limits.h中定义了用于表示整数类型大小的常量(宏定义)。

(1)如果在C:盘上有TC,就可以在“c:\TC”用记事本打开头文件limits.h,可以找到“#define INT_MAX 0x7FFF”和“#define INT_MIN ((int)0x8000)”。INT_MAX表示在TC中表示最大整数,0x7FFF就是32767;INT_MIN表示在TC中表示最小整数,(int)0x8000就是-32768。

(2)如果在C:盘装有VC6.0,就可以在“C:\Program Files\Microsoft Visual Studio\VC98\Include”用记事本打开头文件limits.h,可以找到“#define INT_MIN (-2147483647-1) /* minimum (signed) int value */”和“#define INT_MAX 2147483647 /* maximum (signed) int value */”。INT_MAX表示在VC6.0中表示最大整数是2147483647;INT_MIN表示在TC中表示最小整数是-2147483648。

问题2:double型浮点数能精确到多少位小数?或者,这个问本身值得商榷?

解答:

#include

int main() {

double a;

a=123.0;

printf("%lf\n",a);

return 0;

}

double型浮点数隐含输出小数位数为6位,不过还可以通printf("%.20lf\n",a);来重新设置,.20中的20也可以换成其它的数值。

问题3:double型浮点数最大正数值和最小正数值分别是多少?

解答:

#include

int main()

{

int y = 1030;

for (double x = 0.999999999; y-- ; x *= 2) cout << x << '\t';

cout << endl;

y = 1030;

for (x = 0.000000001; y-- ; x /= 2) cout << x << '\t';

cout << endl;

return 0;

}

由程序可得,double型浮点数最大正数值和最小正数值分别是1.79769e+308、1.73832e -319。

问题4:逻辑运算符号&&、||和!(它表示逻辑非)的相对优先级是怎样的?也就是说,a&&b||c应理解成(a&&b)||c还是a&&(b||c),或者随便怎么理解都可以?

解答:逻辑运算符号&&、||和!(它表示逻辑非)的相对优先级(由高到低)是!→ &&→||。a&&b||c应理解为(a&&b)||c。

问题5:if(a) if(b) x++; else y++;的确切含义是什么?这个else应和哪个if配套?有没有办法明确表达出配套方法,以避免初学者之困惑?

解答:

if(a) if(b) x++; else y++; 可以换成以下的形式:

if(a)

if(b) x++;

else y++;

else与if的配对的原则是else一般与最近没有配对的if进行配对。实际上,如果else 与第一个if进行配对,可以采取加{}的方式进行:

if(a)

{ if(b) x++;}

else y++;

如果else与第二个if进行配对,可以采取加{}的方式进行:

if(a){

if(b) x++;

else y++;

}

以上这种加{}的方式,就不会引起歧义。

1.6.5 小结

(1)本章介绍了常见的各种数据类型,以及他们所能表达的范围;

(2)本章介绍了scanf和printf语句的使用;

(3)本章介绍了逻辑判断的使用,理解并描述复杂的逻辑判断。

(4)程序设计是一门实践性很强学科,所以在学习时,给出两点建议:重视实验、学会模仿。

1.6.6 上机练习

程序设计是一门实践性很强的学科,所以给出下面的练习。

习题1-1 平均数(average)

输入3个整数,输出它们的平均值,保留3位小数。

解答:

#include

int main() {

int a,b,c;

double d;

scanf("%d%d%d",&a,&b,&c);

d=(double)(a+b+c);

printf("%.3lf\n",d/3.0);

return 0;

}

习题1-2 温度(temperature)

输入华式温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9。

解答:

#include

int main() {

int f;

double c;

scanf("%d",&f);

c=5*(f-32)/9;

printf("%.3lf\n",c);

return 0;

}

习题1-3 连续和(sum)

输入正整数n,输出1+2+…+n的值。提示:目标是解决问题,而不是练习编程。

解答:

#include

int main() {

int n;

scanf("%d",&n);

printf("%d\n",(1+n)*n/2);

return 0;

}

注意:本题利用了等差数列的公式,而不是像平常编程时,用循环来实现。

习题1-4 余弦和正弦(sincos)

输入正整数(n<360),输出n度的正弦、余弦函数值。提示:使用数学函数。

解答:

#include

#include

int main() {

const double pi = 3.1415926;

int n; /* n是角度 */

scanf("%d",&n);

printf("sin(n)=%lf\n",sin((n/180.0)*pi));

printf("cos(n)=%lf\n",cos((n/180.0)*pi));

return 0;

}

习题1-5 距离(distance)

输入4个浮点数x1,y1,x2,y2,输出平面坐标系中点(x1,y1)和点(x2,y2)的距离。解答:

#include

#include

int main() {

double x1,x2,y1,y2;

scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);

printf("%lf\n",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));

return 0;

}

习题1-6 偶数(odd)

输入一个整数,判断它是否为偶数。如果是,则输出“yes”,否则输出“no”。提示:可以用多种方法判断。

解答:

#include

int main(){

int n;

scanf("%d",&n);

if(n%2==0){

printf("YES\n");

}

else{

printf("NO\n");

}

return 0;

}

习题1-7 打折(discount)

一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金额(单位:元),保留两位小数。

解答:

#include

int main() {

int n;

double a;

scanf("%d",&n);

a=n*95.0;

if(a<300){

printf("%.2lf\n",a);

}

else{

printf("%.2lf\n",a*0.85);

}

return 0;

}

习题1-8 绝对值(abs)

输入一个浮点数,输出它的绝对值,保留两位小数。

解答:

#include

#include

int main() {

double n;

scanf("%lf",&n);

printf("%.2lf",fabs(n));

return 0;

}

习题1-9 三角形(triangle)

输入三角形三边长度值(均无正整数),判断它是否能为直角三角形的三个边长。如果可以,则输出“yes”,如果不能,则输出“no”。如果根本无法构成三角形,则输出“not a triangle”。

解答:

#include

int main() {

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

if(a==b&&b==c) {

printf("no\n");

}

if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)) {

printf("yes\n");

}

else {

printf("no\n");

}

return 0;

}

习题1-10 年份(year)

输入年份,判断是否为闰年。如果是,则输出“yes”,否则输出“no”。提示:简单地判断除以4的余数的是不够的。

解答:

#include

int main() {

int n;

scanf("%d",&n);

if(n%4==0) {

if(n%100!=0) {

printf("no\n");

}

else {

if(n%400==0) {

printf("yes\n");

}

else{

printf("no\n");

}

}

}

else {

printf("no\n");

}

return 0;

}

布置作业

上机练习习题1-7、1-8、1-9、1-10

c语言程序设计教程第二版课后习题答案

c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 ,

C语言程序设计第四版第六章答案_谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

完整word版单片机C语言应用程序设计第五版马忠梅课后习题答案

第一章单片机由哪几部分组成?、80511可P2P0和个8位并行I/O口(其中8位中央处理器CPU、片内振荡电器及其时钟电路,4,个中断优先级)个中断源(具有2位定时器/计数器,5 用于外部存储器的扩展),2个16 全双工串行口,布尔处理器。单片机有多少个特殊功能寄存器?它们可以分为几组,各完成什么主要功能?、80512 表P7 1-3个特殊功能寄存器,在物理 上是分散在片内各功能部件中,在数218051单片机内部有答:中,以便能使用统一的直接寻址方式80H~FFH学上把它们组织在内部数据存储器地址空间来访问。这些特殊功能寄存器颁 在以下各个功能部件中:主要完;DPH两个8位寄存器组成)PSW、SP、DPTR(由DPL和(1)CPU:ACC、B、成运算和逻辑判断功能;完成中断管理IP、IE;(2)中断系统:完成 定时或者计数功能、TH1;TCOM、TL0、TH0、TL1(3)定时器/计数器:TMOD、口带有可选的纵向拓展I/O完成I/O口功能,其中部分P1P0、、P2、P3(4)并行I/O口:功能。主要完成数据的串行发送和接收SBUF、PCON5)串行口:SCON、(、决定程序执行顺序的寄存器是哪几个?它是几位寄存器?是否为特殊功能寄存器?它的3 内容是什么信息?它的内容是下一条 将要执行的不是特殊功能寄存器,它是16位寄存器,是程序计数器PC,程序的地址的用途是什么?它由哪几个特殊功能寄存器组DPTRDPTR是什么特殊功能寄存器?4、成?位)和8DPL (数据指针低是16位数据指针寄存器,它由两个8位特殊功能寄存器DPTR位地址,作地址寄存器用,可寻址外部16DPTR用于保存DPH(数据指针高8位)组成,数据存储器,也可寻址程序存储器。线?它们和单片机对外的地址总线和数据总线有什么关系?地址的引脚有多少I/O5、8051 总线和数据总线各是多少位?线可以在外扩存储器时分时复根I/OP0口8I/O8051单片机的40个引脚中有32根口线,和P3.6位地址总线,P2口作为高8用作为外部存储器的低8位地址 总线和8位数据总线,位。16位,数据总线为8P3.7分别作为外部存储器的写和读控制线。地址总线单片机堆栈的最大容量不能超过多少字8051、什么是堆栈?堆栈指针SP的作用是什么? 6 节?堆栈是数据寄存器的一部分,这一部分数据的存取是按照先入后出、后入先出的原则进行的。堆栈指针SP在启用堆栈之前是用来决定堆栈的位置。如在8051芯片复位后,SP的值为07H,则决定了堆栈从08H开始设置。修改SP值可以使堆栈设置在内部RAM的其它部分。在堆栈启 用之后,SP指向堆栈顶部,即由SP来决定数据读出和存入堆栈的地址。8051单片机内部用作 数据区的RAM的容量为128个字节,前8个字节要用来作为工作寄存器R0-R7。堆栈可以从08H开始设置直到7FH,共120个字节。但这只是最大可能的容量。一般情况下,内部RAM还要分出一部分作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。所以,8051 的堆栈区是比较小的,使用时要注意到这个限制。 8、8051内部RAM低128字节可分为几个区域?其中通用寄存器区的字节地址范围为多少?如何实现寄存器组的切换?可位寻址区的字节地址和位地址范围分别为多少? 8051内部RAM的低128字节可以分为通用寄存器区、位寻址区、便签(工作或者堆栈RAM)1 中的个字节。设置PSW区和特殊功能寄存器区。通用寄存器区的地址从00H到1FH共3212816个字节RS1可以切换当前通用寄存器组。位寻址区地址从20H到2FH共位RSO和127. 0到位,占用地址8051单片机对外有几条专用控制线?其功能是什么?9、,高电位有效,当有条专用控制线。它们是复位信号线RST一般的说法是8051单片机有4,低电平有效,当此复位信号从此线输入时,使单片机复位。访问外部存贮器控制信号EA先使用片单片机全部使用外部指令存贮器,而当此控制线为高电平时,控制线为低电平时,1000H(地址为,在4KB范围之外,才使用指令存贮器FFFFH内的4KB指令存贮器(0000H-)和外部地址锁存器允PSEN-FFFFH)。另有两条输出控制:外部程序存贮器的读选通信号。前者是低电平有效,在读外部程 序存贮器时使用。后者是高电平有效,在锁存ALE许信号P0口输出的低8位地址时使用。端必须怎样处理?为什么?10、8031的/EA为有效时,/EA访问内部ROM,当端是访问外部程序

《C语言程序设计》第三章 C语言基础 课堂笔记

页眉内容 《C语言程序设计》第三章C语言基础课堂笔记 §3.1 基本字符集、关键字和标识符 一.基本字符集 字符是C的基本元素,C语言允许使用的基本字符集: 1.26个大写字母A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2.26个小写子母a b c d e f g h I j k l m n o p q r s t u v w x y z 3.10个阿拉伯数字0 1 2 3 4 5 6 7 8 9 4.其他字符!" # % & ' ( ) * + , - . / : < = > ? [ \ ] ^ _ { | } ~ 5.空格字符以及制表符合换行符等控制字符 二.关键字(P375,附录II) C中具有固定意义的字符串。 (1) C中的关键字共32个,必须用小写字母 (2) 关键字不可用于变量名、函数名等。 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while 三.标识符 标识符用于命名变量、类型、函数和其他各种用户定义的对象,是由字母、下划线和数字三种字符组成。 (1) 第一个字符必须为字母或下划线 (2) C对标识符的长度规定为任意,Turbo C区分32 个字符 (3) C区分大小写 (4) 不允许关键字作为标识符 §3.2 C数据类型

C语言程序设计(谭浩强)第四版-课后答案

第一章程序设计和C语言【第15页】 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6 #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; }

3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } 3-2-2 #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次

c语言程序设计第五版习题答案()

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100;

a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include <> main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** *

C语言-第三章编程题

完成以下编程题,将程序源代码粘贴提交。 P.56 2.编写程序,输入圆的半径,计算并输出其周长和面积。常量pi的值取3.14159,周长和面积取小数点后2位数字。 #include #define pi 3.14159 void main() { float r,s,a; printf("请输入圆的半径"); scanf("%f",&r); s=pi*r*r; a=2*pi*r; printf("s=%.2f,a=%.2f\n",s,a); } 3.编写程序,把整数华氏温度f转换为浮点型的摄氏温度c。转换公式为c=5/9(f-32),输出要有文字说明,取2位小数。 #include void main() { int f; float c; printf("请输入华氏温度"); scanf("%d",&f);

c=5.0/9*(f-32); printf("摄氏温度为%.2f\n",c); } 4.编写程序,输入三角形的三边的边长,求三角形面积。三角形面积的计算公式为:p=(a+b+c)/2 ,S=sqrt(p(p-a)(p-b)(p-c))。 #include #include void main() { float a,b,c,S,p; printf("请输入三角形三边长\n"); scanf("%f%f%f",&a,&b,&c); p=(a+b+c)/2.0; S=sqrt(p*(p-a)*(p-b)*(p-c)); printf("S=%f\n",S); } 6.编写程序,输入一个小写字母,输出其对应的大写字母。 #include void main() { char c; printf("请输入一个小写字母\n"); scanf("%c",&c);

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } 3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;

标准C语言程序设计第五版课后练习题答案

课后练习题答案 Chapter 1 1.1×√×√√×√××√ 1.2b c 1.3ad 1.4semicolon printf math、h \n Chapter 2 2、1 ×√××√√×√××√× 2、2 typedef 255 external const Chapter 3 3、1 ×√××√√×××√√√ 3、2 integer modula 6 logical sizeof paratheses typeconversion precedence 3、3 F F T F F F 3、4 F T T T F 3、5 (b) (c) 3、6 0 -2 7 10、25 false 3 3 1 3、10 0 1 1 1 1 3、11 d } 100 3、12 110 111 3、13 1 3、14 200 3、15 x<=y 3、16 TRUE 3、19 2 1 4 3、20 -40 40 Chapter 4 4、1 ×√√√√√××√√√× 4、2 %hd %x ctype、h %l %*d [^] blank 6 - %e 4、4 (a) scanf(“%d %c %d”, &a, &b, &c); (b)scanf(“%d %f %s”, &a, &b, &c); (c) scanf(“%d-%d-%d”, &a, &b, &c); (d) scanf(“%d %s %d”, &a, &b, &c);

4、5 (a)10x1、230000 (b)1234x 1、23 (c)1234 456、000000 (d) “123、40 ” (e) 1020 1222(乱码) 4、7 (a)1988 x (b)乱码 (c)120 乱码 (d)乱码 x 4、8 (a)1275 -23 5、740000 (b) 1275 -235、740000 (c) 0 0、000000 (d) 1275xxxx-235、74 (e)Cambridge (f)1275 Cambridge 4、10 1988 无无 Chapter 5 5、1 √×√××××××√ 5、2 && switch break if-else x=y 5、4 (a)x = 2; y = 0; (b) x = 1; y = 0; 5、5 (a) if (grade <= 59) if (grade >= 50) second = second + 1; (b) if (number > 100) printf(“out of range”); else if (number < 0) printf(“out of range”); else sum = sum + number; (c) if (T > 200) printf(“admitted”); else if (M > 60) {if (M > 60) printf(“admitted”);} else printf(“not admitted”); 5、6 F T F T 5、8 (a) x > 10 (b) (x != 10)||(y ! = 5) || (z >= 0) (c) (x + y != z) || (z > 5) (d) (x > 5) || (y != 10) || (z >= 5) 5、9 (a) x = 5; y = 10; z = 1 (b) x = 5; y = 10; z = 1 (c) x = 5; y = 0; z =0 (d) 无变化 5、10 (a) x= 0; y = 2; z = 0; (b) x = 1; y = 2; z = 0; 5、12 8 5、13 Delhi Bangalore END 5、14 2 4 4 8 5、15 0 0 2 5、16 25 5、17 Number is negative 5、18 ABC

二级c语言程序设计习题及解答ch1-3

12)计算机能直接执行的程序是(B )。 A)源程序B)目标程序C)汇编程序D)可执行程序 13)以下叙述中正确的是( D ) A)程序设计的任务就是编写程序代码并上机调试 B)程序设计的任务就是确定所用数据结构 C)程序设计的任务就是确定所用算法 D)以上三种说法都不完整 例年真题: #include main() { Int a; A=5; /*给A变量赋值5 A+=3; 再赋值后再加3*/ Printf(“%d”,a); } (11)以下叙述中正确的是( C )。 A)C 程序的基本组成单位是语句B)C 程序中的每一行只能写一条语句 C)简单C 语句必须以分号结束D)C 语句必须在一行内写完 (11)以下叙述中正确的是( C ) A)C程序中的注释只能出现在程序的开始位置和语句的后面 B)C程序书写格式严格,要求一行内只能写一个语句 C)C程序书写格式自由,一个语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中 (12)以下选项中,能用作用户标识符的是( C ) A)void B)8_8 C)_0_ D)unsigned 【解析】A:关键字不可以B:不以数字开头C:正确D:关键字 (13)以下选项中合法的标识符是( C ) A)1-1 B)1—1C)-11D)1— 【解析】A:不以数字开头,出现非法字符-而不是_ B:不以数字开头,非法字符C:正确D: 不以数字开头,出现非法字符 (14)以下选项中不合法的标识符是( C ) A)print B)FOR C)&a D)_00 【解析】C:出现非法字符& (15)以下选项中,能用作数据常量的是( D ) A)o115 B)0118 C)1.5e1.5D)115L

C语言程序设计第四版第七章答案-谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=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=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

c语言程序设计第三章课后答案

/*习题3 2*/ #include main() { int rate; double salary,tax; printf("enter salary:\n"); scanf("%lf",&salary); if(salary<=850) rate=0; else if(salary>850&&salary<=1350) rate=5; else if(salary>1350&&salary<=2850) rate=10; else if(salary>2850&&salary<=5350) rate=15; else rate=20; tax=rate*(salary-850)/100; printf("tax=%.2lf\n",tax); } /*习题3 4*/ #include main() { int n,i,A=0,B=0,C=0,D=0,E=0; double grade,sum=0,ave; printf("enter n:\n"); scanf("%d",&n); printf("enter n ge grade\n"); for(i=1;i<=n;i++) { scanf("%lf",&grade); sum=sum+grade; if(grade>=90&&grade<=100) A=A+1; else if(grade>=80&&grade<=89) B=B+1; else if(grade>=70&&grade<=79) C=C+1; else if(grade>=60&&grade<=69) D=D+1; else E=E+1;

C语言程序设计(第二版)习题参考答案

C语言程序设计习题参考答案 习题1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F 2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题

大学生C语言程序设计(第四版 谭洪强)实验5答案

实验四参考答案(参考答案) (1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。 算法分析: 对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i; 参考答案: #include int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) sum=sum+a[i][i]+a[i][2-i]; //a[i][i]当前行的主对角线元素 //a[i][2-i]当前行的反对角线元素printf("矩阵的正、反对角线元素之和为:%d\n",sum); return 0; } 运行结果: (2) 设计程序sy5-2.c,找出一个3×4的矩阵中的最小值及其位置。 算法分析: 首先把二维数组中的第一个数即a[0][0]看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。 参考答案: #include #include int main() { int a[3][4]={{10,21,41,5},{12,15,46,35},{40,21,26,30}}; int i,j,row,colum,min; printf("数组a:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%5d",a[i][j]);

printf("\n"); } min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数 for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j] for(j=0;j<4;j++) if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小 {min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum); return 0; } 运行结果: (3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为 | 1 9 7 |则程序运行后a数组中的值应为| 3 9 7 | | 2 3 8 | | 6 9 8 | | 4 5 6 | | 12 15 18 | 算法分析: 主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,---,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个a[i][j],并给a[i][j]赋值为他的n倍。最后输出矩阵。 参考答案: #include #include int main() { int a[3][3]; int i,j,n; printf("原来a的值:"); for(i=0;i<3;i++) //生成数组元素,并按矩阵形式输出 { for(j=0;j<3;j++) {a[i][j]=rand()%20; //rand()参看教材385页 //rand()%20 产生一个20以内的整数

c语言详解(第五版)第三章程序设计项目答案

c语言详解(第五版)第三章程序设计项目答案 1.假设买一辆车首付为500dollar。请计算月供。 #include #include #include int main(void) {double capital_sum,monthly_interest_rate,initial_payment,temp,payment,terms; printf("Please enter the price of the car>>"); scanf("%lf",&capital_sum); printf("Please enter the monthly interest rate>>"); scanf("%lf",&monthly_interest_rate); printf("Please enter the terms duration of loan>>"); scanf("%lf",&terms); printf("Please enter the initial_payment>>"); scanf("%lf",&initial_payment); temp=1+monthly_interest_rate; payment=(capital_sum-500)*monthly_interest_rate/(1-pow(temp,-terms)); printf("The monthly contribution is %.2f dollars.",payment); printf("The capital sum is %.2f dollars.",capital_sum); system("pause"); return 0; } 2.编写两个函数,一个显示三角形,另一个显示矩形。 #include #include #include void draw_triangle(void); void draw_rectangle(void); int main(void) {draw_triangle(); draw_rectangle(); system("pause"); return 0; } /*Draw an triangle.*/ void draw_triangle(void) { printf(" /\\ \n"); printf(" / \\ \n"); printf(" / \\ \n"); printf(" / \\ \n"); printf(" -------- \n"); } void draw_rectangle(void)

C语言程序设计(第3版)第3章习题参考答案

习题三参考答案 (1)从键盘输入一个年份值,判断是否闰年。设iYear为某一年份,iYear为闰年的条件为:iYear可以被4整除且不可以被100整除,或者iYear可以被400整除。 #include "Stdio.h" #include "Conio.h" int main(void) { int iYear; printf("please input the year:"); scanf("%d",&iYear); if(iYear%400==0||(iYear%4==0&&iYear%100!=0)) printf("%d is leap",iYear); else printf("%d is not leap",iYear); getch(); return 0; } (2)从键盘输入三个整数,按由小到大的顺序输出。 #include "stdio.h" main() {int i,j,k,max; scanf("%d%d%d",&i,&j,&k); max=i>j?i:j; max=max>k?max:k; printf("max=%d",max); getch(); } (3)假设星期一至星期五每工作一小时的工资是20元,星期六和星期日每工作一小时的工资是平时的3倍,其中工资的4.5%是税金。试编一程序从键盘输入星期序号(1,2,3,4,5,6,7,分别表示星期一至星期天)和工作小时数,计算该日的工资及应交税金。 #include "Stdio.h" #include "Conio.h" int main(void) { int iWeek,iHours ; float fSalary,fTaxes;

相关文档
最新文档