数值变量分类 算法i在算法中的作用

以下试题来自:
填空题函数fun的功能是计算xn
double fun(double x,int n) double y=1;
for(i=1;i<=n;i++)
主函数中已正确定义m、a、b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调节器用语句为______。 参考答案m=fun(a,D)+fun(b,D)-fun(a+b,C);
为您推荐的考试题库
你可能感兴趣的试题
1.填空题 参考答案8 42.填空题 参考答案4 3 3 43.填空题 参考答案x4.填空题 参考答案i=0 j=205.填空题 参考答案-4
热门相关试卷
最新相关试卷-i++和 -(i++)有区别么_百度知道
-i++和 -(i++)有区别么
有区别。(1)-i++:是先进行减i运算再加1(2) -(i++):是先进行括号中的加1运算再减i
其他类似问题
为您推荐:
提问者采纳
结果没区别但运算方式有区别()的优先级最高- 与 ++的优先级相同 自右向左左运算第一个 -i++
自右运算 先算i++ 然后才-i第二个-(i++) 先括号 i++
其他8条回答
果将这两个算是赋值给某个变量,那么最终结果是一样的:a = -i++。如;在这里括号没有任何作用;
i = i + 1;b = -(i++);相当于。a = -i++;其实这里考察的是运算符的优先级和左右结合的概念: a = -i
涉及到++和--的时候,建议你不要混用,有些情况是依赖于编译器的.i++和++i的区别在于,前者是用i的原值参与计算,而后再自加,后者是先自加,然后再参与运算.i--和--i与之类似.这里不管你加不加括号,都是以i的原值参加计算,算完后再自加,如果要先自加,使用++i,你可以自己写一段代码试试看.表达式中使用++和--的时候要非常谨慎,建议在日常习惯中把i++或者++i作为单独一句.如果这是考试题,就按照老师讲的来吧.
这是c的运算优先级问题.先处理括号内的。所以-(i++)先自加;不加括号,-i++是计算了再加,即先减再自加。因为自加运算符“++”在后面,是将i-1作为表达式结果返回给a后再对i进行自加。而如果是-++i的话,就先加了再减。
一般i++或者i--用于循环结构里或其他地方的自增值,有时候也在单独的选择题里面考,很容易把应试者饶进去,C语言里括号的优先级别最高,也就是先算括号里的,
看了才晓得 自己也不怎么清楚,只是发表下自己的看法,应该跟优先级有关吧-i++(先减在加),-(i++)------先加加在减
答,没区别。。。因为运算符是有先后的
应该是没有区别的,i++返回的也是自增前的值。
没区别,计算结果是一样的。i最后的值也一样。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁2014全国名校数学试题分类解析汇编(2):L单元 算法初步与复数_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
2014全国名校数学试题分类解析汇编(2):L单元 算法初步与复数
||暂无简介
总评分4.0|
浏览量4013730
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩17页未读,继续阅读
你可能喜欢当前位置:
>>>某算法的程序框图如图所示,其中输入的变量x在1,2,3,…,24这2..
某算法的程序框图如图所示,其中输入的变量x在1,2,3,…,24这24个整数中等可能随机产生.(Ⅰ)分别求出按程序框图正确编程运行时输出y的值为i的概率Pi(i=1,2,3);(Ⅱ)甲、乙两同学依据自己对程序框图的理解,各自编写程序重复运行n次后,统计记录了输出y的值为i(i=1,2,3)的频数.以下是甲、乙所作频数统计表的部分数据.甲的频数统计表(部分)&&&&&&&&&&&&&&&&&&
输出y的值为1的频数
输出y的值为2的频数
输出y的值为3的频数
697乙的频数统计表(部分)
输出y的值为1的频数
输出y的值为2的频数
输出y的值为3的频数
353当n=2100时,根据表中的数据,分别写出甲、乙所编程序各自输出y的值为i(i=1,2,3)的频率(用分数表示),并判断两位同学中哪一位所编写程序符合算法要求的可能性较大.
题型:解答题难度:中档来源:四川
(I)当x从1,3,5,7,9,11,13,15,17,19,21,23这12个数中产生时,输出y的值为1,故P1=12;当x从2,4,8,10,14,16,20,22这8个数中产生时,输出y的值为2,故P2=13;当x从6,12,18,24这4个数中产生时,输出y的值为3,故P3=16;∴输出y的值为1的概率为12;输出y的值为2的概率为13;输出y的值为3的概率为16;(II)当n=2100时,甲、乙所编程序各自输出y的值为i(i=1,2,3)的频率如下:
&输出y的值为1的频率
&输出y的值为2的频率
&输出y的值为3的频率
&3532100比较频率趋势与概率,可得乙同学所编程序符合算法要求的可能性大.
马上分享给同学
据魔方格专家权威分析,试题“某算法的程序框图如图所示,其中输入的变量x在1,2,3,…,24这2..”主要考查你对&&古典概型的定义及计算,程序框图&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
古典概型的定义及计算程序框图
基本事件的定义:
一次试验连同其中可能出现的每一个结果称为一个基本事件。
等可能基本事件:
若在一次试验中,每个基本事件发生的可能性都相同,则称这些基本事件为等可能基本事件。
古典概型:
如果一个随机试验满足:(1)试验中所有可能出现的基本事件只有有限个; (2)每个基本事件的发生都是等可能的; 那么,我们称这个随机试验的概率模型为古典概型.
古典概型的概率:
如果一次试验的等可能事件有n个,那么,每个等可能基本事件发生的概率都是;如果某个事件A包含了其中m个等可能基本事件,那么事件A发生的概率为。古典概型解题步骤:
(1)阅读题目,搜集信息; (2)判断是否是等可能事件,并用字母表示事件; (3)求出基本事件总数n和事件A所包含的结果数m; (4)用公式求出概率并下结论。
求古典概型的概率的关键:
求古典概型的概率的关键是如何确定基本事件总数及事件A包含的基本事件的个数。程序框图的概念:
程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形; 程序框图的构成:
一个程序框图包括以下几部分:实现不同算法功能的相对应的程序框;带箭头的流程线;程序框内必要的说明文字。
设计程序框图的步骤:
第一步,用自然语言表述算法步骤;第二步,确定每一个算法步骤所包含的逻辑结构,并用相应的程序框图表示,得到该步骤的程序框图;第三步,将所有步骤的程序框图用流程线连接起来,并加上终端框,得到表示整个算法的程序框图。
画程序框图的规则:
(1)使用标准的框图符号;(2)框图一般按从上到下、从左到右的方向画;(3)除判断框外,大多数程序框图中的程序框只有一个进入点和一个退出点,判断框是具有超过一个退出点的唯一符号;(4)在图形符号内描述的语言要非常简练清楚。&
几种重要的结构:
顺序结构、条件结构、循环结构。
发现相似题
与“某算法的程序框图如图所示,其中输入的变量x在1,2,3,…,24这2..”考查相似的试题有:
403390749851333636487684888261628128当前访客身份:游客 [
当前位置:
从《算法:C语言实现(第1-4部分)》中的讲递归部分程序5.4有如下一段代码,
问题是:变量i的值一直是?5,即使如下面程序中赋值 i=0;结果i的值还是5,。
试过将eval()函数的内容设为空,则i可正常赋值。 所以i的值不变肯定是和递归函数eval()
有关,但实在不明白是什么原因,而且从语法上也讲不通,变量i赋值竟然不起作用,请放高手解答。
#include &stdafx.h&
#include &stdio.h&
#include &stdlib.h&
typedef struct node *
struct node {};
char a[]=&*+345&;
int main(int argc, char* argv[])
& &int eval();
& &printf(&%d\n&,eval());
& &return 0;
int eval()
while(a[i]==' ') i++;
if(a[i]=='+')
{i++;return eval()+eval();}
if(a[i]=='*')
{i++;return eval()*eval();}
while((a[i]&='0') && (a[i]&='9'))
x=10*x+(a[i++]-'0');
共有17个答案
<span class="a_vote_num" id="a_vote_num_
我知道了,345中间有空格的,的确是逆波兰式求解,(3+4)*5=35,还有这个i应该就是等于5,我没有跟踪调试,函数体里面的几个if(),每个a[i]只会落入其中的一个,i在递归调用中i++不会影响调用者的执行。其实函数递归调用可以用栈来代替,如果你会汇编,而且学过《计算机体系结构》,可以思考下函数调用时调用者怎么处理当前使用的寄存器,被调用函数怎么处理寄存器,我们虽然学的是mips处理器的,但是感觉是相通的。。。如果还有疑问,本人q:叁齐叁久叁武贰武拔
--- 共有 1 条评论 ---
加了两个空格,i最后是7,我加了个 printf("%d",i);
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
i是全局变量,就是遍历一次完整的字符串啊。肯定是五。
<span class="a_vote_num" id="a_vote_num_
你是从哪里看出这个i 没有变化?能否在main里在printf& 一下这个 i 值 ,看看呢?
<span class="a_vote_num" id="a_vote_num_
全局变量默认给int赋值为0。你试试修改a字符串,加两个数字看看i最后是多少。c语言基础不行啊,怎么看起来这本书了?这个书难度有点大的,看看mark weiss的书吧
<span class="a_vote_num" id="a_vote_num_
回复:您指教的不错,不过没有回答问题本身。&
我用debug跟踪如下程序(为方便说明问题,我手工将下面的代码编了行号),查看变量的值,执行到下面第一行的时候,i的值为5,凑巧的是,char a[]的长度也为5,如果改变char a[]的长度,则i的值也相应变化。执行完第4行(i=0)后,查看变量i的值,值仍然为5。我无法理解的就是这个问题,至于说c语言基础,我确实不熟系,不过我学过汇编语言,即使看汇编也是有给i赋值为0,不清楚什么机制保护i只能为5.
1、int main(int argc, char* argv[])& 2、{& 3、int eval();& 4、 &i=0;& 5、 & printf(&%d\n&,eval());& 6、 & return 0;& }&
<span class="a_vote_num" id="a_vote_num_
逆波兰式求解吧,一楼说的对,i是全局变量,你把最前面那个i删掉,定义在函数体里面你再试试。可以学学c,对c不太了解吧
<span class="a_vote_num" id="a_vote_num_
main 里面i=0肯定有效的,eval()调用结束后 i=5;不管在哪操作i,i的值肯定会变 & 你这个算法有问题吧,后面那个while里面用i++?不对
<span class="a_vote_num" id="a_vote_num_
回复红薯说愿闻其翔:不错,i是全局变量,其实问题不在这,我只是为了说明疑问总才这么提问题。在递归函数eval()中,用到数组元素a[i],按照常理,i应该是从0开始的,但无论i定义在哪里(在main()函数之前,在main()函数中,在eval函数中(定义为static int ),跟踪eval()是,i总是从5开始,程序计算的结果和预期的不一样。感觉楼上二位是高手,下面是原始代码,是计算后缀表示的,这个表达式如果用常用的中缀表达式,应该是:(5*((9+8)*(4*6)+7)=2075,楼上二位能否单调试调试下面的程序,调通了告诉我一声?!
#include &stdafx.h& #include &stdio.h& #include &stdlib.h& typedef struct node * struct node {}; char a[]=&*+7**46+895&; int i=0; int main(int argc, char* argv[]) { & &int eval(); & & & &j=eval(); & &printf(&%d \n&,j); & &return 0; }
int eval() { int x=0; while(a[i]==' ') i++; if(a[i]=='+') {i++;return eval()+eval();} if(a[i]=='*') {i++;return eval()*eval();} if ((a[i]&='0') && (a[i]&='9')) {i++;return eval();} while((a[i]&='0') && (a[i]&='9')) x=10*x+(a[i++]-'0'); }
<span class="a_vote_num" id="a_vote_num_
程序刷新一下,删掉冗余信息(我在VC下调试不通):
#include &stdafx.h&
#include &stdio.h&
#include &stdlib.h&
char a[]=&*+7**46+895&;
int main(int argc, char* argv[])
& &int eval();
& &j=eval();
& &printf(&%d\n&,j);
& &return 0;
int eval()
while(a[i]==' ') i++;
if(a[i]=='+')
{i++;return eval()+eval();}
if(a[i]=='*')
{i++;return eval()*eval();}
while((a[i]&='0') && (a[i]&='9'))
x=10*x+(a[i++]-'0');
<span class="a_vote_num" id="a_vote_num_
问题不在 变量 i, &在于eval()中的while循环, 你把while &改成 if,再编译跑一下,个人感觉你应该好好梳理一下递归是怎么运算的
int eval()& {& int x=0;& while(a[i]==' ') i++;& if(a[i]=='+')& {i++;return eval()+eval();}& if(a[i]=='*')& {i++;return eval()*eval();}& if((a[i]&='0') && (a[i]&='9'))& x=(a[i++]-'0');& & &}&
更多开发者职位上
有什么技术问题吗?

我要回帖

更多关于 多变量的遗传算法 的文章

 

随机推荐