当前位置: 首页 > news >正文

山西做网站的公司有哪些泉州百度关键词优化

山西做网站的公司有哪些,泉州百度关键词优化,上海十大知名装修公司,服装箱包网站建设题目:函数将str字符串中的5个数字字符串转换为整数,并保存在二维数组m的最后一行,各元素为3、-4、16、18、6。并经函数move处理后,运行结果如下: 18 6 3 -4 16 16 18 6 3 -4 -4 16 …

题目:函数将str字符串中的5个数字字符串转换为整数,并保存在二维数组m的最后一行,各元素为3、-4、16、18、6。并经函数move处理后,运行结果如下:

18     6     3    -4    16

16    18     6     3    -4

-4    16    18     6     3

 3    -4    16    18     6

注意:不得增行或删行,也不得更改程序的结构。

分析:

第1步:先从字符串中把5个数字字符串抽取出来,存放在二维数组m的最后一行。对于这一步,从字符串中抽取5个数字字符串转换为整数比较容易,但将转换后的整数放在数组的最后一行,对于中职生来说有点难度,因为这项工作是通过abstract函数来实现的,这个函数的声明为:

void abstract(char str[],int m[]);

该函数的第一个形参char str[]表示要处理的字符串,第二个形参int m[]是一个一维数组,这与题目中所说的二维数组是不相同的,但在学习二维数组时,教课书中对二维数组介绍时写道:可以将二维数组看作是一维数组的一维数组,即可以将一个二维数组看成是一个特殊的一维数组,这个一维数组的元素又是一个一维数组,即二维数组是由嵌套的一维数组组成。因此,我们仅需把二维数组m的最后一行传递给第二个形参即可。

第2步,执行函数move对二维数组m进行处理,在这步分析时,一定要联想到第1步,即,抽取出来的整数是放在最后一行。针对最后一行我们发现其他各行是下一行向右循环移动一个元素得出的结果。

图片

如果这样分析,就能理解编程的思路,如果没有仔细分析题目,仅看到题目中二维数组各元素的排列,那么,有可能认为二维数组中的元素是按下图所示方法产生的。如果是这样想的,那就无法正确修改题目中的错误。

图片

有了正确的编程思路,再看程序就很容易改正错误了。程序如下:


#include<stdio.h>
#define ROW 4
#define COL 5
void abstract(char str[],int m[]){int i,j,k,sign=1;for(k=j=i=0;str[i];i++) {if(isdigit(str[i])) {if(str[i-1]=='-')sign=-1;k=k*10+str[i]-'0';}
/***********FOUND***********/if(isdigit(str[i])&&str[i+1]!=0){m[j++]=k*sign;sign=1;k=0;                }}
}
void move(int m[][COL]){int i,j;for(i=ROW-2;i>=0;i--)for(j=0;j<COL;j++)
/***********FOUND***********/m[i][j]=m[i+1][j+1];       
}
int main()
{char str[]="digit3posi-4plus16zero18six6 ";int m[ROW][COL];int i,j;
/***********FOUND***********/abstract(str,m[0]);move(m);for(i=0;i<ROW;i++){for(j=0;j<COL;j++)printf("%4d",m[i][j]);printf("\n");}return 0;
}

先来看主函数main,它所做的工作就是调用abstract函数将字符串中的数字字符串抽取出来转换为整数存放到m的最后一行,然后,调用move对数组m进行处理,最后输出结果。

在main中有个错误点,就是调用abstract,其中的两个实参,一个是str,一个是m[0],其中实参str对应的形参为char str[],符合调用规则。实参m[0]对应的形参为int m[], 也符合调用规则,因为m[0]的类型式int []与形参的类型int []匹配,但题目要求将str中的整数存放在二维数组m的最后一行,因此,需要修改其为m[ROW-1],即将二维数组的最后一行传递给形参m[]。

分析函数abstract。6到11行是从字符串中抽取整数,当遇到数字时要判断该数字的上一个字符是否为'-',如果是,说明这个数是负数,改变sign变量,使其记录正在处理的数的正负号。13到17行的功能是判断如果下一个字符不是数字,当前处理的数结束,并为处理下一个数初始化变量。按此思路,就知道第11行错在哪了,修改第11行为:

if(isdigit(str[i])&& !isdigit(str[i+1])){

如果将第11行改为:

else if(isdigit(str[i-1])) {

是否可行?

请参看文章:C程序训练:程序改错题目分析(2019)

这个答案是错的。
http://www.wooajung.com/news/28892.html

相关文章:

  • 哪些网站是单页面应用程序新型网络营销模式
  • 网站支付宝支付接口申请2024小学生时事新闻十条
  • 清远公司网站建设网络销售公司怎么运作
  • 怎么用服务器做局域网网站网络营销与推广
  • asp网站后台无法编辑网站推广的工作内容
  • 重庆建设网站哪里好网站建设黄页
  • 个人做营利性质网站会怎么样黄页88推广多少钱一年
  • mvc做网站用的多不多武汉关键词seo排名
  • 关于插画的网站上街网络推广
  • 优秀的网站深圳外贸网络推广渠道
  • 网站建设属于硬件还是软件青岛网络推广
  • 网站建设需要政府集中采购吗私人网站管理软件
  • wordpress外网端口茶叶seo网站推广与优化方案
  • 律所网站建设方案书怎么写怎么投稿各大媒体网站
  • 配置无法运行wordpress优化软件刷排名seo
  • 六安网站建设青岛网站制作设计
  • 有那个网站可以做报名链接的常用网站推广方法及资源
  • 网站建设营销策划书网络营销有什么岗位
  • app网站开发成功案例西安百度推广外包
  • 学做西点的网站如何提高百度关键词排名
  • 永春网站建设友情链接只有链接
  • ppt做书模板下载网站有哪些内容seo技术软件
  • 有什么ae做动图的网站西安seo服务公司
  • 陕西网站建设公司找哪家最佳磁力吧ciliba磁力链
  • 怎么用默认程序做网站网址收录入口
  • 网站开发设计工程师免费百度下载
  • 厦门做网站哪家强品牌网络营销成功案例
  • 中建八局第一建设有限公司是国企吗旺道seo系统
  • 网站是做流程数字营销案例
  • 做网络推广选择哪个网站好免费顶级域名注册