取一个整数各偶数位上的数构成一个新的数字

1 题目

我可太难了,这题我的思路有点复杂,遇到的困难很多,总是值传递搞不清楚,地址传递总是写错。

从低位开始取出一个整数s的各奇数位上的数,剩下的偶数位的数依次构成一个新数t。
例如:
输入s:3716924
输出t:762
知识点1:值传递和地址值传递,刚刚错了好几遍
知识点2:将数组中所有元素变成一个数,各十百千怎么计算

2 思考

3 答案

3.1 聪明的方法

/*
从低位开始取出一个整数s的各奇数位上的数,
剩下的偶数位的数依次构成一个新数t。 
例如
输入s:3716924
输出t:762 
*/
#include <conio.h>
#include <stdio.h> 
int fun (int s)
{int sl=10,t;s /= 10;t = s % 10;while(s>0){ s = s / 100;t = s%10*sl + t;sl = sl*10;}return t;
}int main()
{ int s,t;printf("Please enter s:"); scanf("%d", &s);t=fun(s);printf("The result is: %d\n", t);return 0;
}

在这里插入图片描述

3.2 笨方法

/*从低位开始取出一个整数s的各奇数位上的数,剩下的偶数位的数依次构成一个新数t。
例如:
输入s:3716924
输出t:762 
知识点1:值传递和地址值传递,刚刚错了好几遍
知识点2:将数组中所有元素变成一个数,各十百千怎么计算
*/
#include <stdio.h>
#include <string.h>
#define N 20
#define HL 1 //如果是从整数的右边低位到高位则为1;从整数的左边高位到低位是0void deala(int a,int str[],int *p)
{int i=0;while((a>10)&&(i<N)){str[i]=a%10;i++;a=a/10;}str[i++]=a;*p=i;
}int main(void)
{int a=0,b=0,tmp=0;int z=0,n,j;int str1[N]={0};int str2[N]={0};int num[N]={0};printf("请输入一个整数\n");scanf("%d",&a);//怎么遍历一个整数的各个位,并放进数组中,取余加除法deala(a,str1,&n);printf("数组元素长度n=%d\n",n);//n是整数s的长度,也是数组的长度printf("str1全部元素是\n");for(z=0;z<n;z++){printf("%d\t",str1[z]);}printf("\n");//如何将数组元素倒着来,很重要n/2+1,不然没有任何效果for(z=0;z<(n/2+1);z++){tmp=str1[z];str1[z]=str1[n-z-1];str1[n-z-1]=tmp;}printf("str1全部元素是逆序\n");for(z=0;z<n;z++){printf("%d\t",str1[z]);}printf("\n");printf("数组元素长度n=%d\n",n);//n是整数s的长度,也是数组的长度#if HLif(n%2==0){//元素个数是偶数,则挑数组中下标为偶数的位printf("OO\n");for(z=0,j=0;z<n;z++){if(z%2==0){//挑数组中下标为偶数的位str2[j]=str1[z];j++;}}}else{//元素个数是奇数,则挑数组中下标为奇数的位printf("JJ\n");for(z=0,j=0;z<n;z++){if(z%2!=0){//挑数组中下标为奇数的位str2[j]=str1[z];j++;}}}
#elsefor(z=0,j=0;z<n;z++){if(z%2!=0){str2[j]=str1[z];j++;}}
#endif//j是新的取过  组成的数组的长度printf("str2各个元素是\n");for(z=0;z<j;z++){printf("%d\t",str2[z]);}printf("\n");//将数组的各个元素组成新的数据for(z=0;z<j;z++){num[z]=j-z-1;}for(z=0;z<j;z++){while(num[z]>0){str2[z]=str2[z]*10;num[z]--;}}printf("str2经过处理组成的新的数组元素是\n");for(z=0;z<j;z++){printf("%d\t",str2[z]);}printf("\n");for(z=0;z<j;z++){b=b+str2[z];}printf("b=%d\n",b);return 0;
}

在这里插入图片描述

3.3 笨的方法——居然还写错了,尴尬,在做度程序题的时候发现怎么做都不对,还以为题目出错了,没想到是我自己搞错了。从低位开始取数,从低位开始取数,从低位开始取数。

看了下之前运行结果的图片,amazing,自己不知道是眼拙,还是盲目的自信,结果都错成那样了还能说自己终于做出来了。糊涂啊

