华南理工《高级语言程序设计C++》平时作业.docx

上传人:b****6 文档编号:13055127 上传时间:2023-06-10 格式:DOCX 页数:12 大小:18.33KB
下载 相关 举报
华南理工《高级语言程序设计C++》平时作业.docx_第1页
第1页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第2页
第2页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第3页
第3页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第4页
第4页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第5页
第5页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第6页
第6页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第7页
第7页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第8页
第8页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第9页
第9页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第10页
第10页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第11页
第11页 / 共12页
华南理工《高级语言程序设计C++》平时作业.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

华南理工《高级语言程序设计C++》平时作业.docx

《华南理工《高级语言程序设计C++》平时作业.docx》由会员分享,可在线阅读,更多相关《华南理工《高级语言程序设计C++》平时作业.docx(12页珍藏版)》请在冰点文库上搜索。

华南理工《高级语言程序设计C++》平时作业.docx

华南理工《高级语言程序设计C++》平时作业

一、分析程序,写输出结果

1.#include

#include

voidmain()

{intm,k,i;

for(m=1;m<=10;m+=2)

{k=m/3;

for(i=2;i<=k;i++)

if(m%i)cout<

}

}

解:

m的取值为1,3,5,7,9对应k的取值为0,1,1,2,3,第二个for循环:

只有当k=2和k=3时才执行,当k=2,i=2,m%i等于1为真,输出m为7当k=3,i=2,m%i等于1为真,输出m为9,i=3,m%i等于0为假,无输出结果为:

79

2.#include

voidfun();

voidmain()

{inti;

for(i=1;i<5;i++)fun();

cout<

}

voidfun()

{staticinta;

intb=2;

a+=2;

cout<

}

解:

主函数循环4次调用fun();fun()函数内定义了静态局部变量a,所以a的值会保持到下一次调用。

结果为:

4,6,8,10

3.#include

intfun(intn)

{if(n==0)return1;

return2*fun(n-1);

}

voidmain()

{inta=5;

cout<

}

解:

fun()函数用递归求出2的n次方,结果为:

32

4.#include

voidmain()

{char*cp="word";

for(inti=0;i<4;i++)

cout<

}

解:

主函数4次循环中,第一次输出cp+i,此时cp指向“word”的第一个字符,所以输出“word”,之后cp依次往后移一个位置,输出此位置及后面的字符结果为:

wordordrdd

二、.根据程序功能填空。

1.程序把10个数存储到一维数组a中,并求该数组中最大值。

#include

voidmain()

{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;

cout<<"max="<

}

2.下面程序的功能是输出1至100之间每位数字的乘积大于每位数的和的数。

例如,45两位数字的乘积为4×5=20,和为4+5=9。

#include

voidmain()

{intn,k=1,s=0,m;

for(n=1;n<=100;n++)

{k=1;s=0;

m=n;

while(m>0)

{k*=m%10;

s+=m%10;

m=m/10;

}

if(k>s)cout<

}

}

3.程序对输入的n求s=1+1/23+1/33+…+1/n3。

#include

voidmain()

{doubles;inti,n;

cout<<"n=";cin>>n;

s=0;

for(i=1;i

s=s+/(i*i*i);

cout<<"s="<

}

4.函数create从键盘输入整数序列,以输入0为结束。

按输入顺序建立单向链表并返回表头。

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;

cin>>p->data;

}

if(head==p)head=NULL;

elsep=0;

;

returnhead;

}

5.以下程序求方程的全部整数解:

3x+2y-7z=5(0≤x,y,z≤100)

#include

voidmain()

{intx,y,z;

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

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

{if((z=3*x+2*y-5)%7)

continue;

z=z/7;//求出z的值

if(z>=0&&z<100)//检查z的范围

cout<<"x="<

}

}

三、程序设计

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<

}

}

