写在最前:这是我c语言暑假作业的最后一题了,我几乎是一天完成一题没有间断过,除了在火车上的特殊情况。这意味着我的暑假接近尾声了,期待我的大二新生活。

28、任意给一个9位整数;再在其中插入4个乘号,使分得的5个整数的乘积最大;

输入:正整数n;

输出:被分得的5个整数、得到的最大乘积值。

另:试编写一方法,任给一个自然数(不定长、以字符串的形式作为此方法的参数),编程确定在其中插入一个乘号(),使得被分割的两个自然数之积最大,要求输出其二者相乘的算式形式。(如7282144:7282144=5914368)

题目分析:

在9位数中插入4个乘号

我忍不住想起了我做的第19题

那题要求在一个6位数中随机插入2个加号

然后相加求最大值

我就把加号在不同位置的情况都写了一遍

那叫一个麻烦

今天这题很相似

不过更复杂

这么长的数字

我肯定是用字符串来处理了

可是想起上一次把数组转换为整型数字时的麻烦

我决定找方法简化

运气不错,

我学到了一个新的库函数

int atoi(const char *str)

开头要导入头文件 stdlib.h

这个函数可以把字符串转换为整型的数字

我用字符串输入的9位数

插入4个乘号后分割为5个数字

我只需要把字符串分割,

转换为整型数字然后相乘

找出数值最大的就可以了

至于第2题

输入任意长度的数字

用字符串储存

然后分割为两个部分

转换为整数再相乘

把所有的情况产生的值进行比较

找出最大值

我给题目标出重点:

分割示意图:

纸上谈兵结束,

第一题代码如下:

#include

#include

#include

//定义将数字字符转化为整型数字的函数,分割出来个位数时,用这个会方便许多

int fun(char c){

int a=c-'0';

return a;

}

//定义求乘积最大的函数

