大学C,C++语言习题答案(1-5章)南华大学

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题答案
习题1(参考答案)
1.程序与算法的概念及二者的区别是什么?
程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。

算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。

通俗地讲,就是计算机解题的步骤。

算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。

2.简述程序设计语言发展的过程
程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。

一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。

3.简述高级程序设计语言中面向过程与面向对象的概念。

“面向过程”是一种以过程为中心的编程思想。

首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。

一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。

“面向对象”是一种以事物为中心的编程思想。

面向对象的方法主要是将事物对象化,对象包括属性与行为。

面向过程与面向对象的区别:在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。

编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。

4.C语言程序的特点是什么?
(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。

(2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。

(3)数据类型丰富。

C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。

(4)用C语言可直接访问物理地址,能进行二进制位运算等操作,即可直接同机器硬件打交道。

它具有“高级语言”和“低级语言”的双重特征,既能用于系统软件程序设计,又能用于通用软件程序设计。

(5)C语言生成的目标代码质量高、程序执行速度快。

一般只比用汇编语言生成的目标代码的效率低20%左右。

(6)可移植性好。

5.源程序执行过程中,有哪些步骤?
C语言源程序的执行要经过:编辑、编译、链接、运行等步骤。

6.简述MATLAB的主要应用领域有哪些?
MATLAB软件是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司开发的商业数学软件,主要包括MA TLAB和Simulink两大部分。

它和Mathematica、Maple并称为三大数学软件。

MA TLAB软件可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域,代表了当今国际科学计算软件的先进水平。

习题2(参考答案)
一、选择题
二、填空题
习题 3 (参考答案)
1.编程实现:用字符输入/输出函数输入3个字符,将它们反向输出。

参考代码(尽量运用本章所学知识)
#include <stdio.h>
main( )
{ char c1,c2,c3;
c1=getchar(); c2=getchar(); c3=getchar();
putchar(c3); putchar(c2); putchar(c1);
}
2.编程实现:用格式输入/输出函数输入3个字符,将它们反向输出并输出它们的ASCII值。

参考代码(尽量运用本章所学知识)
#include <stdio.h>
main( )
{ char c1,c2,c3;
scanf ("%c%c%c", &c1, &c2, &c3) ;
printf("%c %d,%c %d,%c %d ", c3,c3,c2,c2,c1,c1) ;
}
3.变量k为float 类型,调用函数:
scanf("%d", &k);
不能使变量k得到正确数值的原因是:
scanf("%d", &k);中的格式控制类型与变量k的定义类型不匹配,应将%d改为%f.
习题4答案
选择题
1.B 2 .A 3 .B 4.B 5.C 6.B
阅读程序,写结果
7.12 8.13 9. *0**2*
10
if(s>=90)
m=4;
else if(s>=80)
m=3;
else if(s>=70)
m=2;
else if(s>=60)
m=1;
else
m=0;
11有4个整数a,b,c,d,编写程序按大小输出
#include<stdio.h>
main()
{ int a,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a<b) {t=a;a=b;b=t;}
if(a<c) {t=a;a=c;c=t;}
if(a<d) {t=a;a=d;d=t;}
if(b<c) {t=b;b=c;c=t;}
if(b<d) {t=b;b=d;d=t;}
if(c<d) {t=c;c=d;d=t;}
printf("%4d%4d%4d%4d",a,b,c,d);
}
12据所输入的3条边长值,判断它们能否构成三角形,如能构成,再判断是等腰三角形、直角三角形还是一般三角形。

源程序:
#include<stdio.h>
#include "math.h"
main()
{float a,b,c,s,area;
scanf("%f%f%f",&a,&b,&c);
if((a+b>c)&&(a+c>b)&&(b+c>a)&&(fabs(a-b)<c)&&(fabs(a-c)<b)&&(fabs(b-c )<a))
{
if(a==b&&b==c)
printf("等边三角形");
else if(a==b||b==c||a==c)
printf("等腰三角形");
else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
printf("直角三角形");
else printf("一般三角形");
}
else printf("不能组成三角形");
}
13 输入一个整数,如果能被3,4,5同时整除,则输出“YES”,否则输出“NO”。

#include<stdio.h>
main()
{ int t,flag;
scanf("%d",&t);
if(t%3==0&&t%4==0&&t%5==0)
printf("YES");
else
printf("NO");
}
14年号,判断是否为闰年。

判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。

#include<stdio.h>
main()
{ int year;
printf("input the year:");
scanf("%d",&year);
if(year%4==0&&year%100!=0||year%400==0)
printf(" %d is leap year\n",year);
else
printf(" %d is't leap year\n",year);
}
15下面程序根据以下函数关系,对输入的每个x值,计算出y值。

请分析程序填空。

#include<stdio.h>
main()
{ double x,y;
scanf("%lf",&x); if(x>10) y=3*x+10; else if(x>1) y=x*x+2*x; else y=x*x-3*x+10; printf(" %lf \n",y); }
习题5答案
选择题
1. D 2 .A 3 . D 4.C 5. D 6.A 7 .D 8 .D 9 .B 10 .C 阅读程序,写结果
11 .1 -2 12 .2 0 13 .*** 14 .2,4,6,8,10, 15 .46.000000 16 .852
17.利用公式...
7
151311+-+-
=4
π
公式求π。

#include<stdio.h>
#include<math.h> main()
{double pi=0,i=1,j=1,k; do{
k=i/j; pi=pi+k; i=-i; j=j+2;
}while (fabs(k)>1.0e-6); printf("pi is %lf",4*pi); }
18.求两个数的最大公约数和最小公倍数。

最大公约数:用大数整除小数,得到余数1; 再用小数整除余数1,得到余数2;再用余数1整除余数2,……直到余数为0。

最小公倍数:两数相乘再除以最大公约数。

#include<stdio.h> #include<math.h> main()
{ int m,n,r,x,y;
scanf("%d%d",&m,&n);
x=m;
y=n;
if (m<n) {r=m;m=n;n=r;}
while( (r=m%n)!=0)
{ m=n;
n=r;
}
printf(" the max common divisor is %d,the min common multiple is %d",n,x*y/n); }
19.从三个红球、五个白球、六个黑球中任意取出六个球,且其中必须有白球,编程输出所
有可能的组合。

#include<stdio.h>
main()
{int i,j,k;
printf("\n hong bai hei\n");
for(i=0;i<=3;i++)
for(j=1;j<=5;j++)
{k=6-i-j;
if(k>=0) printf(" %3d %3d %3d\n",i,j,k);
}
}
20.如果一个数等于其所有真因子(不包括该数本身)之和,则该数为完数。

例如:6的真
因子有1、2、3,且6=1+2+3,故6为完数。

求[2,1000]内的:
(1)最大的完数;(2)完数数目。

#include<stdio.h>
main()
{int a,i,m,number=0,max=0;
for(a=1;a<=1000;a++)
{ m=0;
for(i=1;i<=a/2;i++)
if(a%i==0) m=m+i;
if(m==a) { number++,max=m;}
}
printf("number is %d,max is %d\n",number,max);
}。

相关文档
最新文档