历经千难险阻终于实现了功能

/*从低位开始取出一个整数s的各奇数位上的数,剩下的偶数位的数依次构成一个新数t。
例如:
输入s:3716924
输出t:762 
知识点1:值传递和地址值传递,刚刚错了好几遍
知识点2:将数组中所有元素变成一个数,各十百千怎么计算
*/
#include <stdio.h>
#include <string.h>
#define N 20void deala(int a,int str[],int *p)
{int i=0;while((a>10)&&(i<N)){str[i]=a%10;i++;a=a/10;}str[i++]=a;*p=i;
}int main(void)
{int a=0,b=0;int z=0,n,j;int str1[N]={0};int str2[N]={0};int num[N]={0};printf("请输入一个整数\n");scanf("%d",&a);deala(a,str1,&n);//怎么遍历一个整数的各个位???printf("str1全部元素是\n");for(z=0;z<n;z++){printf("%d\t",str1[z]);}printf("\n");for(z=0,j=0;z<n;z++){if(z%2!=0){str2[j]=str1[z];j++;}}printf("str2奇数位元素是\n");for(z=0;z<j;z++){printf("%d\t",str2[z]);}printf("\n");for(z=0;z<j;z++){num[z]=j-z-1;}for(z=0;z<j;z++){while(num[z]>0){str2[z]=str2[z]*10;num[z]--;}}printf("str2奇数位元素变成是\n");for(z=0;z<j;z++){printf("%d\t",str2[z]);}printf("\n");for(z=0;z<j;z++){b=b+str2[z];}printf("b=%d\n",b);return 0;
}

在这里插入图片描述

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

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

相关文章

软件架构模式+系统架构

架构模式对比 分层模式 一般信息系统中最常见的4层划分如下&#xff1a; Presentation layer 表示层&#xff08;也就是UI层&#xff09;Application layer 应用层&#xff08;也就是服务层&#xff09;Business logic layer 业务逻辑层&#xff08;也就是领域层&#xff09;…

【C++历险记】面向对象|菱形继承及菱形虚拟继承

个人主页&#xff1a;兜里有颗棉花糖&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

Python 没有 pip 包问题解决

最近需要搞一个干净的Python,从官网上直接下载解压可用的绿色版&#xff0c;发现无法正常使用PiP 一 官网下载Python https://www.python.org/downloads/ 选择 embeddable package,这种是免安装的包&#xff0c;解压后可以直接使用。 二 配置环境变量 添加环境变量&#xff1a…

【Python数据分析】数据分析之numpy基础

实验环境&#xff1a;建立在Python3的基础之上 numpy提供了一种数据类型&#xff0c;提供了数据分析的运算基础&#xff0c;安装方式 pip install numpy导入numpy到python项目 import numpy as np本文以案例的方式展示numpy的基本语法&#xff0c;没有介绍语法的细枝末节&am…

【混合时变参数系统参数估计算法】使用范数总和正则化和期望最大化的混合时变参数系统参数估计算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MATLAB中circshift函数转化为C语言

背景 有项目算法使用matlab中circshift函数进行运算&#xff0c;这里需要将转化为C语言&#xff0c;从而模拟算法运行&#xff0c;将算法移植到qt。 MATLAB中circshift简单介绍 circshift是循环移位函数。可以使用于数组和矩阵元素的循环移位。 当A是数组 Bcircshift(A,p);如果…

安全学习DAY20_自动化工具项目武器库介绍

信息打点-自动化工具 文章目录 信息打点-自动化工具本节思维导图&概述 各类红蓝队优秀工具项目集合&#xff1a;All-Defense-Tool 自动化-武器库部署F8x 自动化信息搜集-网络空间AsamF 自动化信息搜集-企查信息ENScan 自动化信息搜集-综合架构-ARL&NemoARL灯塔Nemo_Go …

知识图谱实战应用26-基于知识图谱构建《本草纲目》的中药查询与推荐项目应用

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用26-基于知识图谱构建《本草纲目》的中药查询与推荐项目应用,本文通过Py2neo连接到知识图谱数据库,系统实现了中药的快速查询、关系分析、智能推荐和知识展示等功能。用户可以输入中药的名称或特征进行查询,系统将从知…

归并排序的详解!

