C语言—函数

1.编写一个函数,通过输入一个数字字符,返回该数字29.

/*1.编写一个函数,通过输入一个数字字符,返回该数字 */#include <stdio.h>//函数定义,返回类型为int
int char_num(char c)
{if(c >= '0' && c <= '9')  //检查是否为数字{return c - '0';}return -1;  //返回错误标志,注意这里的错误标志不可以是1-9嗷
}int main(void)
{char c;printf("请输入一个数字字符:");scanf("%c",&c);int num = char_num(c);if(num != -1){printf("数字字符: %c 对应的数字是: %d\n",c,num);}else{printf("输入的不是数字字符!\n");}return 0;}


2.编写一个函数,输入四个数据分别表示2个点的x,y坐标,返回两点之间的距离

/*2.编写一个函数,输入四个数据分别表示2个点的x,y坐标,返回两点之间的距离*/#include <stdio.h>
#include <math.h>float two_distance(float x1,float x2,float y1,float y2)  //函数定义
{float dx = x2 - x1;float dy = y2 - y1;float distance = sqrt(dx * dx + dy * dy);return distance;
}int main(void)
{float x1,y1,x2,y2,distance;printf("请输入第一个点的坐标(a b):");scanf("%f%f",&x1,&x2);printf("请输入第二个点的坐标(a b):");scanf("%f%f",&y1,&y2);distance = two_distance(x1,x2,y1,y2);  //函数调用printf("两点之间的距离是: %.3f\n",distance);return 0;
}

在函数组这里,函数允许我们先使用在定义,但是我们要先声明,举个例子,下面的代码就是把函数放在后面,要先声明函数。

/*2.编写一个函数,输入四个数据分别表示2个点的x,y坐标,返回两点之间的距离*/#include <stdio.h>
#include <math.h>float two_distance(float x1,float x2,float y1,float y2);  //函数声明int main(void)
{float x1,y1,x2,y2,distance;printf("请输入第一个点的坐标(a b):");scanf("%f%f",&x1,&x2);printf("请输入第二个点的坐标(a b):");scanf("%f%f",&y1,&y2);distance = two_distance(x1,x2,y1,y2);  //函数调用并接收返回值printf("两点之间的距离是: %.3f\n",distance);return 0;
}
//函数定义
float two_distance(float x1,float x2,float y1,float y2)
{//计算两点之间的距离float dx = x2 - x1;float dy = y2 - y1;float distance = sqrt(dx * dx + dy * dy);return distance;
}


3.编写一个函数,通过参数输入x的值,计算如下的数学函数值,当 x>5时, f(x) = 4x+7;否则 f(x)= -2x+3,返回结果值。

/*3.编写一个函数,通过参数输入x的值,计算如下的数学函数值当 x>5时, f(x) = 4x+7;否则 f(x)= -2x+3,返回结果值。*/#include <stdio.h>int calculate_f(int x)  //函数定义
{if(x > 5){return 4 * x + 7;}else{	return -2 * x + 3;}
}int main(void)
{int x;printf("请输入x的值");scanf("%d",&x);int result = calculate_f(x);// 打印根据x值计算f(x)的过程if (x > 5) {printf("因为 x > 5,所以我们使用公式 f(x) = 4x + 7 来计算:\n");printf("f(x) = 4 * %d + 7 = %d + 7 = %d\n", x, 4 * x, 4 * x + 7);} else {printf("因为 x <= 5,所以我们使用公式 f(x) = -2x + 3 来计算:\n");printf("f(x) = -2 * %d + 3 = %d + 3 = %d\n", x, -2 * x, -2 * x + 3);}printf("f(x)的值为: %d\n",result);return 0;
}

当然我们也可以声明函数先使用放后面

