1. 程式人生 > 其它 >手把手教你搭建集中式版本控制系統SVN伺服器

手把手教你搭建集中式版本控制系統SVN伺服器

實驗1.

//利用區域性static變數特性,計算階乘 
#include<stdio.h>
long long fac(int n);
int main()
{
    int i,n;
    printf("Enter n: ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    printf("%d!=%lld\n",i,fac(i));
    return 0;
 } 
 //函式定義
 long long fac(int n) 
{
    static long long p=1;
    p=p*n;
    return
p; }
//利用區域性static變數特性,計算階乘 
#include<stdio.h>
long long fac(int n);
int main()
{
    int i,n;
    printf("Enter n: ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    printf("%d!=%lld\n",i,fac(i));
    return 0;
 } 
 //函式定義
 long long fac(int n) 
{
    static long long p=1;
    printf("p=%lld\n
",p); p=p*n; return p; }

猜測:8,16

#include<stdio.h>
int func(int,int);

int main()
{
    int k=4,m=1,p1,p2;
p1=func(k,m);
p2=func(k,m);
printf("%d,%d\n",p1,p2);
    return 0;
 } 
 //函式定義
 int func(int a,int b)
{
    static int m=0,i=2;
    i+=m+1;
    m=i+a+b;
    return (m);
}

錯誤原因:i也是靜態變數,第二次為3。

區域性static變數特性:保留每一次的運算結果,而不是重新賦值。

實驗2.

迭代

#include<stdio.h>
void printSymbol(int n,char symbol);

int main()
{
    int n;
    char symbol;
    while(scanf("%d %c",&n,&symbol)!=EOF)
    {
        printSymbol(n,symbol);
        printf("\n");
    }
    return 0;
 } 
 //函式定義
void printSymbol(int n,char symbol)
{
    int i;
for(i=0;i<n;i++)
printf("%c",symbol);
}

遞迴

#include<stdio.h>
void printSymbol(int n,char symbol);

int main()
{
    int n;
    char symbol;
    while(scanf("%d %c",&n,&symbol)!=EOF)
    {
        printSymbol(n,symbol);
        printf("\n");
    }
    return 0;
 } 
 //函式定義
void printSymbol(int n,char symbol)
{
if(n==1)
printf("%c",symbol);
else
{
    printSymbol(n-1,symbol);
    printf("%c",symbol);    
}
}

遞迴更好,避免了引入新的變數,減少記憶體佔用。

實驗3.

#include<stdio.h>
long long fun(int n);
int main()
{
    int n;
long long f;
    while(scanf("%d",&n)!=EOF)
    {
    f=fun(n);
    printf("n=%d,f=%lld\n",n,f);
    }
    return 0;
 } 
 //函式定義
long long fun(int n)
{
    long long result;
    if(n==1)
    return 1;
    else
    {
    long long result=2*fun(n-1)+1;
    return result;
}
}

實驗4.

#include<stdio.h>
#include<math.h>
int isPrime(int n)
{
    int i;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        return 0;
     } 
     return 1;
    
}
int main()
{
    int n,j,count=0;
    for(n=101;n<=200;n++)
    {
        j=isPrime(n);
        if(j==0)
        {
        printf("%5d",n);
        count++;
    }
    }
    printf("\n101~200之間一共有%d個非素數",count);
    return 0;
}

實驗5.

#include<stdio.h>
long fun(long s);
int main()
{
    long s,t;
    printf("Enter a number: ");
    while(scanf("%ld",&s)!=EOF)
    {
        t=fun(s);
        printf("new number is:%ld\n\n",t);
        printf("Enter a number: "); 
    }
    return 0;
}
long fun(long s)
{
    long sum1=0,sum=0,temp;
    for(temp=s;temp>0;temp/=10)
    {
        if(temp%2==1)
     sum1=sum1*10+temp%10;    
    }
    while(sum1)
    {
    sum=sum*10+sum1%10;
    sum1/=10;
    } 
    return sum;
}

實驗6.(注意小數運算至少要有一個小數)

#include<stdio.h>
double fun(int n);
int fac(int n);
int main()
{
int n;
double s;
    printf("Enter n(1~10): ");
    while(scanf("%d",&n)!=EOF)
    {
        s=fun(n);
        printf("n=%d,s=%f\n\n",n,s);
        printf("Enter n(1~10): "); 
    }
    return 0;
}
double fun(int n)
{
    double s;
    if(n==1)
    s=1;
    else
    s=fun(n-1)+1.0/fac(n);
    return s;    
}
int fac(int n)
{
    if(n==1)
    return 1;
    else
    {
    int s=(-1)*fac(n-1)*n;
    return s ;
}
}