实验3 函数
#include <stdio.h>
#include <stdlib.h>
#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); 
}
system("pause");
return 0;
}
void printSpaces(int n)
{
int i;
for(i=1; i<=n; ++i)
printf(" ");
}
void printBlankLines(int n)
{
int i;
for(i=1; i<=n; ++i)
printf("\n");
}
void printText(int line, int col, char text[])
{
printBlankLines(line-1); 
printSpaces(col-1);
printf("%s",text);
}
任务1: 程序功能:打印十个hi,May~,间隔的行数在0~24之间随机取值,列数在0~79之间随机取值
#include <stdio.h>
#include<stdlib.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));
    system("pause");
return 0;
}
long long fac(int n)
{
    static long long p = 1;
    printf("p=%11d\n",p);
    p = p * n;
    return p;
}
  
任务2
#include <stdio.h>
#include<stdlib.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);
    system("pause");
    return 0;
}
int func(int a, int b)
{
    static int m = 0, i = 2;
    i += m + 1;
    m = i + a + b;
    return m;
}

static 变量
1.作为静态局部变量
静态存储,编译器在静态存储区为它分配内存单元。它的值不会因为函数调用结束而清除,下次被调用时,它的值是上次被调用后的值。
2.作为静态全局变量
可以被该文件所有函数访问。存储位置和局部变量特性相同
任务3
#include <stdio.h>
    #include<stdlib.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);
        }
        system("pause");
        return 0;
    }
    long long fun(int n)
    {   
        if(n==1)
        return 1;
    else
        return fun(n-1)*2+1; }
  
任务4
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int v[N], w[N], m, n, dp[N][N],kk=0;
int hanoi(int n,char a,char b,char c) {
    kk += 1;
    if (n == 1) {
        printf("第%d个盘子:%c-->%c\n", kk, a, c);
        return 1;
    }
   
    printf("第%d个盘子:%c-->%c\n", n, a, c);
    return hanoi(n - 1, a, c, b) + 1 + hanoi(n - 1, b, a, c);
}
int main()
{
    int c;
    while (scanf("%d", &n) != EOF) {
        c=hanoi(n,'A','B','C');
        printf("一共移动了%d次\n", c);
    }
}
  
任务5
#include <stdio.h> const int N = 100; int q[N], m, f[N], n; void mergesort(int q[], int l, int r) { if (l == r) return; int i = l, mid = l + r >> 1, k = 0, f = 0, j = mid + 1, temp[N]; mergesort(q, l, mid), mergesort(q, mid + 1, r); while (i <= mid && j <= r) { if (q[i] >= q[j]) temp[k++] = q[j++]; else temp[k++] = q[i++]; } while (i <= mid) temp[k++] = q[i++]; while (j <= r) temp[k++] = q[j++]; while (l <= r) q[l++] = temp[f++]; } int is_prime(int n) { int i, j; if (f[1] != 1) { for (i = 0; i < N; i++) f[i] = i; for (i = 2; i < N; i++) for (j = i * i; j < N; j += i) f[j] = 0; } else if (f[n] != 0) return 1; return 0; } int main() { int i, j, sushu[N], m = 0, k = 0; is_prime(100); for (i = 2; i < 20; i++) { if (f[i] != 0) { sushu[m] = i; m += 1; } } for (i = 4; i <= 20; i++) { j = m - 1; k = 0; while (j >= k) { if (sushu[j] + sushu[k] == i) { printf("%d = %d + %d\n", i, sushu[k], sushu[j]); break; } else if (sushu[j] + sushu[k] > i) j -= 1; else if (sushu[j] + sushu[k] < i) k += 1; } } return 0; }
 厄拉多塞素数筛加双指针求和
厄拉多塞素数筛加双指针求和
任务6
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <string.h>
const int N = 1e6;
char q[N];
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)
{
    char f[N]={'0'};
    int len = 0, i, m = 0, r;
    itoa(s, q, 10);
    len = strlen(q);
    for (i = 0; i < len; i++)
        if (q[i] % 2 == 0)
            q[i] = 'a';
    for (i = 0; i < len; i++)
        if (q[i] != 'a'){
            f[m] = q[i];
        m += 1;
    }
    r = atoi(f);
    return r;
}
  
数字转字符串操作数位
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号