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.mfbz.cn/a/391336.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java程序员面试专栏 Java领域】Java集合 核心面试指引

关于Java 集合部分的核心知识进行一网打尽,主要包括Java各类集合以及Java的HashMap底层原理,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 集合基本概念和比较 关于集合的基本分类和知识 Java集合有哪些种类 Java 集合, 也叫作容器…

读书笔记之《神经科学讲什么》:神经科学的知与不知

《神经科学讲什么——我们究竟该如何理解心智、意识和语言》的作者是罗伯特伯顿 Robert A. Burton&#xff0c; 原作名: A Skeptics Guide to the Mind: What Neuroscience Can and Cannot Tell Us About Ourselves&#xff0c;于2017年出版。 罗伯特伯顿&#xff08;Robert A…

【刷题】牛客— NC21 链表内指定区间反转

链表内指定区间反转 题目描述思路一&#xff08;暴力破解版&#xff09;思路二&#xff08;技巧反转版&#xff09;思路三&#xff08;递归魔法版&#xff09;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&…

SpringBoot整合GateWay(详细配置)

前言 在Spring Boot中整合Spring Cloud Gateway是一个常见的需求&#xff0c;尤其是当需要构建一个微服务架构的应用程序时。Spring Cloud Gateway是Spring Cloud生态系统中的一个项目&#xff0c;它提供了一个API网关&#xff0c;用于处理服务之间的请求路由、安全、监控和限流…

Dynamo批量修改多文件项目基点参数

Hello 大家好&#xff01;我是九哥~ 前几天群里有个小伙伴&#xff0c;咨询了我一个问题&#xff1a;如何批量修改多个 Revit 文件的项目基点&#xff1f; 本来是想帮忙改改程序&#xff0c;奈何打开以后&#xff0c;我看到了无数的节点和连线&#xff0c;而且这个问题&#x…

WordPress站点成功升级后的介绍页地址是什么?

我们一般在WordPress站点后台 >> 仪表盘 >> 更新中成功升级WordPress的话&#xff0c;最后打开的就是升级之后的版本介绍页。比如boke112百科前两天升级到WordPress 6.4.2后显示的介绍页如下图所示&#xff1a; 该介绍除了介绍当前版本修复了多少个问题及修补了多少…

爬虫-华为云空间备忘录导出到docx-selenium控制浏览器行为-python数据处理

背景适用情况介绍 老的荣耀手机属于华为云系统&#xff0c;家里人换了新荣耀手机属于荣耀云系统无法通过云空间将备忘录转移到新手机&#xff0c;不想让他们一个一个搞&#xff0c;于是整了一晚上想办法爬取下来。从网页抓取下来&#xff0c;然后存到docx文档中&#xff08;包…

WordPress主题YIA移动端文章页的面包屑不显示怎么办?

平时我们一般都会在文章页导航菜单下方显示面包屑&#xff0c;类似于“当前位置&#xff1a;boke112百科 WordPress 正文”。平时用浏览器调试站点的时候&#xff0c;在Edge浏览器的“切换设备仿真”中&#xff0c;不管是选择什么设备都会显示面包屑。具体如下图所示&#xf…

四种mfc140u.dll丢失的解决方法,有效恢复mfc140u.dll丢失

mfc140u.dll文件的重要性&#xff0c;当系统中出现mfc140u.dll丢失的情况时&#xff0c;可能会导致一系列问题和影响。因此&#xff0c;保持mfc140u.dll文件的完整性对于系统和应用程序的稳定运行至关重要。一旦出现mfc140u.dll文件丢失的情况&#xff0c;我们需要采取有效的方…

Karnaugh map (卡诺图)

【Leetcode】 289. Game of Life According to Wikipedia’s article: “The Game of Life, also known simply as Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970.” The board is made up of an m x n grid of cells, wh…

mfc140u.dll文丢失导致应用程序无法正常,有哪些解决办法

mfc140u.dll是Microsoft Foundation Classes&#xff08;MFC&#xff09;的一个重要组件&#xff0c;它提供了许多用于开发Windows应用程序的功能和工具。然而&#xff0c;当系统或应用程序升级、恶意软件感染或文件损坏以及用户错误操作等情况发生时&#xff0c;mfc140u.dll文…

C/C++内存管理详解

目录 一、C内存分布 二、C语言与C内存管理方式 1、C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 2、C中的内存管理方式&#xff1a;new/delete 三、operator new与operator delete函数 1、函数概念&#xff1a; 2、函数使用&#xff1a; 3、底层原理…

【机器学习笔记】12 聚类

无监督学习概述 监督学习 在一个典型的监督学习中&#xff0c;训练集有标签&#x1d466; &#xff0c;我们的目标是找到能够区分正样本和负样本的决策边界&#xff0c;需要据此拟合一个假设函数。无监督学习 与此不同的是&#xff0c;在无监督学习中&#xff0c;我们的数据没…

4 月 9 日至 4 月 10 日,Hack.Summit() 2024 首聚香江

Hack.Summit() 是一系列 Web3 开发者大会。2024 年的活动将于 2024 年 4 月 9 日至 4 月 10 日在香港数码港举行。自十年前首次举办以来&#xff0c;此次会议标志着 Hack.Summit() 首次在亚洲举办&#xff0c;香港被选为首次亚洲主办城市&#xff0c;这对 Hack VC 和该地区都具…

BuildAdmin - 免费开源可商用!基于 ThinkPHP8 和 Vue3 等流行技术栈打造的商业级后台管理系统

一款包含 PHP 服务端和 Vue 前端代码的 admin 管理系统&#xff0c;实用性很强&#xff0c;推荐给大家。 BuildAdmin 是一个成熟的后台管理系统&#xff0c;后端服务采用 ThinkPHP8 &#xff0c;数据库使用 Mysql&#xff0c;前端部分则使用当前流行的 Vue3 / TypeScript / Vi…

Netty Review - ByteBuf扩容机制源码解析

文章目录 Pre概述前置知识&#xff1a; 名词解释writeByte 源码解析实现ensureWritable0(minWritableBytes)ensureWritable0alloc().calculateNewCapacity 总结 Pre Netty Review - 直接内存的应用及源码分析 Netty Review - 底层零拷贝源码解析 Netty Review - ByteBuf内存…

python - OSError:错误没有名为 [‘pytorch_model.bin‘

python - OSError&#xff1a;错误没有名为 [‘pytorch_model.bin’] 自己训练的模型存储好了以后 model MT5ForConditionalGeneration.from_pretrained(“ner/best”) 之前还可以跑 现在报错 错误没有名为 [‘pytorch_model.bin’] 还原了一下conda env 把四版变成三版了 …

人工智能学习与实训笔记(十五):Scikit-learn库的基础与使用

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 一、介绍 1. 1 Scikit-learn的发展历程及定义 1.2 理解算法包、算法库及算法框架之间的区别和联系 二、Scikit-learn官网结构 三、安装与设置 3.1 Python环境的安装与配置 3.2 Scikit-lea…

【精选】Java面向对象进阶——接口细节:成员特点和接口的各种关系

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

1.逆向基础

文章目录 一、前言二、什么是逆向&#xff1f;三、软件逆向四、逆向分析技术五、文本字符六、Windows系统1.Win API2.WOW643.Windows消息机制4.虚拟内存 一、前言 原文以及后续文章可点击查看&#xff1a;逆向基础 逆向真的是一个很宏大的话题&#xff0c;而且大多数都是相当…
最新文章