首页 > 其他分享 >实验3

实验3

时间:2024-10-24 14:09:30浏览次数:6  
标签:return power int ans ++ 实验 printf

task1:

源代码:

 1 #include <stdio.h>
 2 char score_to_grade(int score); // 函数声明
 3 int main() {
 4     int score;
 5     char grade;
 6     while (scanf_S("%d", &score) != EOF) {
 7         grade = score_to_grade(score); // 函数调用
 8         printf("分数: %d, 等级: %c\n\n", score, grade);
 9     }
10     return 0;
11 }
12 // 函数定义
13 char score_to_grade(int score) {
14     char ans;
15     switch (score / 10) {
16     case 10:
17     case 9: ans = 'A'; break;
18     case 8: ans = 'B'; break;
19     case 7: ans = 'C'; break;
20     case 6: ans = 'D'; break;
21     default: ans = 'E';
22     }
23     return ans;
24 }

 

测试截图:

 问题一:作为自己创造的函数用来封存方法,进而方便调用,避免重复,形参类型是int 返回值类型为char。

问题二:有问题,没有break,会导致返回值多余

 

task2:

源代码:

 1 #include <stdio.h>
 2 int sum_digits(int n); // 函数声明
 3 int main() {
 4     int n;
 5     int ans;
 6     while (printf("Enter n: "), scanf_s("%d", &n) != EOF) {
 7         ans = sum_digits(n); // 函数调用
 8         printf("n = %d, ans = %d\n\n", n, ans);
 9     }
10     return 0;
11 }
12 // 函数定义
13 int sum_digits(int n) {
14     int ans = 0;
15     while (n != 0) {
16         ans += n % 10;
17         n /= 10;
18     }
19     return ans;
20 }

测试截图:

 问题1:将所输入的数的各个单位的数字相加并返回

问题2:可以实现同等效果,第一种是循环的思想,第二种是函数递归的思想

task3:

源代码:

 1 #include <stdio.h>
 2 int power(int x, int n); // 函数声明
 3 int main() {
 4     int x, n;
 5     int ans;
 6     while (printf("Enter x and n: "), scanf_s("%d%d", &x, &n) != EOF) {
 7         ans = power(x, n); // 函数调用
 8         printf("n = %d, ans = %d\n\n", n, ans);
 9     }
10     return 0;
11 }
12 // 函数定义
13 int power(int x, int n) {
14     int t;
15     if (n == 0)
16         return 1;
17     else if (n % 2)
18         return x * power(x, n - 1);
19     else {
20         t = power(x, n / 2);
21         return t * t;
22     }
23 }

 

测试结果:

 问题1:计算整数xn次幂

问题2:是递归函数。当n == 0时,返回 1。当n为奇时,返回x * power(x, n - 1)。当n为偶,先计算t = power(x, n / 2),返回t * t

数学模型:对于power(x,n),当n = 0时,power(x,0)=1。n>0时 ,n是奇数,power(x,n)=x*power(x,n - 1)n是偶数,power(x,n)=power(x,n/2)*power(x,n/2)

task4:

源代码:

 1 #include <stdio.h>
 2 
 3 int is_prime(int n) {
 4     if (n <= 1) return 0;
 5     for (int i = 2; i <= n/2; i++) {
 6         if (n % i == 0) 
 7             return 0;
 8     }
 9     return 1;
10 }
11 
12 int main() {
13     int count = 0;
14     printf("100 以内的孪生素数:\n");
15     for (int n = 1; n < 100; n++) {
16         if (is_prime(n) && is_prime(n + 2)) {
17             printf("%d %d\n", n, n + 2);
18             count++;
19         }
20     }
21     printf("100 以内的孪生素数共有 %d 个\n", count);
22     return 0;
23 }

测试结果:

 

task5:

源代码:

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

 

 

测试结果:

 

 

task6:

源代码:

方法一:

 1 #include <stdio.h>
 2 int func(int n, int m) ; // 函数声明
 3 int main() {
 4     int n, m;
 5     int ans;
 6     while (scanf_s("%d%d", &n, &m) != EOF) {
 7         ans = func(n, m); // 函数调用
 8         printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
 9     }
10     return 0;
11 }
12 int func(int n, int m) {
13     if (m > n || m < 0) return 0;
14     int a = 1;
15     int b= 1;
16     for (int i = n; i > n - m; i--) {
17         a *= i;
18     }
19     for (int i = 1; i <= m; i++) {
20         b *= i;
21     }
22     return a / b;
23 }

