书面作业_9(参考答案)

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

书面作业_9(参考答案)

请按下列要求,编写相应程序:

1、定义一个求最大公约数函数int gcd(int x, int y),在主函数输入两个整数,然后调用gcd()输出这两个整数的最大公约数。(编程思路参考第6讲课件例子)

#include

int main()

{

int a,b;

printf("请输入两个整数: ");

scanf("%d%d",&a,&b);

while(a<=0 || b<=0)

{

printf("数据中包含负数。请重新输入两个整数: ");

scanf("%d%d",&a,&b);

}

int gcd(int x,int y);//函数声明

int n=gcd(a,b);

printf("最大公约数为:%d\n\n",n);

return 0;

}

int gcd(int x,int y)

{

int r;

while (y)

{

r=x%y;

x=y;

y=r;

}

return x;

}

2、定义一个将十进制数转换成十六进制数的函数void dec2hex(int n),

该函数的功能是将参数中的十进制数以十六进制方式输出(编程思路参考第6讲课件例子)。在主函数输入一个十进制整数,然后调用dec2hex()输出对应的十六进制数。

#include

int main()

{

int n,rem;

void dec2hex(int n);

printf("Enter n: ");

scanf("%d",&n);

printf("\n十进制数:%d 转换为十六进制数是:",n);

dec2hex(n);

printf("\n");

return 0;

}

void dec2hex(int n)

{

char num[20];

int rem,i=0;

do

{

rem=n%16; //存放余数

n=n/16;

if (rem<10)

num[i++]='0'+rem;

else

num[i++]='A'+(rem-10);

}while(n>0);

for(i=i-1;i>=0;i--)

printf("%c",num[i]);

printf("\n");

}

3、定义一个递归函数int sum_of_square(int n),计算表达式:12+22+32+…+n2的值。在主函数中输入n值,通过调用sum_of_square() 输出结果。

#include

int main()

{

int n;

int sum_of_square(int n);

printf("Enter n: ");

scanf("%d",&n);

printf("\n1*1+2*2+3*3+...+n*n=%d\n",sum_of_square(n));

printf("\n");

return 0;

}

int sum_of_square(int n)

{

if (n==1)

return 1;

else

return sum_of_square(n-1)+n*n;

}

相关文档
最新文档