华南理工《高级语言程序设计C++》平时作业Word格式文档下载.docx
《华南理工《高级语言程序设计C++》平时作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《华南理工《高级语言程序设计C++》平时作业Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
a+=2;
a+b<
'
\t'
主函数循环4次调用fun();
fun()函数内定义了静态局部变量a,所以a的值会保持到下一次调用。
结果为:
4,6,8,10
3.#include<
intfun(intn)
{if(n==0)return1;
return2*fun(n-1);
{inta=5;
cout<
fun(a)<
fun()函数用递归求出2的n次方,结果为:
32
4.#include<
{char*cp="
word"
for(inti=0;
4;
cp+i<
'
主函数
4次循环中,
第一次输出
cp+i
,此时cp指向“word”的第一个字符,所以输出“word”,
cp
:
word
ord
rd
d
二、.根据程序功能填空。
1.程序把10个数存到一数a中,并求数中最大。
{intmax;
inta[10]={76,55,95,87,85,83,65,90,77,85};
int*p=
a
max=*p;
for(;
p<
&
a[10]
p++)
if(*p>
max)max=
*p
"
max="
max<
2.下面程序的功能是出
1至100之每位数字的乘大于每位数的和的数。
例如,
45两位
数字的乘
4×
5=20,和4+5=9。
{intn,k=1,s=0,m;
for(n=1;
n<
=100;
n++){k=1;
s=0;
m=n;
while(m>
{k*=m%10;
s+=m%10;
m=m/10
)
if(k>
s)cout<
n<
3.程序入的
n求
s=1+1/2
3+1/3
3+
⋯
+1/n
3。
{doubles;
inti,n;
n="
cin>
>
n;
s=0;
for(i=1;
n
s=s+/(i*i*i)
s="
s<
4.函数create从键盘输入整数序列,
structnode{intdata;
node*next;
};
node*create()
{
node*head,*p,*q;
p=newnode;
head=p;
cin>
p->
data;
while(p)
q=p;
p=->
data;
q->
next=p;
if(head==p)head=NULL;
elsep=0;
returnhead;
5.以下程序求方程的全部整数解:
i++)
以输入0为结束。
按输入顺序建立单向链表并返回表头。
3x+2y-7z=5(0≤x,y,z≤100)
{intx,y,z;
for(x=0;
x<
x++)for(y=0;
y<
y++)
{if((z=3*x+2*y-5)%7)
continue;
z=z/7;
//求出z的值
if(z>
=0&
z<
100)//检查z的范围
cout<
x="
<
x<
y="
y<
z="
z<
endl;
三、程序设计
1.编写函数输出以下形状的图形,其中构成图形的数字和输出的行数通过参数传送。
1
222
33333
4444444
答:
voidPrintFigure(intnum,introw){
inti,j,k;
num=num-row+1;
for(i=1;
i<
=row;
i++){
j=2*i-1;
for(k=1;
k<
=j;
k++)cout<
num<
num++;
2.请编程序,输入两个正整数啊a和b(a<
b),输出a、b之间所有整数的因数(除每行输出数据不超过10个。
例如,若输入a为6,b为8,则输出格式要求如下:
1和本身)。
thefactorsof6:
23
thefactorsof7:
nofactor
thefactorsof8:
24
#include<
voidout(inta,intb){
inti,j,count;
for(i=a;
=b;
count=0;
printf("
\nthefactorof%d\n"
i);
for(j=2;
j<
i;
j++){
if(i%j==0){
%s%d"
(count==0?
"
),j);
count++;
if(count==0)printf("
nofactor"
);
3.请编程序,例如:
5是25
找出1至99之间的全部同构数。
同构数是这样一组数:
它出现在平方数的右边。
右边的数,25是625右边的数,所以5和25都是同构数。
iostream>
usingnamespacestd;
voidmain(){
k=10;
=99;
if(i==k)k*=10;
j=i*i;
if(j%k==i)
4.编写一个程序,实现如下功能:
(1)从键盘输入aopb。
其中a,b为数值;
op为字符,限制为+、-、*、/。
(2)调用函数count(op,a,b),计算表达式aopb的值。
由主函数输出结果。
#include"
stdafx.h"
#include<
classcal{public:
intadd(intx,inty)//加法定义函数{returnx+y;
}
intsub(intx,inty)//减法定义函数{returnx-y;
intmul(intx,inty)//乘法定义函数{returnx*y;
intdiv(intx,inty)//除法定义函数{if(y==0)
0不能作除数"
elsereturnx/y;
}};
intmain(){
calc;
//定义对象intx,y;
charID;
请输入要计算的两个数及运算符,中间用空格隔开比如23+"
x>
y>
ID;
switch(ID){case'
+'
c.add(x,y)<
break;
case'
-'
c.sub(x,y)<
*'
c.mul(x,y)<
/'
c.div(x,y)<
};
return0;
5.编写一个程序,实现如下功能:
(1)输入k(<
100)个整数到数组x[100]中;
(2)计算k个数的平均值及大于平均值的元素个数。
voidmain(){
Intx[100],k,i,n;
Doublesum=0.0,ave;
HowmanyData?
\n"
k;
for(i=0;
i++){cin>
x[i];
sum+=x[i];
ave=sum/k;
n=0;
i++)//求大于平均值的元素个数if(x[i]>
ave)n++;
average="
ave<
Thereare"
elementslargethanaverage.\n"
6.定义函数
voidreversion(intary[],intsize);
逆置数组ary的元素。
例如实参数组原来为[1,5,3,2,6,8,9,4]
reversion后变成为[4,9,8,6,2,3,5,1]。
,调用函数
voidreversion(intary[],intsize)
inttemp;
for(inti=0;
size/2;
temp=ary[i];
ary[i]=ary[size-1-i];
ary[size-1-i]=temp;
7.数组a包含
b[i]=a[i]/a[i-1],
50个整数,把a中所有的后项除以前项之商取整后存入数组
并且b[0]=a[0]/a[49]),最后按每行5个元素的格式输出数组
b。
b(即
#include<
stdio,h>
voidmain()
inta[50],b[5],i,,j;
printf("
请输入50个数"
for(i=0;
50;
i++);
scanf("
%d"
&
a[i]);
for(i=9;
i>
0;
i-2)
for(j=0;
j<
j++)b[j]=a[i]%a[i-1];
for(j=0;
j++)for(i=1;
i++)printf("
b[i];
8.编程输出所有不超过100的其平方具有对称性质的正整数(也称回文数)。
输出格式如下:
numbersquare
11
24
39
11121
22484
26676
stdio.h>
Intmain<
void>
Intj=0;
For(i=0;
100;
j++)If(m[j]!
=m[i])Break;
If(j>
=i)Printf(n,n*n);
Returno;
9.编写程序,打印如下杨辉三角。
121
1331
14641
iomanip>
constintm=5;
inta[m][m];
m;
a[i][0]=1;
a[i][i]=1;
for(intj=2;
j++)
for(intk=1;
k<
j;
k++)a[j][k]=a[j-1][k-1]+a[j-1][k];
setw(m-i);
for(intj=0;
=i;
j++)cout<
a[i][j]<
10.定义一个函数,计算长度为k的整型数组元素的平均值及大于平均值的元素个数。
调用函
数的语句为:
count(a,k,ave,num);
其中a是数组名,k是数组元素个数,ave返回的平均值,num返回大于平均值的元素个数。
count(a,k,&
ave,&
num)
intcount=0,sum=0;
inti;
for(i=0;
a;
i++){sum+=a[i];
ave=(float)sum/(float)a;
if(a[i]>
ave)count++;
num=count;