/*3.编写一个函数,通过参数输入x的值,计算如下的数学函数值当 x>5时, f(x) = 4x+7;否则 f(x)= -2x+3,返回结果值。*/#include <stdio.h>int calculate_f(int x);  //函数声明int main()
{int x;printf("请输入x的值: ");scanf("%d", &x);int result = calculate_f(x);printf("根据您输入的x值,f(x)的计算过程如下:\n");if (x > 5){printf("因为 x > 5,所以我们使用公式 f(x) = 4x + 7 来计算:\n");printf("f(x) = 4 * %d + 7 = %d + 7 = %d\n", x, 4 * x, 4 * x + 7);}else{printf("因为 x <= 5,所以我们使用公式 f(x) = -2x + 3 来计算:\n");printf("f(x) = -2 * %d + 3 = %d + 3 = %d\n", x, -2 * x, -2 * x + 3);}printf("最终 f(x) 的值为: %d\n", result);return 0;
}int calculate_f(int x) //函数定义
{if (x > 5){return 4 * x + 7;}else{return -2 * x + 3;}
}


4.设计一个函数,统计字符串中大写字母的个数

/*4.设计一个函数,统计字符串中大写字母的个数*/#include <stdio.h>
#include <string.h>int countUpperCase(char string[]);  //函数声明int main(void)
{char str[] = "Hello World";int count = countUpperCase(str);printf("字符串为: %s\n",str);printf("大写字母的个数是: %d\n",count);return 0;}int countUpperCase(char str[])
{int count = 0;int len = strlen(str);for(int i = 0;i < len;i++){if(str[i] >= 'A' && str[i] <= 'Z'){count++;}}return count;}


5.编写一个函数,通过参数输入一个整型数,返回该数各位上数字的平方和;

int sofs(int a)
{if(a == 0)  //递归,结束条件必须在前面return 0;int sum = 0;int g   = a % 10;sum = g * g;sum += sofs( a / 10);  //计算个位数的平方和相加return sum;
}
我在这里举个例子
soft(123)
a不为0
g = 123 % 10 = 12...3     即g为3
sum = 3 * 3 计算出个位数的平方和
递归调用soft(12)
a不为0
g = 12 % 10 = 1...2       即g为2
sum = 2 * 2 计算出个位数的平方和
soft(1)
a为0将不会再进行下次调用
g = 1 % 10 = 0...1        即g为1
sum = 1 * 1
最后sum = 9 + 4 + 1 = 14
即返回sum值为14
/*5.编写一个函数,通过参数输入一个整型数,返回该数各位上数字的平方和;*/
#include <stdio.h>/*int sumofsquar(int a)
{int sum = 0;while(a)  //循环{int  g = a % 10;sum  += g * g;a /= 10;}return sum;
}*/int sofs(int a)
{if(a == 0)  //递归,结束条件必须在前面return 0;int sum = 0;int g   = a % 10;sum = g * g;sum += sofs( a / 10);  //计算个位数的平方和相加return sum;
}int main(void)
{int num = 0;printf("请输入一个整数:");scanf("%d",&num);//    int sum  = sumofsquar(num);
//    printf("%d 各个数位平方和为:%d\n",num,sum);int sum  = sofs(num);printf("%d 各个数位平方和为:%d\n",num,sum);return 0;
}


思考题:
6.编写一个函数,将数组中的数据首尾互换,要求分别用循环和用递归的方法实现

/*6.29思考题:1.编写一个函数,将数组中的数据首尾互换,要求分别用循环和用递归的方法实现*/
#include <stdio.h>/*void reverse(int a[],int n)  //循环实现数据首位互换
{int i = 0,j = n-1;for(; i < j; i++,j--){int t = a[i];a[i]  = a[j];a[j]  = t;}
}int main(void)
{int a[] = {1,3,5,7,9};int n = sizeof(a)/sizeof(a[0]);reverse(a,n);for(int i = 0;i < n;i++) //C99标准{printf("%5d",a[i]);}printf("\n");return 0;
} */
void reverse_v2(int a[],int n)  //递归实现数据互换
{if(n < 2)  //当小于2个数的时候就不该再递归自身了return ;int t  = a[0];a[0]   = a[n-1];a[n-1] = t;reverse_v2(&a[1],n-2);  //&a[1]传递下一个元素的地址 n-2每次少俩个
}int main(void)
{int a[] = {1,3,6,7,9};int n = sizeof(a)/sizeof(a[0]);//打印原始数组printf("原始数组为:");for(int i = 0;i < n;i++){printf("%5d",a[i]);}printf("\n");reverse_v2(a,n);printf("翻转数组为:");for(int i = 0; i < n; i++)  //C99标准{printf("%5d",a[i]);}printf("\n");return 0;
}

