问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言!求分析这个表达式……

发布网友 发布时间:2023-05-18 09:50

我来回答

3个回答

热心网友 时间:2023-09-29 10:10

  算法( Algorithm ):计算机解题的基本思想方法和步骤。
  算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。
  计数、求和、求阶乘等简单算法 , 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。
  1. 用随机函数产生 100 个 [0 , 99] 范围内的随机整数,统计个位上的数字分别为 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 的数的个数并打印出来。
  本题使用数组来处理,用数组 a[100] 存放产生的确 100 个随机整数,数组 x[10] 来存放个位上的数字分别为 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 的数的个数。即个位是 1 的个数存放在 x[1] 中,个位是 2 的个数存放在 x[2] 中,……个位是 0 的个数存放在 x[10] 。
  void main()
  { int a[101],x[11],i,p;
  for(i=0;i<=11;i++)
  x[i]=0;
  for(i=1;i<=100;i++)
  { a[i]=rand() % 100;
  printf("%4d",a[i]);
  if(i%10==0)
  printf("\n");
  }
  for(i=1;i<=100;i++)
  { p=a[i]%10;
  if(p==0) p=10;
  x[p]=x[p]+1;
  }
  for(i=1;i<=10;i++)
  { p=i;
  if(i==10) p=0;
  printf("%d,%d\n",p,x[i]);
  }
  printf("\n");
  }
  2. 求两个整数的最大公约数、最小公倍数
  分析:求最大公约数的算法思想: ( 最小公倍数 = 两个整数之积 / 最大公约数 )
  (1) 对于已知两数 m , n ,使得 m>n ;
  (2) m 除以 n 得余数 r ;
  (3) 若 r=0 ,则 n 为求得的最大公约数,算法结束;否则执行 (4) ;
  (4) m ← n , n ← r ,再重复执行 (2) 。
  例如 : 求 m=14 ,n=6 的最大公约数 .
  void main()
  { int nm,r,n,m,t;
  printf("please input two numbers:\n");
  scanf("%d,%d",&m,&n);
  nm=n*m;
  if (m<n)
  { t=n; n=m; m=t; }
  r=m%n;
  while (r!=0)
  { m=n;
  n=r;
  r=m%n;
  }
  printf(" 最大公约数 :%d\n",n);
  printf(" 最小公倍数 :%d\n",nm/n);
  }
  3. 验证哥德*猜想
  (任意一个大于等于 6 的偶数都可以分解为两个素数之和)
  基本思想: n 为大于等于 6 的任一偶数,可分解为 n1 和 n2 两个数,分别检查 n1 和 n2 是否为素数,如都是,则为一组解。如 n1 不是素数,就不必再检查 n2 是否素数。先从 n1=3 开始,检验 n1 和 n2 ( n2=N-n1 )是否素数。然后使 n1+2 再检验 n1 、 n2 是否素数,… 直到 n1=n/2 为止。
  利用上面的 prime 函数,验证哥德*猜想的程序代码如下:
  #include "math.h"
  int prime(int m)
  { int i,k;
  k=sqrt(m);
  for(i=2;i<k;i++)
  if(m%i==0) break;
  if(i>=k)
  return 1;
  else
  return 0;
  }
  main()
  { int x,i;
  printf("please input a even number(>=6):\n");
  scanf("%d",&x);
  if (x<6||x%2!=0)
  printf("data error!\n");
  else
  for(i=2;i<=x/2;i++)
  if (prime(i)&&prime(x-i))
  {
  printf("%d+%d\n",i,x-i);
  printf(" 验证成功 !");
  break;
  }
  }
  4. 选择法排序(升序)
  基本思想:
  1 )对有 n 个数的序列(存放在数组 a(n) 中),从中选出最小的数,与第 1 个数交换位置;
  2 )除第 1 个数外,其余 n-1 个数中选最小的数,与第 2 个数交换位置;
  3 )依次类推,选择了 n-1 次后,这个数列已按升序排列。
  5. 冒泡法排序(升序)
  基本思想: ( 将相邻两个数比较,小的调到前头 )
  1 )有 n 个数(存放在数组 a(n) 中),第一趟将每相邻两个数比较,小的调到前头,经 n-1 次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;
  2 )第二趟对余下的 n-1 个数(最大的数已“沉底”)按上法比较,经 n-2 次两两相邻比较后得次大的数;
  3 )依次类推, n 个数共进行 n-1 趟比较,在第 j 趟中要进行 n-j 次两两比较。
  6. 合并法排序(将两个有序数组 A 、 B 合并成另一个有序的数组 C ,升序)
  基本思想:
  1 )先在 A 、 B 数组中各取第一个元素进行比较,将小的元素放入 C 数组;
  2 )取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完;
  3 )将另一个数组剩余元素抄入 C 数组,合并排序完成。
  程序段如下:
  void main()
  { int a[10],b[10],c[20],i,ia,ib,ic;
  printf("please input the first array:\n");
  for(i=0;i<10;i++)
  scanf("%d",&a[i]);
  for(i=0;i<10;i++)
  scanf("%d",&b[i]);
  printf("\n");
  ia=0;ib=0;ic=0;
  while(ia<10&&ib<10)
  { if(a[ia]<b[ib])
  { c[ic]=a[ia]; ia++; }
  else
  { c[ic]=b[ib]; ib++; }
  ic++;
  }
  while(ia<=9)
  { c[ic]=a[ia];
  ia++; ic++;
  }
  while(ib<=9)
  { c[ic]=b[ib];
  b++; ic++;
  }
  for(i=0;i<20;i++)
  printf("%d\n",c[i]);
  }
  7. 顺序查找法(在一列数中查找某数 x )
  基本思想:一列数放在数组 a[1]---a[n] 中,待查找的数放在 x 中,把 x 与 a 数组中的元素从头到尾一一进行比较查找。用变量 p 表示 a 数组元素下标, p 初值为 1 ,使 x 与 a[p] 比较,如果 x 不等于 a[p] ,则使 p=p+1 ,不断重复这个过程;一旦 x 等于 a[p] 则退出循环;另外,如果 p 大于数组长度,循环也应该停止。(这个过程可由下语句实现)
  void main()
  { int a[10],p,x,i;
  printf("please input the array:\n");
  for(i=0;i<10;i++)
  scanf("%d",&a[i]);
  printf("please input the number you want find:\n");
  scanf("%d",&x);
  printf("\n");
  p=0;
  while(x != a[p] && p < 10)
  p++;
  if(p >= 10)
  printf("the number is not found!\n");
  else
  printf("the number is found the no%d!\n",p);
  }
  思考:将上面程序改写一查找函数 Find ,若找到则返回下标值,找不到返回 -1
  基本思想:一列数放在数组 a[1]---a[n] 中,待查找的关键值为 key ,把 key 与 a 数组中的元素从头到尾一一进行比较查找,若相同,查找成功,若找不到,则查找失败。 ( 查找子过程如下。 index :存放找到元素的下标。 )
  void main()
  { int a[10],index,x,i;
  printf("please input the array:\n");
  for(i=0;i<10;i++)
  scanf("%d",&a[i]);
  printf("please input the number you want find:\n");
  scanf("%d",&x);
  printf("\n");
  index= -1;
  for(i=0;i<10;i++)
  if(x==a[i])
  { index=i; break;
  }
  if(index == -1)
  printf("the number is not found!\n");
  else
  printf("the number is found the no%d!\n",index);
  }
  8. 折半查找法(只能对有序数列进行查找)
  基本思想:设 n 个有序数(从小到大)存放在数组 a[1]----a[n] 中,要查找的数为 x 。用变量 bot 、 top 、 mid 分别表示查找数据范围的底部(数组下界)、顶部(数组的上界)和中间, mid=(top+bot)/2 ,折半查找的算法如下:
  ( 1 ) x=a(mid) ,则已找到退出循环,否则进行下面的判断;
  ( 2 ) x<a(mid) , x 必定落在 bot 和 mid-1 的范围之内,即 top=mid-1 ;
  ( 3 ) x>a(mid) , x 必定落在 mid+1 和 top 的范围之内,即 bot=mid+1 ;
  ( 4 )在确定了新的查找范围后,重复进行以上比较,直到找到或者 bot<=top 。
  将上面的算法写成如下程序:
  void main()
  {
  int a[10],mid,bot,top,x,i,find;
  printf("please input the array:\n");
  for(i=0;i<10;i++)
  scanf("%d",&a[i]);
  printf("please input the number you want find:\n");
  scanf("%d",&x);
  printf("\n");
  bot=0; top=9; find=0;
  while(bot < top && find == 0)
  { mid=(top+bot)/2;
  if(x==a[mid])
  { find=1; break; }
  else if(x < a[mid])
  top=mid-1;
  else
  bot=mid+1;

热心网友 时间:2023-09-29 10:11

分析
执行顺序 x值
x=5 5
x+=x 10
x++ 11
x+8 11
++x 12 (此时y=2+x=14)

例证
int x=5, y,z=3;
y=2+(x+=z++,x+8,++x);
输出y为11 x为9 z为4

热心网友 时间:2023-09-29 10:11

不对哦,首先这是一个逗号表达式 x+8有意义哦 从左到右算,x++优先级高 所以先使用后自加x=6 然后x=x+(x++)也就是11=6+5, x变11了然后x+8=19 ,然后算++x,这样y=22
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Request对象语法 9,django中request对象 塞尔达传说时之笛火之神殿Boss房间怎么去 ...的圆形地方怎么上去?打完BOSS后才发现没去过,但我 榆中兴隆山旅游路线 ...兴隆山校区到哪个公交车站最近?应该怎么乘公交车?打车的话得多少钱... 从般若寺到兴隆山法院怎么坐公交车,最快需要多久 那些属于国有经济,哪些属于集体经济 ...丢手机,生病,丢工作,怎么转运啊,谁能告诉我,我快疯了 阴历十月又叫什么月 C语言程序填空:用辗转相除法求两个整数的最大公约数、最小公倍数。 C(nm)具体怎么列明数字计算的啊? 各种颜色的玫瑰各代表什么意思 什么是pvc地板pvc地板价格分析 pvc板价格多少钱一平方 pvc成本多少钱一吨? 请问什么叫做计算机内部码? 公司组织员工体检的时间,是否算工资 为职工体检发生的体检费用能否计入职工福利费 升降玻璃膜脱落下来 双双号是什么 双号是什么意思 被节的意思被节的意思是什么 那师傅缓促银骢孙大圣停云漫步猪悟能磨担徐正的意思 一朝徐正天下恨什么意思? 给你腚上绑个家雀是什么意思 FF&DESIGN什么意思 design是初中单词吗 cosign和sign的区别 画轴长宽比例 期房存在着诸多购房风险那买期房注意什么 工程项目中风险的四大特点? 计算机代码含义怎么理解 会计初级报名条件有哪些 58快借逾期几天会爆通讯录? 琉璃小说原著叫什么 d85m-d2v主板加条骇客神条8g内存开不了机开机就出现bios设置 国产电脑怎么退出云坞 公积金已启封什么意思 这道红烧牛蛙简直了 电影《我和我的祖国》观后感600字 求助QAQ。。。怎么办,地图是透明的 能让小地图不变透明吗?? 传奇世界里的小地图怎么把它从半透明变成不透明的?? 麦当劳九大系统包括哪些 招商信用卡自降负数后可以最低还款吗? 微粒贷属于民间借贷还是银行?如果被起诉是民事的还是刑事的?会不会坐牢? 臭秽什么意思?如何解释? 妇科臭秽是什么意思? “丙二醇”用英语怎么说?