当前位置: 首页 > news >正文

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

实验任务一

源代码

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

运行截图

QQ截图20260415220345

问题1:函数 score_to_grade 的功能是什么?形参类型、返回值类型分别是什么?

答:功能是将分数转换为相应的等级,形参类型为整形,返回值类型为整形

问题2:如果line21-28改成以下写法,代码存在哪些问题?请逐一指出。

答:每条case语句后面没有相应的break,导致无论输入什么成绩,最后都对应等级E;ans是char类型,应该对应单字符

实验任务二

源代码

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

运行截图

2

 问题1:函数 sum_digits 的功能是什么?

答:求一个数字的各个位上的数字之和

问题2:如果把函数sum_digits定义成如下实现方式,能实现同样的输出吗?如果能,说明两种实现方式的算法思维区别;如果不能,分析原因。

答:可以。原版是不断变换n的值,用ans加上输入数的各个位。修改后是用sum_digits递归 ,最终直接返回各个位之和。

实验任务三

源代码

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

运行截图

3

 问题1: 函数power的功能是什么?

答:求出x的n次方

问题2:函数power是递归函数吗?如果是,找出递归模式。写出这个递归模式对应的数学公式模型。

答:是。

a5ac30a2f13975dc43c8b037942a305e

 

实验任务四

源代码

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int a,b,c;
 4 int classify_triangle(int a,int b,int c);
 5 int type;
 6 int main(){
 7     while(scanf("%d %d %d",&a,&b,&c)!= EOF)
 8     {
 9         type=classify_triangle(a,b,c);
10         switch(type)
11         {
12         case 0:printf("不能构成三角形\n");break;
13         case 1:printf("普通三角形\n");break;
14         case 2:printf("等边三角形\n");break;
15         case 3:printf("等腰三角形\n");break;
16         case 4:printf("直角三角形\n");break;
17          }
18     }
19     system("pause");
20     return 0;
21 }
22 int classify_triangle(int a,int b,int c)
23 {
24     if((a+b<c)||(b+c<a)||(a+c<b))
25         return 0;
26     if(a==b&&b==c)
27         return 2;
28     if((a==b)||(b==c)||(a==c))
29         return 3;
30     if((a*a+b*b==c*c)||(b*b+c*c==a*a)||(a*a+c*c==b*b))
31         return 4;
32     return 1;
33 
34 }

运行截图

QQ截图20260415215718

 实验任务五

源代码(迭代)

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

运行截图

5

源代码(递归)

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

运行截图

333

实验任务六

源代码

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 int gcd(int a,int b,int c);
 5 int main(){
 6     int a,b,c;
 7     int ans;
 8     while(scanf("%d%d%d",&a,&b,&c)!=EOF){
 9         ans=gcd(a,b,c);
10         printf("最大公约数:%d\n\n",ans);
11     }
12     system("pause");
13     return 0;
14 }
15 int gcd(int a,int b,int c){
16     int i;
17     if(a>b){
18         i=b;
19         if(b>c)
20             i=c;
21         else
22             i=b;}
23     if(a<b){
24         i=a;
25         if(a>c)
26             i=c;
27         else
28             i=a;}
29     for(;i>=1;--i)
30         if(a%i==0&&b%i==0&c%i==0)
31             return i;
32     }

运行截图

6

实验任务7

源代码

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 void printf_charman(int n);
 4 int main(){
 5     int n;
 6     printf("Enter n:");
 7     scanf("%d",&n);
 8     printf_charman(n);
 9     system("pause");
10     return 0;
11 }
12 void printf_charman(int n){
13     for(int i=n;i>=1;--i){
14             for( int j=0;j<n-i;++j)
15                 printf("\t");
16             for(int k=1;k<=2*i-1;++k)
17                 printf(" O\t");
18             printf("\n");
19             for( int j=0;j<n-i;++j)
20                 printf("\t");
21             for(int k=1;k<=2*i-1;++k)
22                 printf("<H>\t");
23             printf("\n");
24             for( int j=0;j<n-i;++j)
25                 printf("\t");
26             for(int k=1;k<=2*i-1;++k)
27                 printf("I I\t");
28             printf("\n");
29             }
30     }

运行截图

333333333333333

44444444444

 

http://www.jsqmd.com/news/660391/

相关文章:

  • 告别字幕烦恼:Jellyfin智能中文字幕插件终极指南
  • 不换设备、不改线路!旧摄像头接入国标GB28181视频平台EasyGBS,把AI成本打到了原来的⅒!
  • 用STM32F103C8T6和NRF24L01做个无线遥控小车:硬件连接与代码详解
  • 别再只测电流了!用INA226模块同时搞定电压、电流、功率的完整配置流程(附STM32代码)
  • 分子动力学模拟结合自由能计算:gmx_MMPBSA技术架构与实战指南
  • 性价比高的公司注册咨询机构怎么选,为你提供实用选购指南 - 工业品网
  • 透视2026年4月六家geo服务商排行榜交付效能与选型逻辑 - 资讯焦点
  • 服务管理化技术服务目录与请求管理流程
  • NVIDIA Profile Inspector:解锁NVIDIA显卡200+隐藏设置的专业工具指南
  • 告别QML资源路径噩梦:手把手教你用Prefix和别名管理图片资源(附避坑指南)
  • 从Lambert到Half-Lambert:漫反射光照模型的演进与Shader实战
  • 2026湖州建工索赔纠纷律师:王学志的专业服务解析 - 律界观察
  • 杰理之主机在没有数据输出时需保持CLK【篇】
  • OpenIPC:3大技术突破实现网络摄像头固件的完全掌控
  • 别再只调参了!用Python从CWRU轴承数据里手动提取这9类特征,喂给XGBoost效果有多炸?
  • Windows驱动空间清理终极指南:Driver Store Explorer 5步高效释放系统资源
  • 抖音无水印视频批量下载终极指南:douyin-downloader技术深度解析
  • BMP280实战指南:从硬件连接到多平台代码解析
  • Stretchly:10个实用技巧帮你高效配置电脑休息提醒应用
  • RabbitMQ消息积压急救指南:从监控到自动扩容的完整解决方案
  • 从PWM到BCM:深入浅出讲解HUB75 LED屏如何实现256级灰度与全彩动画
  • Arduino实战解析(一)-- 从I/O到GPIO:概念辨析与引脚功能实战指南
  • OBS StreamFX插件完整指南:免费打造专业直播画面的终极方案
  • Vue-i18n进阶实践:从基础配置到路由与状态管理中的无缝语言切换
  • 彻底清理Windows系统:Bulk Crap Uninstaller批量卸载工具终极指南
  • S32K3 eMios SAIC模式下的高精度信号周期测量与溢出处理优化
  • OpenCore实战指南:PC安装macOS的完整解决方案深度解析
  • 别再只跑Demo了!手把手教你用ModelScope微调GPT-3模型,打造专属古诗生成器
  • 广州市丽彩印刷科技有限公司怎么样?(附联系电话) - damaigeo
  • 不用微软商店!5分钟搞定Win10 OpenSSH离线安装(附GitHub下载指南)