首页 > 其他分享 >实验三

实验三

时间:2024-04-25 19:57:21浏览次数:14  
标签:return int long char 实验 func include

TASK 1

点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define N 80

void print_text(int line, int col, char text[]);  // 函数声明 
void print_spaces(int n);  // 函数声明 
void print_blank_lines(int n); // 函数声明 

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

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

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

// 在第line行第col列打印一段文本 
void print_text(int line, int col, char text[]) {
	print_blank_lines(line-1);  	// 打印(line-1)行空行 
	print_spaces(col-1);			// 打印(col-1)列空格
	printf("%s", text);         // 在第line行、col列输出text中字符串
}





共生成十段“hi,April~”

TASK 2-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;
}

TASK 2-2

点击查看代码
// 练习:局部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;
}


当函数返回后,局部静态变量的值不会被销毁,而是保留下来,在下次调用函数时,这个变量的值还是上一次离开时的值。这不同于普通的局部变量,它们会在函数返回后被销毁。

TASK 3

点击查看代码
#include <stdio.h>
long long func(int n); // 函数声明

int main() {
    int n;
    long long f;

    while (scanf("%d", &n) != EOF) {
        f = func(n); // 函数调用
        printf("n = %d, f = %lld\n", n, f);
    }

    return 0;
}

// 函数定义
// 待补足。。。

long long func(int n){
	long long f;
	if(n==1)
	{
		f=1;
	}
	else
	{
		f=2*func(n-1)+1; 
	}
	return f;
}

TASK 4
迭代法

点击查看代码
#include <stdio.h>
int func(int n, int m);

int main() {
    int n, m;

    while(scanf("%d%d", &n, &m) != EOF)
        printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));
    
    return 0;
}

// 函数定义
// 待补足。。。
int func(int n, int m){
	int i;
	int up=1;
	int down=1;
	
	if(m>n)
	{
		return 0;
	}
    else if(m==0&&n==0)
    {
    	return 1;
	}
	
	else
	{
	for(i=1;i<=m;i++)
	{
		up*=n-i+1;
		down*=i;
	}
	return up/down;
}
}

递归法

点击查看代码
#include <stdio.h>
int func(int n, int m);

int main() {
    int n, m;

    while(scanf("%d%d", &n, &m) != EOF)
        printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));
    
    return 0;
}

// 函数定义
// 待补足。。。
int func(int n, int m)
{
	if(m>n)
	{
		return 0;
	}
	
	else if(m==n||m==0)
	{
		return 1;
	}
	
	else
	{
		int i;
		i=func(n-1,m)+func(n-1,m-1);
		return i;
	}
}

TASK 5

点击查看代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

void hanoi(unsigned int n,char from,char temp,char to);
void moves(unsigned int n,char from,char to);

int main()
{
    unsigned int n;
    int s;
    while(scanf("%d",&n)!=EOF)
    {
    hanoi(n,'A','B','C');
    s=pow(2,n)-1;
    printf("一共移动了%d次\n",s); 
}
    system("pause");
    return 0;
 } 
 
 void hanoi(unsigned int n,char from,char temp,char to)
 {
     if(n==1)
      moves(n,from,to);
     else
     {
         hanoi(n-1,from,to,temp);
         moves(n,from,to);
         hanoi(n-1,temp,from,to);
     }
 }
 
 void moves(unsigned int n,char from,char to)
 {
     printf("%d:%c-->%c\n",n,from,to);
 }

TASK 6

点击查看代码
#include <stdio.h>
#include <math.h>
long func(long s);   // 函数声明

int main() {

    long s, t;

    printf("Enter a number: ");
    while (scanf("%ld", &s) != EOF) {
        t = func(s); // 函数调用
        printf("new number is: %ld\n\n", t);
        printf("Enter a number: ");
    }

    return 0;
}

// 函数定义
// 待补足。。。

long func(long s){
	long ans;
	long digit,t;
	
	ans=0;
	t=1;
	
	while(s!=0){
		digit=s%10;
		
		if(digit%2){
			ans +=t*digit;
			t*=10;
		}
		s /=10;
	}
	return ans;
}

标签:return,int,long,char,实验,func,include
From: https://www.cnblogs.com/mhl0216/p/18156661

相关文章

  • 实验4 信号量(Semaphores)
    要使用信号量,请先包含头文件<semaphore.h>sem_t:信号量的数据类型intsem_init(sem_t*sem,intpshared,unsignedintval);该函数第一个参数为信号量指针,第二个参数为信号量类型(一般设置为0),第三个为信号量初始值,第二个参数pshared为0时,该进程内所有线程可用,不为0时不同进......
  • 进度跟踪和成本跟踪实验
      接着实验    ......
  • 软件工程基础-实验一-原型设计-作家助手
    实验要求一:对比分析对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点。一丶墨刀墨刀是一款在线的产品设计协作软件,可以解决产设研团队中存在的项目管理权限不明、版本管理混乱、协作低效等诸多问题。优点:功能强大:可满足产品经理、设计师、开发在产品设......
  • 实验3
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声明int......
  • 软件开发与创新第二次实验———结对编程:计算出题系统
    一.结对信息2252418盛宇伟2252436董朝二.题目要求小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并......
  • 实验三
    实验任务一#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprint_spaces(intn);voidprint_blank_lines(intn);intmain(){ intlin......
  • 互斥锁(实验)(不严谨)
    进程与进程的锁和线程与线程的锁是不一样的。abc三部曲pthread_mutex_tlock=PTHREAD_MUTEX_INITIALIZER;//创建一个锁pthread_mutex_lock(&lock);//上锁pthread_mutex_unlock(&lock);//开锁对于全局变量,共享数据就是临界区,需要使用锁。intticketAmount=2;//这里......
  • XMU《UNIX 系统程序设计》第二次实验报告
    一、实验内容描述实验目的掌握与文件和目录树有关的系统调用和库函数。实验要求编写程序myfind命令语法myfind<pathname>[-comp<filename>|-name<str>...]命令语义(1)myfind<pathname>的功能除了具有与程序4-7相同的功能外,还要输出在<pathname>目录子树之下,文......
  • XMU《计算机网络与通信》第三次实验报告
    一、个人信息学号:**************姓名:###二、实验目的理解TCP和UDP协议主要特点掌握socket的基本概念和工作原理,编程实现socket通信三、实验任务与结果任务1前置任务开启两个终端窗口,分别编译、运行server_example.c和client_example.c,观察它们实现的功能。......
  • 20231325 贾罗祁 实验三《Python程序设计》实验报告
    20231325贾罗祁2023-2024-2《Python程序设计》实验三报告课程:《Python程序设计》班级:2313姓名:贾罗祁学号:20231325实验教师:王志强实验日期:2024年4月17日必修/选修:公选课1.实验内容创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套......