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

  • 格式:docx
  • 大小:17.66 KB
  • 文档页数:16

下载文档原格式

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

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

1.#include

#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="word";

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<<"max= "<

}

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%10;

s+=m%10;

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<<" n= "; cin>>n;

s = 0;

for (i=1; i

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

cout<<"s="<

}

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/7 ; //求出z的值

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

cout << "x=" << x << " y=" << y << " z=" << z << endl ;

}