碎碎念可能有一些逻辑并不是很完整,我尽力了,若我懂了我会回来修改的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/258591.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot智慧外贸平台源码和论文

网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合&#xff0c;利用java技术建设智慧外贸平台&#xff0c;实现智慧外贸的信息化。则对于进一步提高智慧外贸管理发展&#xff0c;丰富智慧外贸管理经验能起到不少的促进作用。 智慧外贸平台能够通过互…

leetcode206. 反转链表

leetcode206. 反转链表 题目 代码 新链表逐个存储 提取单个节点&#xff0c;添加到新链表的头结点处 class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:new_node Nonecurrent headwhile current:rest current.nexttemp_head …

【2024】如何订阅Netflix奈飞?Netflix奈飞购买教程

【2024】如何订阅Netflix奈飞&#xff1f;Netflix奈飞购买教程 Netflix奈飞作为全球领先的在线流媒体平台之一&#xff0c;拥有丰富的影视资源和独家内容&#xff0c;成为了人们追剧的热门选择。本文将为您介绍如何订阅Netflix奈飞&#xff0c;并提供详细的购买教程&#xff0…

详解结构体内存对齐及结构体如何实现位段~

目录 ​编辑 一&#xff1a;结构体内存对齐 1.1对齐规则 1.2.为什么存在内存对齐 1.3修改默认对齐数 二.结构体实现位段 2.1什么是位段 2.2位段的内存分配 2.3位段的跨平台问题 2.4位段的应用 2.5位段使用的注意事项 三.完结散花 悟已往之不谏&#xff0c;知来者犹可…

