语言简单计数问题_第1页
语言简单计数问题_第2页
语言简单计数问题_第3页
语言简单计数问题_第4页
语言简单计数问题_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、统计与计数问题方法:计数变量c的初值为0,每输入一个数据,进行必要判断后,若输入的数据满足统计条件,则计数变量c自加1,这样当对所有输入进行判断后,计数变量c的值就是统计的结果。例1:输入若干非0实数,直到输入0时停止,要求输入的实数最多不超过20个,统计其中正数的个数,负数的个数。分析:设三个计数变量:n统计输入的数据总个数(为什么有必要?)posn统计正数的数目negn统计负数的数目#include "stdio.h"void main()   int n,posn,negn;   double a;   

2、n=posn=0;   printf("Input real numbers:n");   while(1) /*典型循环结构(一)*/      scanf("%lf",&a);       if(a=0)       break;      if(a>0)      posn+;  

3、0;   n+;      if(n>=20)       break;      negn=n-posn;   printf("posn=%d,negn=%dn",posn,negn);用典型循环结构(二)改写例1程序#include "stdio.h"void main()   int n,posn,negn;   double a; 

4、 n=posn=0;    printf("Input real numbers:n");   scanf("%lf",&x);   while(a!=0&&n<20)      if(a>0)      posn+;      n+;      if (n<20)  

5、0;   scanf("%lf",&a);      negn=n-posn;   printf("posn=%d,negn=%dn",posn,negn);例2:输入一行字符,统计其中的英文字母个数。提示:即输入到字符'n'时停止输入#include "stdio.h"void main()   char ch;    int n = 0;   printf("

6、Input a string:n");   while(1)      ch=getchar();      if(ch ='n')      break;      if(ch >='a'&&ch<='z'|ch>='A'&&ch<='Z')   &#

7、160;  n+;      printf("Number of letters is %d.n",n);二、数列求和求积:累加累乘递推法1.基本累加累乘问题累加法:求和变量初值一般为0,每循环一次,求和变量自加一个数据,这样循环结束后,求和变量的值即为这些数据的和。累乘法:累乘变量初值一般为1,每循环一次,累乘变量自乘一个数据,这样当循环结束的时候,累乘变量的值即为这些数据连乘的积。例1.输入n个100分制成绩(用整型),计算并输出平均成绩,要求输出精确到两位小数。#include "stdio.h"#

8、define n 10void main()   double av = 0;   printf("Input %d int numbers:",n);   for(i = 1;i< = n;i+)       scanf("%d",&score);      av += score;   av /= n;   printf("av=%.2fn"

9、;,av);2.数列计算,求和求积例2:教材P116例题6.6点评:该题数列通项比较简单,仅对分母进行递推计算,直接计算通项,累加通项;注意数列正负交叉项的控制方法。例3:计算下面的级数,直到最后一项的绝对值小于106时停止计算,输出计算结果。分析:令有#include "stdio.h"#include "math.h"void main()   double x,s,a;int k;   printf("Input x=");   scanf("%lf"

10、;,&x);   a=1;   s=0;   k=0;   while(fabs(a)>1e-6)      s+=a;       k+;       a=x/k*a;       printf("s=.2fn",s);例4:输入x计算以下算式,要求计算到最后一项小于是106时停止计算,输出计算结果。分析:#include

11、 "stdio.h"#include "math.h"void main()   double s,x,a;   int k;   printf("Input x =");   scanf("%lf",&x);   s = 0;   a = 1;   k = 0;   while(fabs(a) > 1e-6)   

12、0;  s += a;       k += 2;      a *= -x * x / k / (k-1);       printf("s=%.6fn",s);例5 计算fibonacci数列。例6 教材P116 例6.7例6输入n,m,计算组合数P=C(n,m) 。#include "stdio.h"void main()   double p = 1.0;   int m,n,k

13、;   printf("Input n,m:");   scanf("%d%d",&n,&m);   if(n < 0 | m < 0 | m > n)   printf("Input data aren't correct.n");   return;       if(n-m<m)   m = n-m; /*这句有何作用?*/

14、   for(k = 1;k <= m;k+)      p *= (double)(n-m+k)/k;        /*此处为什么要强制类型转换?*/   printf("c(%d,%d)=%.0fn", n,m,p);#include "stdio.h"void main()   int n,i;   double a,x,y;   printf("Inp

15、ut x,n:");   scanf("%lf%d",&x,&n);   printf("Input a0,a1,a%dn,n);   y=0;   for(i = 0;i < n;i+)       scanf("%lf",&a);      y= y * x + a;       printf("

16、;y=%.2fn",y);/*输入一行16进制字符串,变成长整数输出*/#include "stdio.h"void main()   long y=0;   int x=16,a;   char c;   printf("Input a hex number:");    while(1)      c=getchar();      if(c ='n

17、9;)          break;      if(c >='0'&&c <='9')          a=c-48;      else if(c >='a'&&c <='z')          a=c-87;     &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论