目录
7-6 编写函数输出一个十进制整数的十六进制形式 (100 分)
5-1
定义递归函数sum(n)计算1+2+...+n, 其中n的类型是int,函数类型是double。
double sum(int n){
if (n==1){
return 1;
}
else{
return n+sum(n-1);
}
}
5-2
定义函数gcd( m, n),用递归法求m和n的最大公约数。 使用辗转相除法求最大公约数的递归算法描述如下:
int gcd(int m, int n){
if(m%n==0){
return n;
}else{
return gcd(n,m%n);
}
}
5-3
编写递归函数reverse(n),实现将非负整数n逆序输出。
void reverse(int n){
if(n <= 9){
printf("%d",n);
}else{
printf("%d",n%10);
reverse(n/10);
}
5-4
输入正整数n,输出1!~n!的值。要求定义并调用含静态变量的函数fact_s(n)计算n!,其中n的类型是int,函数类型是double。
#include <stdio.h>
double fact_s(int n);
int main(void){
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%3d!=%.0f\n",i,fact_s(i));
}
return 0;
}
double fact_s(int n){
static double f=1;
f=f*n;
return f;
}
7-1 计算2个复数之和与之积 (15 分)
#include <stdio.h>
int main(){
double x1=0,y1=0,x2=0,y2=0;
scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
printf("addition of complex is %lf+%lfi\nproduct of complex is %lf+%lfi",x1+x2,y1+y2,x1*x2-y1*y2,x1*y2+x2*y1);
return 0;
}
7-2 全局变量代码分析 (100 分)
#include<stdio.h>
int x=11,y=12,z=13;
void fun(){
int x=21,y=22;
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
int main(){
{
int y=32;
printf("x=%d,y=%d,z=%d\n",x,y,z);
fun();
}
printf("x=%d,y=%d,z=%d\n",x,y,z);
return 0;
}
7-3 静态局部变量程序举例 (100 分)
#include<stdio.h>
long next(long n){
static long s=0;
if(n%2==1) n=n*3+1;
else n=n/2;
s++;
printf("Times of %ld is %ld.\n",s,n);
return n;
}
int main(){
long n;
scanf("%ld",&n);
while(n!=1){
n=next(n);
}
return 0;
}
7-4 素因子分解 (20 分)
7-5 倒杨辉三角形 (10 分)
#include <stdio.h>
#define N 12
int main()
{
int a[N][N]={0};
int i,j,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
a[i][0]=a[i][i]=1;
for(i=2;i<n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=n-1;i>=0;i--)
{
for(j=1;j<n-i;j++)
printf(" ");
for(j=0;j<=i;j++){
printf("%3d",a[i][j]);
if(i!=j)
printf(" ");
}
printf("\n");
}
}
return 0;
}