2.请编程序,输入两个正整数啊a和b(a

每行输出数据不超过10个。

例如,若输入a为6,b为8,则输出格式要求如下:

thefactorsof6:

23

thefactorsof7:

nofactor

thefactorsof8:

24

答:

#include#include

voidout(inta,intb){

inti,j,count;

for(i=a;i<=b;i++){

count=0;

printf("\nthefactorof%d\n",i);

for(j=2;j

if(i%j==0){

printf("%s%d",(count==0?

"":

","),j);

count++;

}

}

if(count==0)printf("nofactor");

}

}

3.请编程序,找出1至99之间的全部同构数。

同构数是这样一组数:

它出现在平方数的右边。

例如:

5是25右边的数,25是625右边的数,所以5和25都是同构数。

答:

#includeusingnamespacestd;

voidmain(){

inti,j,k;k=10;

for(i=1;i<=99;i++){

if(i==k)k*=10;

j=i*i;

if(j%k==i)

cout<

}

cout<

}

4.编写一个程序,实现如下功能:

(1)从键盘输入aopb。

其中a,b为数值;op为字符,限制为+、-、*、/。

(2)调用函数count(op,a,b),计算表达式aopb的值。

由主函数输出结果。

答:

#include"stdafx.h"#includeusingnamespacestd;

classcal{public:

intadd(intx,inty)//加法定义函数{returnx+y;}

intsub(intx,inty)//减法定义函数{returnx-y;}

intmul(intx,inty)//乘法定义函数{returnx*y;}

intdiv(intx,inty)//除法定义函数{if(y==0)

cout<<"0不能作除数"<

intmain(){

calc;//定义对象intx,y;

charID;

cout<<"请输入要计算的两个数及运算符,中间用空格隔开比如23+"<>x>>y>>ID;

switch(ID){case'+':

cout<

break;

case'-':

cout<

break;

case'*':

cout<

break;

case'/':

cout<

return0;}

5.编写一个程序,实现如下功能:

(1)输入k(<100)个整数到数组x[100]中;

(2)计算k个数的平均值及大于平均值的元素个数。

答:

#includevoidmain(){

Intx[100],k,i,n;

Doublesum=0.0,ave;

cout<<"HowmanyData?

\n";

cin>>k;

for(i=0;i>x[i];sum+=x[i];

}

ave=sum/k;

n=0;

for(i=0;iave)n++;cout<<"average="<

cout<<"Thereare"<

}

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;i

{

temp=ary[i];

ary[i]=ary[size-1-i];

ary[size-1-i]=temp;

}

}

7.数组a包含50个整数,把a中所有的后项除以前项之商取整后存入数组b(即b[i]=a[i]/a[i-1],并且b[0]=a[0]/a[49]),最后按每行5个元素的格式输出数组b。

答:

#includevoidmain()

{

inta[50],b[5],i,,j;

printf("请输入50个数");

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

scanf("%d",&a[i]);

for(i=9;i>0;i-2)

{

for(j=0;j<5;j++)b[j]=a[i]%a[i-1];

}

for(j=0;j<5;j++)for(i=1;i<5;i++)printf("%d",b[i];

printf("\n");

}

8.编程输出所有不超过100的其平方具有对称性质的正整数(也称回文数)。

输出格式如下:

numbersquare

11

24

39

11121

22484

26676

答:

#include

Intmain

Intj=0;

For(i=0;j<100;j++)If(m[j]!

=m[i])Break;If(j>=i)Printf(n,n*n);

}

Returno;

}

9.编写程序,打印如下杨辉三角。

1

11

121

1331

14641

答:

#include

#includeusingnamespacestd;

voidmain()

{

constintm=5;inta[m][m];

for(inti=0;i

{

a[i][0]=1;a[i][i]=1;

}

for(intj=2;j

{

for(intk=1;k

}

for(inti=0;i

{

cout<

for(intj=0;j<=i;j++)cout<

cout<

}

}

10.定义一个函数,计算长度为k的整型数组元素的平均值及大于平均值的元素个数。

调用函数的语句为:

count(a,k,ave,num);

其中a是数组名,k是数组元素个数,ave返回的平均值,num返回大于平均值的元素个数。

答:

#include

count(a,k,&ave,&num)

{

intcount=0,sum=0;

inti;

for(i=0;i

}

ave=(float)sum/(float)a;

for(i=0;i

{

if(a[i]>ave)count++;

}

num=count;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2