Springboot+vue的社区养老服务平台(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的社区养老服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的社区养老服务平台&#xff0c;采用M&#xff08;model&…

IT行业顶级证书盘点:提升职业含金量的必备证书

IT行业有哪些证书含金量高? 在竞争激烈的IT行业&#xff0c;持有一些知名的顶级证书可以显著提升个人的职业含金量和竞争力。本文将盘点IT行业中那些含金量高的顶级证书&#xff0c;并介绍它们的考试内容、培训途径以及对职业发展的重要性&#xff0c;帮助读者更好地规划自己…

设计模式Python实现

过年在家瞎折腾&#xff0c;闲着无聊看到设计模式&#xff0c;于是就想着用Python实现一下。 简单工厂 根据传入的参数决定创建出哪一种产品类的实例。 class CashFactory:def createCashAdapter(self, type):if type "满100减20":return CashReturn(100, 20)elif…

Netty中的适配器、Handler共享和资源管理

ChannelHandler的适配器 有一些适配器类可以将编写自定义的ChannelHandler所需要的工作降到最低限度&#xff0c; 因为它们提供了定义在对应接口中的所有方法的默认实现。因为有时会忽略那些不感兴趣的 事件&#xff0c;所以Netty提供了抽象积累ChannelInboundHandlerAdapter(…

云计算基础-虚拟机迁移原理

什么是虚拟机迁移 虚拟机迁移是指将正在运行的虚拟机实例从一个物理服务器&#xff08;或主机&#xff09;迁移到另一个物理服务器&#xff08;或主机&#xff09;的过程&#xff0c;而不会中断虚拟机的运行。 虚拟机拟机迁移分类虚 热迁移&#xff1a;开机状态下迁移 冷迁…

计算机毕业设计SSM基于的高校学习资源共享系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; vue mybatis Maven mysql5.7或8.0等等组成&#xff0c;B…

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】

深入学习Pandas&#xff1a;数据连接、合并、加入、添加、重构函数的全面指南 Pandas是Python中最强大且广泛使用的数据处理库之一&#xff0c;提供了丰富的函数和工具&#xff0c;以便更轻松地处理和分析数据。在本文中&#xff0c;我们将深入探讨Pandas中一系列数据连接、合…

LabVIEW开发DUP实时监控系统

LabVIEW开发DUP实时监控系统 该项目采用虚拟仪器设计理念&#xff0c;以LabVIEW作为核心技术平台&#xff0c;开发了一套磁控溅射过程的实时监控系统。实现过程中关键参数的全面数据采集与处理&#xff0c;建立完整的历史数据库&#xff0c;以支持涂层技术的改进和系统向模糊控…

Python算法题集_LRU 缓存

Python算法题集_LRU 缓存 题146&#xff1a;LRU 缓存1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【队列字典】2) 改进版一【有序字典】3) 改进版二【双向链表字典】 4. 最优算法 本文为Python算法题集之一的代码示例 题146&#xff1a;LRU …

论文阅读:《Deep Learning-Based Human Pose Estimation: A Survey》——Part 1:2D HPE

目录 人体姿态识别概述 论文框架 HPE分类 人体建模模型 二维单人姿态估计 回归方法 目前发展 优化 基于热图的方法 基于CNN的几个网络 利用身体结构信息提供构建HPE网络 视频序列中的人体姿态估计 2D多人姿态识别 方法 自上而下 自下而上 2D HPE 总结 数据集…

前端小案例——购买电影票(HTML+CSS+JS, 附源码)

一、前言 实现功能&#xff1a; 这段代码实现了一个简单的电影票选座购买的功能界面。 在页面上展示了一个电影院的座位布局&#xff0c;以及右侧显示了电影信息、选座情况、票价、总计等内容。 用户可以通过点击座位来选择购买电影票&#xff0c;每个座位的状态会在点击时改…

18-k8s控制器资源-cronjob控制器

job控制器是执行完一次任务&#xff0c;就结束&#xff1b; cronjob控制器&#xff0c;是基于job控制器&#xff0c;定期频率性执行任务&#xff1b;等同于linux系统中的crontab一样&#xff1b; 1&#xff0c;编辑cronjob资源清单 [rootk8s231 pi]# vim cronjob.yaml apiVers…

《小强升职记:时间管理故事书》阅读笔记

目录 前言 一、你的时间都去哪儿了 1.1 你真的很忙吗 1.2 如何记录和分析时间日志 1.3 如何找到自己的价值观 二、无压工作法 2.1 传说中的“四象限法则 2.2 衣柜整理法 三、行动时遇到问题怎么办&#xff1f; 3.1 臣服与拖延 3.2 如何做到要事第一&#xff1f; 3.…

[OPEN SQL] 更新数据

UPDATE语句用于更新数据库表中的数据 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航班用户(SCUSTOM) 需要操作更新以下数据 1.更新单条数据 语法格式 UPDATE <dbtab> FROM <wa>. UPDATE <dbtab> FROM TABLE <itab>. UPDATE &l…

Github 2024-02-17 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-02-17统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目3Rust项目2Jupyter Notebook项目1PowerShell项目1JavaScript项目1 Black&#xff…

【C++ STL】你真的了解string吗?浅谈string的底层实现

文章目录 底层结构概述扩容机制浅拷贝与深拷贝插入和删除的效率浅谈VS和g的优化总结 底层结构概述 string可以帮助我们很好地管理字符串&#xff0c;但是你真的了解她吗&#xff1f;事实上&#xff0c;string的设计是非常复杂的&#xff0c;拥有上百个接口&#xff0c;但最常用…