方法二:

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

测试结果:

 

task7:

源代码:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void print_charman(int n);
 4 int main() {
 5     int n;
 6     printf("Enter n: ");
 7     scanf_s("%d", &n);
 8     print_charman(n); // 函数调用
 9     return 0;
10 }
11 void print_charman(int n)
12 {
13     int i, j;
14     for (i = 0; i < n; i++)
15     {
16         for (j = 0; j < i; j++)
17         {
18             printf("\t");
19         }
20         for (j = 0; j < n - i; j++)
21         {
22             printf(" O \t");
23         }
24         for (j = 0; j < n - i - 1; j++)
25         {
26             printf(" O \t");
27         }
28         printf("\n");
29 
30         for (j = 0; j < i; j++)
31         {
32             printf("\t");
33         }
34         for (j = 0; j < n - i; j++)
35         {
36             printf("<H>\t");
37         }
38         for (j = 0; j < n - i - 1; j++)
39         {
40             printf("<H>\t");
41         }
42         printf("\n");
43 
44         for (j = 0; j < i; j++)
45         {
46             printf("\t");
47         }
48         for (j = 0; j < n - i; j++)
49         {
50             printf("I I\t");
51         }
52         for (j = 0; j < n - i - 1; j++)
53         {
54             printf("I I\t");
55         }
56         printf("\n\n");
57     }
58 
59 }

 


测试结果:

 

 

标签:return,power,int,ans,++,实验,printf
From: https://www.cnblogs.com/tzrblogs/p/18496663

相关文章

  • 20222327 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    一、实验内容1.正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧2.通过组合应用各种技术实现恶意代码免杀3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本4.问题回答(1)杀软是如何检测出恶意代码的?基于特征码检测:杀毒软件中......
  • 20222317 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    一、实验内容本次实验目的为通过多次加密、文件格式欺骗、填充、加壳等技术手段实现恶意代码免杀,产生恶意程序,并尝试通过杀毒软件,不被杀毒软件检测出来。具体实验内容如下:1.正确使用msf编码器,使用msfvenom生成如jar之类的其他文件;2.能够使用veil,加壳工具;3.能够使用C+shellcode......
  • 20222417 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    1.实践内容1.1实验目的(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件veil,加壳工具使用C+shellcode编程(2)通过组合应用各种技术实现恶意代码免杀如果成功实现了免杀的,简单语言描述原理,不......
  • 实验三蕉 C语言函数应用编程蕉
    实验三蕉C语言函数应用编程蕉可恶,是原始博士!什么时候!?......
  • 20222318 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容(一)本周课程内容(1)深入理解后门概念及其实际案例,明晰后门对系统安全构成的潜在威胁。(2)普及后门技术知识,涵盖各类进程隐藏技巧,并熟悉netcat、meterpreter、veil等常见工具的应用。(3)进一步学习了shellcode注入的逻辑原理及其在不同场景下的应用。(二)实验目标(1)使用net......
  • 实验2 类和对象
    任务1t.h1#pragmaonce23#include<string>45//类T:声明6classT{7//对象属性、方法8public:9T(intx=0,inty=0);//普通构造函数10T(constT&t);//复制构造函数11T(T&&t);//移动构造函数12~T();......
  • 20222422 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    一、实验内容1、方法对后门实验中的msf编码器进行进一步的探索使用,使用msfvenom指令生成如jar之类的文件,从而尝试达到免杀的目的;通过Veil等工具对目标程序进行加壳或者其他操作来实现免杀;使用C+ShellCode编程实现免杀;2、应用通过组合应用各种技术尽可能地实现恶意代码免杀......
  • 20222419 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    1.实验内容1.1实践内容(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件veil,加壳工具使用C+shellcode编程(2)通过组合应用各种技术实现恶意代码免杀如果成功实现了免杀的,简单语言描述原......
  • 20222409 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容1.1本周学习内容后门技术:学习了后门的定义及其在网络安全中的作用。后门是一种隐秘的进入方式,允许攻击者绕过正常的认证机制,获取系统访问权限。在实验中实践了如何利用后门获取shell。netcat:可以用于创建TCP/UDP连接,实现远程shell访问和文件传输。socat:功能更强大......
  • 实验2 C++
    任务1:t.h1#pragmaonce23#include<string>45//类T:声明6classT{7//对象属性、方法8public:9T(intx=0,inty=0);//普通构造函数10T(constT&t);//复制构造函数11T(T&&t);//移动构造函数12~T();......