本文旨在讲解归并排序的实现&#xff08;递归及非递归&#xff09;搬好小板凳&#xff0c;干货来了&#xff01; 前序&#xff1a; 在介绍归并排序之前&#xff0c;需要给大家介绍的是什么是归并&#xff0c;归并操作&#xff0c;也叫归并算法&#xff0c;指的是将两个顺序序列…

阿里云对象存储oss-文件上传过程详解(两种方式)

阿里云对象存储oss-文件上传过程详解{两种方式} 方式一(最新代码,时间:2023/8/27)(1)如何配置系统变量(2)完整代码 方式二(跟黑马最新教程同代码)(1)在复制下来的代码中(2)完整代码 方式一(最新代码,时间:2023/8/27) 问题:需要配置系统变量才能够使用 (1)如何配置系统变量 以wi…

解决 .csv 文件上传到 pgsql 的字符报错问题

目录 背景问题解决办法 背景 上传 .csv 文件进行数据导入到 pg 时&#xff0c;报错显示如下&#xff1a; ods.tbl_inp_fee_detail.csv数据上传失败 报错信息:org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00 Where: C…

MariaDB数据库服务器

目录 一、什么是数据库&#xff1f; 二、什么是关系型数据库&#xff1f; 三、数据库字符集和排序规则是什么&#xff1f; 四、常用数据类型 五、Mariadb数据库相关配置案例 一、什么是数据库&#xff1f; 数据库&#xff08;DB&#xff09;是以一定方式长期存储在计算机硬盘内…

[C++] STL_list常用接口的模拟实现

文章目录 1、list的介绍与使用1.1 list的介绍1.2 list的使用 2、list迭代器3、list的构造4、list常用接口的实现4.1 list capacity4.2 插入删除、交换、清理4.2.1 insert任意位置插入4.2.2 push_front头插4.2.3 push_back尾插4.2.4 erase任意位置删除4.2.5 pop_front头删4.2.6 …

2023年“羊城杯”网络安全大赛 Web方向题解wp 全

团队名称&#xff1a;ZhangSan 序号&#xff1a;11 不得不说今年本科组打的是真激烈&#xff0c;初出茅庐的小后生没见过这场面QAQ~ D0n’t pl4y g4m3!!! 简单记录一下&#xff0c;实际做题踩坑很多&#xff0c;尝试很多。 先扫了个目录&#xff0c;扫出start.sh 内容如下…

Compose学习 - 环境配置及compose、kotlin插件、gradle、AndroidStudio版本对应关系

最近学习Compose&#xff0c;一开始学习的Compose版本是1.1.1&#xff0c;学习的过程中发现&#xff0c; LazyHorizontalGrid这个方法只有在1.2.0以后版本才支持。 想着既然要升级&#xff0c;直接用最新的好了。后面按照官网建议&#xff0c;下载了最新的AndroidStudio&#…

初步了解ES

一、ES基础查询 1、es基础查询 1.1 准备数据 # 准备数据 PUT test_index/_doc/1 {"name":"顾老二","age":30,"from": "gu","desc": "皮肤黑、武器长、性格直","tags": ["黑", &…

【100天精通Python】Day52:Python 数据分析_Numpy入门基础与数组操作

目录 1 NumPy 基础概述 1.1 NumPy的主要特点和功能 1.2 NumPy 安装和导入 2 Numpy 数组 2.1 创建NumPy数组 2.2 数组的形状和维度 2.3 数组的数据类型 2.4 访问和修改数组元素 3 数组操作 3.1 数组运算 3.2 数学函数 3.3 统计函数 4 数组形状操作 4.1 重塑数组形…

nvm安装electron开发与编译环境

electron总是安装失败&#xff0c;下面说一下配置办法 下载软件 nvm npmmirror 镜像站 安装nvm 首先最好卸载node&#xff0c;不卸载的话&#xff0c;安装nvm会提示是否由其接管&#xff0c;保险起见还是卸载 下载win中的安装包 配置加速节点nvm node_mirror https://npmmi…

Java 中数据结构LinkedList的用法

LinkList 链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是并不会按线性的顺序存储数据&#xff0c;而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。 一个单向链表包含两个值: 当前节点…

PATH系统环境变量配置教程【图文步骤】

开发Java程序&#xff0c;需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令)&#xff0c;而这些工具在JDK的安装目录的 bin目录下&#xff0c;如果不配置环境变量&#xff0c;那么这些命令只可以在该目录下执行。我们不可能把所有的java文件都放到JDK 的bin目录下&…