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

2018-10-22 22:59

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

1 1 2 4 3 9 11 121 22 484 26 676 答:

#include Int main Int j=0;

For (i=0;j<100;j++) If (m[j]!=m[i]) Break; If (j>=i) Printf(n,n*n); }

Return o; }

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

1 1 1

1 2 1

1 3 3 1 1 4 6 4 1

答:

#include

#include using namespace std;

void main() {

const int m = 5; int a[m][m]; for(int i = 0; i < m; i++) {

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

for(int j = 2; j < m; j++) {

for(int k = 1; k < j; k++) a[j][k] = a[j-1][k-1] + a[j-1][k]; }

for(int i = 0; i < m; i++) {

cout<

for(int j = 0; j <= i; j++) cout<< a[i][j] <<\ cout<

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

count(a,k,ave,num);

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

答:

#include count(a,k,&ave,&num) {

int count = 0,sum = 0; int i;

for(i = 0; i < a; i++) { sum += a[i]; }

ave = (float)sum / (float)a; for(i = 0; i < a; i++) {

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

num = count;

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

1. #include

201709#include void main() {int m, k, i ;

for( m=1; m<=10; m+=2 ) { k = m/3;

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

if( m%i ) cout << m << \ } }

解: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为假,无输出 结果为: 7 9

2. #include

void fun(); void main() {int i;

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

void fun() { static int a; int b=2; a += 2 ;

cout<< a+b <<'\\t'; }

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

3. #include

int fun(int n) { if(n==0) return 1; return 2*fun(n-1); }

void main()

{ int a=5;

cout<

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

4. #include

void main() { char *cp=\

for (int i=0 ; i<4; i++ ) cout<

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

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

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

#include void main() { int max;

int a[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<<\}

2.下面程序的功能是输出1至100之间每位数字的乘积大于每位数的和的数。例如,45两位数字的乘积为4×5=20,和为4+5=9。

#include void main()

{ int n, k=1, s=0, m; for(n=1; n<=100; n++) { k=1; s=0;

m=n ;

}

while( m>0 ) { k*=m; s+=m;

m=m/10 ; }

if(k>s) cout<

}

3.程序对输入的n求s = 1 + 1/23 + 1/33 + ? + 1/n3 。 #include void main()

{double s; int i, n; cout<<\ s = 0;

for (i=1; i

4.函数create从键盘输入整数序列,以输入0为结束。按输入顺序建立单向链表并返回表头。

struct node{int data; node * next;};

node * create()

{

node *head, *p, *q; p = new node; head = p; cin>>p->data;

while( p ) {

q = p;

p=->data ; q->next = p; cin>>p->data; }

if (head == p) head = NULL;

else p=0 ; ; return head; }

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

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

#include void main() { int x, 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=z/7 ;

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

三、程序设计

1. 编写函数输出以下形状的图形,其中构成图形的数字和输出的行数通过参数传送。

1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 4

答: void PrintFigure(int num, int row) { int i, 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

the factors of 6 : 2 3

the factors of 7 : no factor

the factors of 8 : 2 4

答: #include #include void out(int a, int b) { int i, j, count;

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

printf(\ for(j = 2; j < i; j++) { if(i % j == 0) {

printf(\ count++; } }

if(count == 0)printf(\ } }

3.请编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,所以5和25都是同构数。

答:

#include using namespace std; void main() {

int i, j, k; k = 10;

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

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

if(j % k == i)

cout<< i << \ }

cout<

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

(1)从键盘输入a op b。其中a, b为数值;op为字符,限制为+、-、*、/ 。 (2)调用函数count(op,a,b),计算表达式a op b的值。由主函数输出结果。

答:#include \ class cal { public:

int add(int x,int y) //加法定义函数 { return x+y; } int sub(int x,int y) //减法定义函数 { return x-y; } int mul(int x,int y) //乘法定义函数 { return x*y; } int div(int x,int y) //除法定义函数 { if(y==0)

cout<<\不能作除数\ int main() {

cal c; //定义对象 int x,y; char ID;

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

switch (ID) { case '+': cout<

case '-': cout<

case '*': cout<

case '/': cout<

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

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

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

#include voidmain() { Int x[100],k,i,n; Double sum=0.0,ave; cout<<\ cin>>k;

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

ave=sum/k; n=0;

for(i=0;i

cout<<\ }

if(x[i]>ave)n++; 6. 定义函数 void reversion(int ary[],int size);

逆置数组ary的元素。例如实参数组原来为 [ 1,5,3,2,6,8,9,4 ],调用函数

reversion后变成为 [ 4,9,8,6,2,3,5,1 ]。 答:

void reversion(int ary[],int size) {

int temp;

for(int i = 0; i < size/2; 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。

答:

# include void main() {

int a[50],b[5],i,,j;

printf (\请输入50个数\ for (i=0;i<50;i++); scanf(\ 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(\ printf(\ }


华南理工2017《高级语言程序设计C++》平时作业.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2014版高密度数字激光视盘机及关键部件项目(立项及贷款用)可行性

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: