C语言实验-数组、字符串以及指针

一:

求一个N×N矩阵主、次对角线上所有元素之和。矩阵输入、矩阵输出、矩阵对角线求和分别用三个子函数实现。(N的值由用户从键盘输入)

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>void print(int(*arr)[3], int N)
{for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){printf("%d ", *(arr[i] + j));}printf("\n");}printf("\n");
}void input(int(*arr)[3], int N)
{for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){scanf("%d", (arr[i] + j));}}
}int fun(int (*arr)[3], int N)//指针数组的形式传参
{int ret = 0;for (int i = 0; i < N; i++){ret += *(arr[i] + i);}return ret;
}int main()
{printf("输入数组行列数:\n");int N = 0;scanf("%d", &N);int(*arr)[3] = (int(*)[3])malloc(sizeof(int) * N * N);//数组指针,[3]中的3没有任何意义,但是不能去掉printf("输入数组:\n");input(arr, N);print(arr, N);printf("对角线之和为%d", fun(arr, N));return 0;
}

二: 

编写程序,将一个数列实现循环右移一位。

例如:  输入数列的长度:6

输入原始数列:1  2  3  4  5  6

循环右移一位后变为:6  1  2  3  4  5

数列输入、数列输出、数列右移分别用三个子函数实现。(数列的个数由用户从键盘输入)

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>void print(int* arr, int N)
{for (int i = 0; i < N; i++){printf("%d ", arr[i]);}printf("\n");
}void input(int* arr, int N)
{for (int i = 0; i < N; i++){scanf("%d", &arr[i]);}
}void fun(int* arr, int N)
{int* arr2 = (int*)malloc(sizeof(int) * N);for (int i = 1; i < N; i++){arr2[i] = arr[i - 1];}arr2[0] = arr[N - 1];print(arr2, N);
}int main()
{printf("请输入数组长度:");int N = 0;scanf("%d", &N);int* arr = (int*)malloc(sizeof(int) * N);//动态开辟空间input(arr, N);fun(arr, N);return 0;
}

三:

在2题的基础上,改写程序,实现数列右移n位。数列输入、数列输出、数列右移分别用三个子函数实现。(数列的个数、右移的位数由用户从键盘输入)

例如:  输入数列的长度:6

输入原始数列:1  2  3  4  5  6

        输入右移的位数:3

循环右移3位后变为:4  5  6  1  2  3 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>void print(int* arr, int N)
{for (int i = 0; i < N; i++){printf("%d ", arr[i]);}printf("\n");
}void input(int* arr, int N)
{for (int i = 0; i < N; i++){scanf("%d", &arr[i]);}
}void fun(int* arr, int N, int a)
{int* arr2 = (int*)malloc(sizeof(int) * N);for (int i = a; i < N; i++){arr2[i] = arr[i - a];}for (int i = 0; i < a; i++){arr2[i] = arr[N - a + i];}print(arr2, N);
}int main()
{printf("请输入数组长度:");int N = 0;scanf("%d", &N);int* arr = (int*)malloc(sizeof(int) * N);input(arr, N);printf("右移的位数:");int a = 0;scanf("%d", &a);fun(arr, N, a);return 0;
}

四: 

编写程序,删除数列中的某个数。数列输入、数列输出、数列删除分别用三个子函数实现。(数列、要删除的数值都由用户从键盘输入,有则删除——所谓删除就是后序的元素往前覆盖,无则提示“该数不存在。”)

例如:  输入数列的长度:11

输入原始数列:1  2  3  4  5  6  2  8  -5  2  7

        输入要删除的数: 2

删除以后的数列长度:8

删除以后的数列:1  3  4  5  6  8  -5  7

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>void print(int* arr, int N)
{for (int i = 0; i < N; i++){printf("%d ", arr[i]);}printf("\n");
}void input(int* arr, int N)
{for (int i = 0; i < N; i++){scanf("%d", &arr[i]);}
}void fun(int* arr, int N, int a)//N位数组长度 a为要删除元素
{int num = N;int* arr2 = (int*)malloc(sizeof(int) * N);int j = 0;int i = 0;while (j < N){if (arr[j] == a){j++;num--;}arr2[i++] = arr[j++];}printf("删除以后的数列长度:%d\n", num);print(arr2, num);
}int main()
{printf("输入数组长度:");int N = 0;scanf("%d", &N);int* arr = (int*)malloc(sizeof(int) * N);input(arr, N);printf("输入要删除的数:");int a = 0;scanf("%d", &a);fun(arr, N, a);return 0;
}

五:

编写程序,将数列中大于平均值的元素往前放,小于平均值的数往后放。数列输入、数列输出、数列求平均值、数列重排分别用四个子函数实现。(数列长度由用户从键盘输入)

例如:  输入数列的长度:10

输入原始数列:1  5  15  23  7  9  19  10  -5  22

其平均值为:10.6

重排以后的数列:15  23  19  22  1  5  7  9  10  -5

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>void print(int* arr, int N)
{for (int i = 0; i < N; i++){printf("%d ", arr[i]);}printf("\n");
}void input(int* arr, int N)
{for (int i = 0; i < N; i++){scanf("%d", &arr[i]);}
}double average(int* arr, int N)
{int ret = 0;double sum = 0;for (int i = 0; i < N; i++){sum += arr[i];}return sum / N;
}void fun(int* arr, int N)
{int ave = average(arr, N);int i = 0;int j = N;while (j > i)//当i位置的数小于平均值,j位置的值大于平均值,交换i 和j指向的值{while (arr[j] < ave){j--;}while (arr[i] > ave){i++;}if (j > i){int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}}
}int main()
{printf("输入数组元素个数:");int N = 0;scanf("%d", &N);int* arr = (int*)malloc(sizeof(int) * N * N);printf("输入数组:");input(arr, N);printf("其平均值为:%.1lf\n", average(arr, N));fun(arr, N);printf("重拍之后的数组:");print(arr, N);return 0;
}

六: 

编写子函数fun,其功能是将形参数列中小于平均值且最接近平均值的数返回,main函数负责输入、输出。

例如:   输入数列的长度:10

输入数列:46、30、32、40、6、17、45、15、48、26

         数列的平均值:30.50

         小于平均值且最接近平均值的数为:30

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>void print(int* arr, int N)
{for (int i = 0; i < N; i++){printf("%d ", arr[i]);}printf("\n");
}void input(int* arr, int N)
{for (int i = 0; i < N; i++){scanf("%d", &arr[i]);}
}double average(int* arr, int N)
{double sum = 0;for (int i = 0; i < N; i++){sum += arr[i];}return sum / N;
}int fun(int* arr, int N)
{double ave = average(arr, N);double gap = 0;int ret = arr[0];for (int i = 1; i < N; i++){gap = fabs(arr[i] - ave);if (gap < fabs(ret - ave)){ret = arr[i];}}return ret;}int main()
{printf("输入数列的长度:");int N = 0;scanf("%d", &N);int* arr = (int*)malloc(sizeof(int) * N * N);printf("输入数组:");input(arr, N);printf("平均值为:%.2lf\n", average(arr, N));printf("小于平均值且最接近平均值的数为:%d", fun(arr, N));return 0;
}

七: 

编写程序,将用户输入的字符串中从第i个到第j个之间的字符逆序颠倒。(字符串、i、j的值都由用户从键盘输入)

例如: 输入字符串:abcdefgh

       输入i:3

       输入j:7

颠倒以后的字符串为:abgfedch

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void swap(char* ch1, char* ch2)
{char tmp = *ch1;*ch1 = *ch2;*ch2 = tmp;
}void reverse(char* str, int i, int j)
{while (i < j){swap(&str[i], &str[j]);i++;j--;}
}int main()
{char str[50] = {0};//长度设为50printf("输入字符串:");scanf("%s", str);//输入int i = 0; int j = 0;printf("\n输入i:");scanf("%d", &i);printf("\n输入j:");scanf("%d", &j);reverse(str,i-1,j-1);printf("\n颠倒以后的字符串为:%s", str);return 0;
}

 

 八:

编写程序,删除字符串中的某个字符。(字符串、要删除的字符都由用户从键盘输入,有则删除——所谓删除就是后序的元素往前覆盖,无则提示“该字符不存在。”)

例如:  输入原始字符串:abcebacebaghbf

        输入要删除的字符: b

删除以后的字符串:aceaceaghf

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>void fun(char *str,char a)
{char str1[50] = "\0";int i = 0;int j = 0;while (str[i] != '\0'){while(str[i] == a){i++;}str1[j] = str[i];i++;j++;}str[++j] = '\n';for (int i = 0; i < j; i++){str[i] = str1[i];}
}int main()
{printf("输入字符串:\n");char str[50] = "\0";scanf("%s", str);getchar();char a = '\0';printf("输入要删除的字符: ");scanf("%c", &a);fun(str,a);printf("删除以后的字符串:%s",str);	return 0;
}

九:

编写程序,将一个数字字符串转换成面值相同的整数输出。(假设全是整数,不需要考虑小数情况)

例如:  输入数字字符串:21459     (这里输入的是一个字符串,放在一个char型数组里。)

        输出整数: 21459     (这里输出的是一个int型变量)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>int fun(char *str)
{int ret = 0;int i = 0;while (str[i] != '\0'){ret = (str[i]-'0') + ret * 10;i++;}return ret;
}int main()
{printf(" 输入数字字符串:\n");char str[50] = "\0";scanf("%s", str);getchar();printf("输出整数:%d", fun(str));return 0;
}

 

十: 

编写程序,将一个字符串中的数字字符串转换成对应的整数输出 (假设全是整数,不需要考虑小数情况)

例如:  输入字符串:abs123efe45sefe89sef

            输出整数:123  45  89       (输出的是3个整数)

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>void fun(char* str)
{int i = 0;printf("输出整数:\n");while (str[i] != '\0'){int ret = 0;int flag = 0;while (str[i] <= '9' && str[i] >= '0'){flag = 1;ret = str[i] - '0' + ret * 10;i++;}if (flag != 0){printf("%d ", ret);}i++;}
}int main()
{printf("输入字符串:\n");char str[50] = "\0";scanf("%s", str);getchar();fun(str);return 0;
}

取码点赞👍!

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

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

相关文章

有哪些好用的局域网电脑监控系统软件?

企业员工不好管理&#xff1f;&#xff1f;&#xff1f; 局域网已成为企业日常运营不可或缺的一部分。 然而&#xff0c;随着网络技术的普及&#xff0c;员工在局域网中的不当行为也日益增多&#xff0c;如滥用网络资源、泄露敏感信息、消极怠工等。 为了解决这些问题&#x…

植物大战僵尸杂交版

1.感谢作者潜艇伟伟迷 2.大小大概110M&#xff0c;下载链接在下方 链接&#xff1a;https://pan.baidu.com/s/1Ew6iTg0_d_Ut8N9_18KGLw 提取码&#xff1a;yspa 3.祝大家玩的开心

C++-10

1.C一个程序&#xff0c;实现两个类&#xff0c;分别存放输入的字符串中的数字和字母&#xff0c;并按各自的顺序排列&#xff0c; 类中实现-一个dump函数&#xff0c;调C用后输出类中当前存放的字符串结果。 例如&#xff0c;输入1u4y2a3d,输出:存放字母的类&#xff0c;输出a…

树,二叉树的基本概念介绍,二叉树的性质

目录 树 树的定义 树的相关概念 树的存储结构 树在实际中的运用&#xff08;表示文件系统的目录树结构 &#xff09; 二叉树 二叉树的定义 现实中的二叉树 二叉树的特点 特殊的二叉树 1.斜树 2.满二叉树 3.完全二叉树 二叉树的性质 性质1&#xff1a;二叉树的第…

网络基础(1)网络编程套接字UDP

要完成网络编程首先要理解原IP和目的IP&#xff0c;这在上一节已经说明了。 也就是一台主机要进行通信必须要具有原IP和目的IP地址。 端口号 首先要知道进行网络通信的目的是要将信息从A主机送到B主机吗&#xff1f; 很显然不仅仅是。 例如唐僧要去到西天取真经&#xff0…

源码篇--Nacos服务--中章(8):Nacos服务端感知客户端实例变更-3

文章目录 前言一、客户端实例变更&#xff1a;二、实例变更感知&#xff1a;2.1 实例注册信息通知&#xff1a;2.1.1 接收DistroDataRequest 请求&#xff1a;2.1.2 onReceive 处理请求&#xff1a;2.1.3 processData 处理请求&#xff1a;2.1.4 handlerClientSyncData 处理数据…

k8s集群Grafana精选dashboard页面

文章目录 参考文档 Grafana自选模板推荐模板&#xff1a;13332、13824、14518Grafana默认配置我们选择 Node Exporter/Nodes 的 Dashboard 进去&#xff1a;点击 Kubernetes/Networking/Cluster 进去使用模板查看结果 Grafana接入Prometheus数据Grafana添加监控模板导入 1860_r…

体验用AI写代码

近两年&#xff0c;AI确实迎来了大爆发&#xff0c;2023年也成了AI时代的元年&#xff0c;去年下半年的时候&#xff0c;国内月之暗面出品的Kimi成了新的AI热门&#xff0c;也体验用Kimi修改论文&#xff0c;以及用图片生成代码&#xff0c;代码准确度还是蛮高的。做为SRE&…

使用Python的Tkinter库创建你的第一个桌面应用程序

文章目录 准备工作创建窗口和按钮代码解释运行你的应用程序结论 在本教程中&#xff0c;我们将介绍如何使用Python的Tkinter库创建一个简单的桌面应用程序。我们将会创建一个包含一个按钮的窗口&#xff0c;点击按钮时会在窗口上显示一条消息。 准备工作 首先&#xff0c;确保…

扩展大型视觉-语言模型的视觉词汇:Vary 方法

在人工智能领域&#xff0c;大型视觉-语言模型&#xff08;LVLMs&#xff09;正变得越来越重要&#xff0c;它们能够处理多种视觉和语言任务&#xff0c;如视觉问答&#xff08;VQA&#xff09;、图像字幕生成和光学字符识别&#xff08;OCR&#xff09;。然而&#xff0c;现有…

Docker--compose概述与部署

目录 一、概述 1. Compose简介 1.1 docker compose常用命令 1.2 Compose配置常用字段 2. YAML简介 2.1 YAML支持的数据结构 2.2 YML文件编写注意事项 2.3 Docker Compose文件结构 3. Docker-Compose安装 ​编辑 4.docker Compose撰写nginx 镜像 1. 准备环境 ​编辑…

Zabbix 安装部署说明文档

Zabbix是一个开源的网络监控和管理系统&#xff0c;其架构设计用于提供企业级的监控解决方案。以下是Zabbix的主要组件&#xff1a; 1.Zabbix Server&#xff1a;这是Zabbix系统的核心组件&#xff0c;负责接收Agent程序报告的系统可用性、系统完整性和统计数据。Zabbix Serve…

CSS 06

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度,因此&#xff0c;为了有效地减少服务…

【深度学习】YOLOv5,金属表面的缺陷检测,GC10-DET数据集

目录&#xff1a; 文章目录 数据集数据集转换下载yolov5创建 dataset.yaml训练参数开始训练数据分布训练结果问询、帮助 数据集 数据集地址&#xff1a; https://github.com/lvxiaoming2019/GC10-DET-Metallic-Surface-Defect-Datasets 数据集下载方式&#xff1a; Downlo…

有趣的大模型之我见 | Claude AI

最近我的朋友圈被 Claude 3 严重刷屏。因为它在 Performance Benchmark 和 Vision Capabilities 中的表现荣登第一。 对 Claude AI 的喜欢是从它第二个版本出来。仅从我个人的简单应用场景的体验是&#xff0c;Claude 对于 prompt 的理解度&#xff0c;尤其是对中文的理解度高…

PHP源码_在线艺术字体在线生成转换设计网站源码

最全的字体转换器在线转换、艺术字体在线生成器和字体下载&#xff0c;包括书法字体在线转换、毛笔字在线生成器&#xff0c;更有草书字体、篆体字、连笔字、POP字体转换器等中文和英文字体。 支持自己添加字体&#xff0c;在线艺术字体转换器&#xff0c;织梦内核艺术字体在线…

.NET操作 Access (MSAccess)

注意&#xff1a;新项目推荐 Sqlite &#xff0c;Access需要注意的东西太多了&#xff0c;比如OFFICE版本&#xff0c;是X86还是X64 连接字符串 ProviderMicrosoft.ACE.OleDB.15.0;Data Source"GetCurrentProjectPath"\\test.accdb//不同的office版本 连接字符串有…

MySQL Workbench 数据库常用操作

大家好哦&#xff0c;我是程序员徐师兄&#xff0c;今天为大家打来的是MySQL Workbench 数据库常用操作。 文章目录 一、连接数据库二、进入数据库三、创建数据库四、设置默认数据库五、创建数据表六、查看表数据七、查看数据表 一、连接数据库 二、进入数据库 三、创建数据库 …

Shopee怎么选品成功率高达80%?请学

电商圈内流传着一句话&#xff1a;三分靠运营&#xff0c;七分靠选品。 选品在电商项目中至关重要&#xff0c;也是一个非常考验技巧和经验的环节。选品选择得好&#xff0c;后续的每一步都会变得相对轻松。 那么要怎么在众多商品中脱颖而出&#xff0c;提高在Shopee平台上选…

Llama images - 记录我看到的那些羊驼

来自 &#xff1a; DREAM: Distributed RAG Experimentation Framework