首页 > 编程语言 >实验3_C语言函数应用编程

实验3_C语言函数应用编程

时间:2024-04-22 23:22:18浏览次数:192  
标签:10 return 函数 int 编程 long C语言 func include

Task1

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 #include <windows.h>
 5 #define N 80
 6 
 7 void print_text(int line, int col, char text[]); 
 8 void print_spaces(int n);
 9 void print_blank_lines(int n); 
10 
11 int main() {
12     int line, col, i;
13     char text[N] = "hi, April~";
14     
15     srand(time(0));
16     
17     for(i = 1; i <= 10; ++i) {
18         line = rand() % 25;
19         col =  rand() % 80;
20         print_text(line, col, text);
21         Sleep(1000);
22     }
23     
24     return 0; 
25 }
26 
27 void print_spaces(int n) {
28     int i;
29     
30     for(i = 1; i <= n; ++i)
31         printf(" ");
32 }
33 
34 void print_blank_lines(int n) {
35     int i;
36     
37     for(i = 1; i <= n; ++i)
38         printf("\n");
39  } 
40 
41 void print_text(int line, int col, char text[]) {
42     print_blank_lines(line-1); 
43     print_spaces(col-1);
44     printf("%s", text);
45 }

该程序运行后在屏幕上每隔1s随机输出一个“hi,April~”(由函数控制打印空行、空列),共输出10个。

 

Task2

2-1

 

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3 long long fac(int n);
 4 
 5 int main() {
 6     int i, n;
 7 
 8     printf("Enter n: ");
 9     scanf("%d", &n);
10 
11     for (i = 1; i <= n; ++i)
12         printf("%d! = %lld\n", i, fac(i));
13     system("pause");
14     return 0;
15 }
16 
17 long long fac(int n) {
18     static long long p = 1;
19     printf("p=%11d\n",p);
20     p = p * n;
21     
22     return p;
23 }

 

2-2

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3 int func(int, int);    
 4 
 5 int main() {
 6     int k = 4, m = 1, p1, p2;
 7 
 8     p1 = func(k, m); //func(4,1)  i=2+0+1=3  p1=3+4+1=8
 9     p2 = func(k, m); //func(4,8)  i=3+8+1=12 p2=12+4+1=17
10     printf("%d, %d\n", p1, p2);
11     system("pause");
12     return 0;
13 }
14 
15 int func(int a, int b) {
16     static int m = 0, i = 2;
17 
18     i += m + 1;
19     m = i + a + b;
20 
21     return m;
22 }

局部变量的值保持不变,程序计算过程如注释所示。

 

Task3

 

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3 long long func(int n);
 4 
 5 int main() {
 6     int n;
 7     long long f;
 8 
 9     while (scanf("%d", &n) != EOF) {
10         f = func(n); 
11         printf("n = %d, f = %lld\n", n, f);
12     }
13     system("pause");
14     return 0;
15 }
16 
17 long long func(int n){
18     if (n==0)
19         return 0;
20     else
21         return 2*(func(n-1)+1)-1;
22 }

 

 

Task4

4-1(迭代)

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3 //迭代
 4 int func(int n, int m);
 5 
 6 int main() {
 7     int n, m;
 8 
 9     while(scanf("%d%d", &n, &m) != EOF)
10         printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));
11     system("pause");
12     return 0;
13 }
14 
15 int func(int n, int m){
16     int i=0,ans=1;
17     if (m>n)
18         return 0;
19     else
20     for(;i<m;i++)
21     {
22         ans*=(n-i);
23         ans/=(i+1);
24     }
25     return ans;
26 }

4-2(递归)

 1 #include <stdio.h>
 2 int func(int n, int m);
 3 
 4 int main() {
 5     int n, m;
 6 
 7     while (scanf_s("%d%d", &n, &m) != EOF)
 8         printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));
 9 
10     return 0;
11 }
12 int func(int n, int m) {
13     if (m == 0 || m == n)
14         return 1;
15     else if (m > n)
16         return 0;
17     else
18         return func(n - 1, m - 1) + func(n-1, m );
19 }

 