void max(char *s){

char a[10];//分割的时候可能会用到这个的字符串

int s1,s2,s3,s4,s5,i,j,k,t,m1,m2,m3,m4,m5,m=0;//s1~s5记录分割后的5个数字

//最后一个乘号不确定的状态

s1=fun(s[0]);//单个字符转数字

s2=fun(s[1]);

s3=fun(s[2]);

for(i=4;i<9;i++){

j=0;

for(k=3;k

a[j++]=s[k];//分割出第4个数字

a[j]='\0';//字符串最后一定要加上 '\0' 来表示结束,我一开始没有加导致计算出错

s4=atoi(a);

j=0;

for(k=i;k<9;k++)

a[j++]=s[k];//分割出第5个数字

a[j]='\0';

s5=atoi(a);

t=s1*s2*s3*s4*s5;

if(m

m=t;//用打擂台的方法确定最大值

m1=s1;m2=s2;m3=s3;m4=s4;m5=s5;

}

}

//倒数第2个乘号不确定的状态

s1=fun(s[0]);//单个字符转数字

s2=fun(s[1]);

s5=fun(s[8]);

for(i=3;i<8;i++){

j=0;

for(k=2;k

a[j++]=s[k];//分割出第3个数字

a[j]='\0';

s3=atoi(a);

j=0;

for(k=i;k<8;k++)

a[j++]=s[k];//分割出第4个数字

a[j]='\0';

s4=atoi(a);

t=s1*s2*s3*s4*s5;

if(m

m=t;//用打擂台的方法确定最大值

m1=s1;m2=s2;m3=s3;m4=s4;m5=s5;

}

}

//第2个乘号不确定的状态

s1=fun(s[0]);//单个字符转数字

s4=fun(s[7]);

s5=fun(s[8]);

for(i=2;i<7;i++){

j=0;

for(k=1;k

a[j++]=s[k];//分割出第2个数字

a[j]='\0';

s2=atoi(a);

j=0;

for(k=i;k<7;k++)

a[j++]=s[k];//分割出第3个数字

a[j]='\0';

s3=atoi(a);

t=s1*s2*s3*s4*s5;

if(m

m=t;//用打擂台的方法确定最大值

m1=s1;m2=s2;m3=s3;m4=s4;m5=s5;

}

}

//第2个乘号不确定的状态

s3=fun(s[6]);//单个字符转数字

s4=fun(s[7]);

s5=fun(s[8]);

for(i=1;i<6;i++){

j=0;

for(k=0;k

a[j++]=s[k];//分割出第1个数字

a[j]='\0';

s1=atoi(a);

j=0;

for(k=i;k<6;k++)

a[j++]=s[k];//分割出第2个数字

a[j]='\0';

s2=atoi(a);

t=s1*s2*s3*s4*s5;

if(m

m=t;//用打擂台的方法确定最大值

m1=s1;m2=s2;m3=s3;m4=s4;m5=s5;

}

}

//打印结果

printf("%d*%d*%d*%d*%d=%d\n",m1,m2,m3,m4,m5,m);

}

int main(){

//定义变量,输入数据

char s[80];

printf("输入一个9位整数:\n");

scanf("%s",s);

//调用函数计算结果

max(s);

return 0;

}

运行测试:

这么大的数字

运算结果是否准确我无法判断

不过我数字分割的结果貌似是对的

第二题代码如下:

#include

#include

#include

//定义求乘积最大的函数

void max(char *s){

char a[80];//a临时储存分割的字符串,字符串转整型时数字会用到

int m1,m2,m=0,s1,s2,i,j,k,t,len;//定义一些要用到的变量

len=strlen(s);//输入的长度是任意的,可以用这个函数确定

for(i=1;i

k=0;

for(j=0;j

a[k++]=s[j];

a[k]='\0';//最后一定要加 \0

s1=atoi(a);//字符串转数字

k=0;

for(j=i;j

a[k++]=s[j];

a[k]='\0';

s2=atoi(a);

t=s1*s2;

if(m

m=t;//打擂台法求最大值

m1=s1;

m2=s2;

}

}

//打印结果

printf("%d*%d=%d\n",m1,m2,m);

}

int main(){

//定义变量,输入数据

char s[80];

printf("输入一个整数:\n");

scanf("%s",s);

//调用函数计算结果

max(s);

return 0;

}

运行测试:

c语言中乘号的作用,c:乘号相关推荐

  1. C语言的格式输出 C语言中字符的作用:

    这是C语言的格式输出,%c,%y这些代表你要输出的数据的数据类型:%d 表示输出十进制有符号的整数. 1.%u 十进制无符号整数. 2.%f 表示输出浮点数. 3.%s表示输出 字符串. 4.%c表示 ...

  2. Context是怎么在Go语言中发挥关键作用的

    Context 是 Go 语言独有的设计,在其他编程语言中很少见到类似的概念,用一句话解释 Context 在 Go 语言中的作用就是: Context 为同一任务的多个 goroutine 之间提供 ...

  3. [c语言]c语言中的#和##作用、参数表省略号作用

    1. c语言中的# c语言中的# 用于字符串化参数 #123 相当于 "123" #define STR(X) #X print(STR(123));// 输出字符串 " ...

  4. 在c语言中 函数的作用是什么,C语言程序中函数的定义

    C语言程序中函数的定义 C语言的函数问题是困扰很多学者的问题的,c程序中什么是函数呢?下面啦小编为大家精心推荐的c程序中函数的定义,希望能够对您有所帮助. C语言读书笔记--函数 先来看看函数的一般形 ...

  5. c语言中单词的作用与形式,C语言基础教程:单词的用法与规则

    在C语言中,单词是由若干个有序的字符组成的,单词的集合称为词汇.C语言的单词有如下几种:标识符.关键字.运算符.分隔符.常量.字符串和注释符. 下面对上述7种单词的词法规则逐一详述,有些单词,例如,关 ...

  6. 指针在c语言中起什么作用,编程中指针的作用是什么?

    原标题:编程中指针的作用是什么? 编程语言中,何为指针?它们都有什么用呢?其实通俗点讲,将一个椅子放进一个小房间锁上门,你若想拿出凳子,就必须有锁门的钥匙,而这钥匙就是指针. 举一个简单的例子: in ...

  7. c 语言中是什么作用是什么意思,在C语言中%C是什么意思

    问: return在C语言中是什么意思 答: C语言中 函数的定义格式是返回值类型 函数名称(函数的参数) (void开头的函数可以不返回任何值)函数执行完成之后,靠返回值与主函数保持联系.如int ...

  8. 在c语言中逗号的作用,C语言逗号运算符应用优先级与运算规则理解

    一.逗号运算符介绍 逗号运算符是C语言中常见的数学运算符号儿,多个运算的表达式之间可以用逗号分隔开来,然后用逗号分隔的这几个表达式可以单独进行运算,最后的运算结果取最后一个表达式的值进行返回. 逗号运 ...

  9. c语言中箭头的作用,为什么C中的箭头(-)运算符存在?

    我将您的问题解释为两个问题:1)为什么->甚至存在,以及2)为什么.不自动取消引用指针.这两个问题的答案都有历史渊源. 为什么会->存在? 在C语言的第一个版本(1975年5月第6版Uni ...

  10. c 语言中引用的作用是什么,C语言为什么开头都加;#includestdio.h有什么作用?...

    慕少森 stdio.h 哪些 是 头文件,里面包含一些常用的 函数例如 stdio.h里面有 scanf();printf()这些函数,没有stdio就不能用这些函数在C语言家族程序中,头文件被大量使 ...

最新文章

  1. matlab解决多旅游商问题,多旅行商问题的matlab程序
  2. python编辑器_资深程序员:学Python我推荐你用这几款编辑器
  3. CPU 架构 —— ARM 架构
  4. NYOJ 1272:表达式求值(2016河南省ACM-A)
  5. 光猫修改rms服务器地址大全,光猫服务器dns怎么设置教程
  6. 金蝶云星空根据采购价目表写入自定义采购入库单是否价目表字段
  7. 多级父子关系数据库设计
  8. 基于crontab的服务器恶意程序
  9. winform实现任务栏隐藏、通知栏图标及右键、类似QQ隐藏窗体等功能
  10. python print 格式化输出
  11. 计算机语言排行榜2015,2015年3月编程语言排行榜:F#排名达到11
  12. linux中无法联网小电脑图标不见,电脑桌面上的网络连接图标突然不见怎么解决?...
  13. fn映射 mac 键盘_如何在Mac OS X下修改Fn键的属性?
  14. Linux基础之 getopts
  15. (转)淘宝面试的几个算法题
  16. RationalDMIS 7.1 如何更改CAD模型的坐标系
  17. 如何恢复Mac上未保存的Word文件?
  18. 程序人生-我已经努力了七年
  19. 20190517考试ocp052碰到的题目
  20. uniapp清除缓存和获取数据

热门文章

  1. boost I 数学领域常用的六个库
  2. 【转载】常用精品API接口汇总
  3. 中文汉字 hex十六进制 互转
  4. 关于OpenCV3.1读取摄像头图像黑屏情况
  5. oracle报错ORA-39002: invalid operationORA-39070: Unable to open the log file.ORA-29283: invalid file
  6. 运用RapidMiner进行关联分析(算子有read csv,select attribute,fp-growth,create association rules)
  7. java计算机毕业设计MVC土特产交易平台系统源码+mysql数据库+系统+lw文档+部署
  8. 体验管理 | 以 [ 新员工入职场景 ] 为例,教你如何设计员工体验?
  9. ubuntu wifi图标变成问号 网速很慢
  10. 萧毅舟;2.22黄金原油操作策略,强势的多头何时休