Java教程

实验3

本文主要是介绍实验3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
//task1//
#include <time.h> 
#include <windows.h> 
#define N 80 

void printText(int line, int col, char text[]); // 函数声明 
void printSpaces(int n); // 函数声明 
void printBlankLines(int n); // 函数声明 
int main() 
{ 
int line, col, i; 
char text[N] = "hi, May~"; 
srand(time(0)); // 以当前系统时间作为随机种子 
for(i=1; i<=10; ++i) 
{ 
line = rand()%25; 
col = rand()%80; 
printText(line, col, text); 
Sleep(1000); // 暂停1000ms 
}
return 0; 
}

// 打印n个空格 
void printSpaces(int n) 
{ 
int i; 
for(i=1; i<=n; ++i) 
printf(" "); 
}

// 打印n行空白行 
void printBlankLines(int n) 
{ 
int i; 
for(i=1; i<=n; ++i) 
printf("\n"); 
}

// 在第line行第col列打印一段文本 
void printText(int line, int col, char text[]) 
{ 
printBlankLines(line-1); // 打印n-1行空行
printSpaces(col-1); // 打印n-1列空格 
printf("%s", text); 
} 

 

 功能:在0~24行,0~79中随机打印10个"hi, May~",并且重复此操作10次。

task2

// 练习:局部static变量特性 
#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; 
}

 

 答:局部static变量,初始值只用于第一次运算,后续运算时,保留上次结果。

task3

#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)
 {
    int j=0;
    long long sum=1;
    for(j=0; j<n; j++)
    {
        sum=sum*2;
    }
    sum=sum-1;
    
    return sum;
 }

 

 task4

#include <stdio.h>
void hanoi(unsigned n, char from, char temp, char to);  // 函数声明 
void moveplate(unsigned n, char from ,char to);  // 函数声明 
int sum(int n);

int main() 
{
    unsigned n;  // 盘子数目
    while (scanf("%u", &n) != EOF)
    {
        hanoi(n, 'A', 'B', 'C');
        printf("一共移动盘子的次数:%ld\n",sum(n));
    }    
    
      0;
}

// 函数定义
// 功能描述:把n个盘子,从from →to, 借助temp
void hanoi(unsigned n, char from, char temp, char to) {
    if(n==1)
        moveplate(n, from, to);
    else {
        hanoi(n-1, from , to, temp);
        moveplate(n, from, to);
        hanoi(n-1, temp, from, to); 
    }
}

// 函数定义
// 功能描述:把第n个盘子,从from →to
void moveplate(unsigned n, char from, char to) {
    printf("第%u个盘子: %c --> %c\n", n, from, to);
}

// 函数定义
// 功能描述:记录移动次数 
int sum(int n)
{
    int m;
    if(n==1)
      m=1;
    else
      m=2*sum(n-1)+1;
    return m;
    
}

 

 task5

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 20
int is_prime(int x);

int main()
{
    int i, j, m, n;
    int fm, fn, fi;
    for(i=4; i<=N; i+=2)
    {
        for(m=2; m<=i; m++)
        {
            n=i-m;
            fm=is_prime(m);
            fn=is_prime(n);
            if(fm==1&&fn==1)
              {
                  printf("%d =%d + %d\n", i, m, n);
                  break;
              }
        }
    }
}

int is_prime(int a)
{
    int b, k, Flag=1;
    k=sqrt(a);
    if(a==2)
       return Flag=1;
    else
       for(b=2;b<=k;b++)
      {
        if((a%b)==0) 
          {Flag=0;
          break;}
        
      }
     return Flag;
 }

 

 

 task6

 

#include <stdio.h> 
#include<math.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)
{
    int i, j=0, k=0;
    do
    {
        i=s%10;
        s=s/10;
        if(i%2!=0)
          {
             k+=i*pow(10,j);
             j++;
          }        
    }
    while(s>0);
    
    return k;
}

 

这篇关于实验3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!