Task5

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3 
 4 void hanoi(unsigned int n, char from, char temp, char to, int* m);
 5 void moveplate(unsigned int n, char from, char to, int* m);
 6 int main()
 7 {
 8     unsigned int n;
 9     while (scanf_s("%u", &n) != EOF)
10     {
11         int m = 0;
12         hanoi(n, 'A', 'B', 'C', &m);
13         printf("\n一共移动了%d次.\n\n", m);
14     }
15     system("pause");
16     return 0;
17 }
18 
19 void hanoi(unsigned int n, char from, char temp, char to, int* m)
20 {
21     if (n == 1)
22         moveplate(n, from, to, m);
23     else
24     {
25         hanoi(n - 1, from, to, temp, m);
26         moveplate(n, from, to, m);
27         hanoi(n - 1, temp, from, to, m);
28     }
29 }
30 void moveplate(unsigned int n, char from, char to, int* m)
31 {
32     printf("%u:%c --> %c\n", n, from, to);
33     ++(*m);
34 }

 

Task6

 

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include<stdlib.h>
 4 long func(long s);
 5 int main() {
 6 
 7     long s, t;
 8 
 9     printf("Enter a number: ");
10     while (scanf("%ld", &s) != EOF) {
11         t = func(s);
12         printf("new number is: %ld\n\n", t);
13         printf("Enter a number: ");
14     }
15     system("pause");
16     return 0;
17 }
18 
19 long func(long s){
20     int ans=0,x=1;
21     if (s==0)
22         return 0;
23     while(s>0)
24         {
25         int m=s%10;
26         if(m%2!=0){
27             ans+=x*m;
28             x*=10;
29         }
30         s/=10;
31         }
32         return ans;
33 }

 

 

实验总结

需要理解迭代和递归的基本思路,认清问题的本质,学会用不同方法解决问题。

 

标签:10,return,函数,int,编程,long,C语言,func,include
From: https://www.cnblogs.com/nuistjcy/p/18151807

相关文章

  • Python企业面试题5 —— 网络编程和并发
    1.简述进程、线程和协程的区别以及应用场景?#进程:拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度。#线程:拥有自己独立的栈和共享的堆,线程也由操作系统调度。#协程和线程:协程避免了无意义的调度,由此可以提高性能;但同时协程失去了线程使用多CPU的能力。进程与......
  • C语言学习笔记
    ​学习C语言是掌握计算机科学的基础,并为学习其他高级编程语言打下坚实的基础。C语言是一种高效率的编程语言,被广泛用于系统软件和应用软件的开发。1、C语言基础变量和数据类型:理解基本数据类型(int,char,float,double等)以及更复杂的类型,如数组和结构体。运算符:熟悉C语言支持......
  • linux系统是未来_大小写敏感_case_sensitive_编程原生态
    修改py文件......
  • 34.c语言数组练习题(牛客网)
    先打个广告哈哈哈牛客网练编程题不错不错哦冒泡排序必须必须必须会#include<stdio.h>voidsort(intarr[],intn){//外层循环for(inti=0;i<n-1;++i){intflag=1;//假设flag=1就是已经排序好的//内层循环for(intj=0;......
  • C语言单向链表的创建和增删减查相关程序
    对单向链表进行删除和插入的程序设计/********************************************************************* filename: linkedlist.c* author :17666589210@136.com* date :2024/04/22* function:实现单向链表的创建、拆入、删除功能* note :None**......
  • C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造
    C++构造函数构造函数是C++中一种特殊的成员函数,当创建类对象时自动调用。它用于初始化对象的状态,例如为属性分配初始值。构造函数与类同名,且没有返回值类型。构造函数类型C++支持多种类型的构造函数,用于满足不同的初始化需求:默认构造函数:不带参数的构造函数,通常用于初......
  • 实验3 C语言函数应用编程
    //task1.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声明in......
  • C语言实现链表增删减改
    /********************************************************************filename: main.cauthor :1810866453@163.comdate :2024/04/22function:实现对链表的增删改查note :NoneCopyRight(c)2023-20241810866453@163.comAllRightReseverd***......
  • 基于C语言的顺序表的建立,及各类功能函数实现
    常规链表建立列举常见的顺序表功能实现函数,进行编程练习常规顺序表(sequeue)建立定义一个顺序表的大小,结构体中采用数组而不是另一个堆内存空间表示存储的数据信息。typedefintdata_t;//定义顺序表中数据元素的数据类型#defineN20//定义顺序表的容量typed......
  • 实验3 C语言函数应用编程
    实验任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);//函数声明8voidprint_spaces(intn);//函数声明9voidprint......