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.hqwc.cn/news/471985.html

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

相关文章

Java基于 SpringBoot 的高校校园点餐系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

C++中对象的构造与析构顺序

一、对象的构造顺序 对象的构造&#xff0c;先被创建的对象&#xff0c;先被构造&#xff0c;先调用其构造函数 class A { private:int _a 0; public://构造函数A(int a 0){_a a;cout << "A(int a 0)" << " " << _a << endl…

【python--迭代生成器闭包面向对象继承多态】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;深度学习 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; python--迭代生成器闭包面向对象继承多态 往期内容1.迭代for...in字典的迭代列表迭代 生成器推导式的…

列表推导式与生成表达式的区别

列表推导式与生成式表达式的区别&#xff1a; 列表推导式 res[i for i in range(6)] print(res) 结果&#xff1a; [0, 1, 2, 3, 4, 5] 生成表达式&#xff1a; res(i for i in range(6)) print(res) 结果&#xff1a; <generator object <genexpr> at 0x0000013EAD0…

【医学图像分割 2024】VM-UNet

文章目录 【医学图像分割 2024】VM-UNet摘要1. 介绍2. 预备知识3. 方法3.1 VM-UNet3.2 VSS Block3.3 损失函数 4. 实验4.1 数据集4.2 实现细节4.3 主要结果4.4 消融实验 5. 结果 【医学图像分割 2024】VM-UNet 论文题目&#xff1a;VM-UNet Vision Mamba UNet for Medical Imag…

mysql数据库 mvcc

在看MVCC之前我们先补充些基础内容&#xff0c;首先来看下事务的ACID和数据的总体运行流程 数据库整体的使用流程: ACID流程图 mysql核心日志: 在MySQL数据库中有三个非常重要的日志binlog,undolog,redolog. mvcc概念介绍&#xff1a; MVCC&#xff08;Multi-Version Concurr…

蓝桥杯真题:距离和

import java.util.*; public class 距离和 {public static void main(String[] args){String st"LANQIAO";int ans0;char ch[]st.toCharArray();for(int i0;i<ch.length;i){for(int ji1;j<ch.length;j){ansMath.abs(ch[j]-ch[i]);}}System.out.println(ans);} …

OS内存管理

内存 定义 内存是计算机用于存储数据和程序的硬件设备&#xff0c;它允许计算机快速读取和写入数据。内存通常是临时存储&#xff0c;其内容在计算机关闭或断电时会丢失。内存可存放数据。程序执行前需要先放到内存中才能被CPU处理(缓和CPU与硬盘之间的速度矛盾)。 在多道程…

问题:在额定电压500V以下的电路中,使用的各种用电设备,一般称为(_ _ _)用电设备 #媒体#媒体#媒体

问题&#xff1a;在额定电压500V以下的电路中,使用的各种用电设备,一般称为&#xff08;_ _ _)用电设备 参考答案如图所示

【动态规划】【记忆化搜索】【状态压缩】1681. 最小不兼容性

作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 本文涉及知识点 动态规划汇总 状态压缩 记忆化搜索 1681. 最小不兼容性 给你一个整数数组 nums​​​ 和一个整数 k 。你需要将这个数组划分到 k 个相同大小的子集中&#xff0c;使得同一…

2024年广东省安全员C证第四批(专职安全生产管理人员)证模拟考试题库及广东省安全员C证第四批(专职安全生产管理人员)理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年广东省安全员C证第四批&#xff08;专职安全生产管理人员&#xff09;证模拟考试题库及广东省安全员C证第四批&#xff08;专职安全生产管理人员&#xff09;理论考试试题是由安全生产模拟考试一点通提供&#…

H5 色彩流动炫酷引导页源码

H5 色彩流动炫酷引导页源码 源码介绍&#xff1a;一款H5色彩流动炫酷引导页源码 下载地址&#xff1a; https://www.changyouzuhao.cn/9961.html