c 多文件全局变量_C开发实战-多文件编程和自定义函数实战

自定义函数实战

  1. 读取用户从键盘输入的字符串,和两个操作数,并判断字符串后完成数据的算术运算(加减乘除)
    首先在头文件calc.h中声明四个函数
/*声明加减乘除运算*/#ifndef _CALC_H#define _CALC_Hint calc_add(int left, int right);int calc_sub(int left, int right);int calc_multi(int left, int right);int calc_divide(int left, int right);#endif // !

然后在源文件calc.c中实现四个函数

/*实现四个函数*/int calc_add(int left,int right) {return left + right;}int calc_sub(int left, int right) {return left - right;}int calc_multi(int left, int right) {return left * right;}int calc_divide(int left, int right) {return left / right;}

在主程序中接受用户的输入并调用函数完成算术运算

其中字符串的相等性判断使用了C库提供的strcmp()函数实现,其中两个字符串如果大于返回1,小于返回-1,等于返回0

#define _CRT_SECURE_NO_WARNINGS#include "calc.h"#include #include #include /*计算器比较字符串使用库函数strcmp()实现@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/24*/int main(int argc, char* argv[]){char cmd[6] = "";int flag = 1;while (flag) {int left = 0;int right = 0;int result = 0;printf("请输入一个字符串(add,sub,multi,divide,exit),按回车结束");scanf("%s", cmd);if (0 == strcmp(cmd, "exit")) {flag = 0;printf("退出while循环");}else {printf("请输入第一个操作数,按回车结束");scanf("%d", &left);printf("请输入第二个操作数,按回车结束");scanf("%d", &right);if (0 == strcmp(cmd, "add")) {result = calc_add(left, right);}else if (0 == strcmp(cmd, "sub")) {result = calc_sub(left, right);}else if (0 == strcmp(cmd, "multi")) {result = calc_multi(left, right);}else if (0 == strcmp(cmd, "divide")) {result = calc_divide(left, right);}else {printf("你的输入有误,请检查");}printf("result = %d ", result);}}system("pause");return 0;}

程序运行结果

cfc50da359429de37fc2f79ec40847d5.png
  1. 自定义实现strcmp()函数,完成两个字符串的比较

首先在头文件my_string.h中声明比较两个字符串大小的函数

/*声明一个函数 用于比较两个字符串的大小*/#ifndef MY_STR_CMP_H#define MY_STR_CMP_Hint my_str_cmp(char left[], char right[]);#endif 

然后在源文件my_string.c中实现my_str_cmp()函数

/*实现两个字符串比较大小的函数*/int my_str_cmp(char left[], char right[]) {//不相等元素的位置int i = 0;//如果没有到结束字符,同时两个字符相等while (left[i]!='0' &&right[i]!='0'&&left[i]==right[i]) {i++;}//都为0if (left[i] == right[i]) {return 0;}else if (left[i] > right[i]) {return 1;}else if (left[i]

在主程序my_string_main文件中编写测试方法

#define _CRT_SECURE_NO_WARNINGS#include #include #include "my_string.h"/*测试my_str_cmp()方法*/void test_my_str_cmp() {char left[1024] = "left";char right[1024] = "right";int result = my_str_cmp(left, right);printf("字符串%s和字符串%s的比较结果是%d ", left, right, result);system("pause");}/*my_str_cmp()函数测试@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/24*/int main(int argc, char* argv[]){test_my_str_cmp();return 0;}

程序运行结果

74891796390d89ddd556f55693cdcd44.png

3.使用自定义的字符串比较大小函数my_str_cmp()以及读取用户的输入字符串和两个操作数完成算术运算

#define _CRT_SECURE_NO_WARNINGS#include #include #include "my_string.h"/*计算器比较字符串使用自定义函数my_str_cmp()实现@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/24*/int main(int argc, char* argv[]){char cmd[6] = "";int flag = 1;while (flag) {int left = 0;int right = 0;int result = 0;printf("请输入一个字符串(add,sub,multi,divide,exit),按回车结束");scanf("%s", cmd);if (0==my_str_cmp(cmd,"exit")) {flag = 0;printf("退出while循环");}else {printf("请输入第一个操作数,按回车结束");scanf("%d", &left);printf("请输入第二个操作数,按回车结束");scanf("%d", &right);if (0 == my_str_cmp(cmd, "add")) {result = calc_add(left, right);}else if (0 == my_str_cmp(cmd, "sub")) {result = calc_sub(left, right);}else if (0 == my_str_cmp(cmd, "multi")) {result = calc_multi(left, right);}else if (0 == my_str_cmp(cmd, "divide")) {result = calc_divide(left, right);}else {printf("你的输入有误,请检查");}printf("result = %d ", result);}}system("pause");return 0;}

程序运行结果

0c0f887e8c36aa3ec6dace79a80d8241.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值