华南理工《高级语言程序设计C++》平时作业.docx
- 文档编号:9561556
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:16
- 大小:18.79KB
华南理工《高级语言程序设计C++》平时作业.docx
《华南理工《高级语言程序设计C++》平时作业.docx》由会员分享,可在线阅读,更多相关《华南理工《高级语言程序设计C++》平时作业.docx(16页珍藏版)》请在冰豆网上搜索。
华南理工《高级语言程序设计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 : word ord rd d 二、.根据程序功能填空。 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/2 3+1/3 3+ ⋯ +1/n 3。 #include voidmain() {doubles;inti,n; cout<<"n=";cin>>n; s=0; for(i=1;i s=s+/(i*i*i) cout<<"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; cin>>p->data; } if(head==p)head=NULL; elsep=0; ; returnhead; } 5.以下程序求方程的全部整数解: ;i++) ; 以输入0为结束。 按输入顺序建立单向链表并返回表头。 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 例如,若输入a为6,b为8,则输出格式要求如下: 1和本身)。 thefactorsof6: 23 thefactorsof7: nofactor thefactorsof8: 24 答: #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.请编程序,例如: 5是25 找出1至99之间的全部同构数。 同构数是这样一组数: 它出现在平方数的右边。 右边的数,25是625右边的数,所以5和25都是同构数。 答: #include 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"#include 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+"< cin>>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个数的平均值及大于平均值的元素个数。 答: #include Intx[100],k,i,n; Doublesum=0.0,ave; cout<<"HowmanyData? \n"; cin>>k; for(i=0;i } ave=sum/k; n=0; for(i=0;i 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包含 b[i]=a[i]/a[i-1], 50个整数,把a中所有的后项除以前项之商取整后存入数组 并且b[0]=a[0]/a[49]),最后按每行5个元素的格式输出数组 b。 b(即 答: #include { 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 #include 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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级语言程序设计C+ 华南理工 高级 语言程序设计 平时 作业