书面作业_9(参考答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}