精华内容
下载资源
问答
  • 除了while循环,C语言...例如:使用 while 循环计算1加到100的值,代码如下: #include <stdio.h> int main(){ int i, sum=0; i = 1; //语句① while(i<=100 /*语句②*/ ){ sum+=i; i++; //语句...

    除了while循环,C语言中还有 for 循环,它的使用更加灵活,完全可以取代 while 循环。

     例如:使用 while 循环来计算1加到100的值,代码如下:

    1. #include <stdio.h>
    2. int main(){
    3. int i, sum=0;
    4. i = 1; //语句①
    5. while(i<=100 /*语句②*/ ){
    6. sum+=i;
    7. i++; //语句③
    8. }
    9. printf("%d\n",sum);
    10. return 0;
    11. }

    可以看到,语句①②③被放到了不同的地方,代码结构较为松散。为了让程序更加紧凑,可以使用 for 循环来代替,如下所示:

    1. #include <stdio.h>
    2. int main(){
    3. int i, sum=0;
    4. for(i=1/*语句①*/; i<=100/*语句②*/; i++/*语句③*/){
    5. sum+=i;
    6. }
    7. printf("%d\n",sum);
    8. return 0;
    9. }

    在 for 循环中,语句①②③被集中到了一起,代码结构一目了然。

    for 循环的一般形式为:

    for(表达式1; 表达式2; 表达式3){
        语句块
    }

    它的运行过程为:


    1) 先执行“表达式1”。

    2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。

    3) 执行完循环体后再执行“表达式3”。

    4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。


    上面的步骤中,2) 和 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 和 3)。


    “表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。


    for循环的执行过程可用下图表示:


    例:分析一下“计算从1加到100的和”的代码:

    1. #include <stdio.h>
    2. int main(){
    3. int i, sum=0;
    4. for(i=1; i<=100; i++){
    5. sum+=i;
    6. }
    7. printf("%d\n",sum);
    8. return 0;
    9. }

    运行结果:
    5050

    代码分析:
    1) 执行到 for 语句时,先给 i 赋初值1,判断 i<=100 是否成立;因为此时 i=1,i<=100 成立,所以执行循环体。循环体执行结束后(sum的值为1),再计算 i++。

    2) 第二次循环时,i 的值为2,i<=100 成立,继续执行循环体。循环体执行结束后(sum的值为3),再计算 i++。

    3) 重复执行步骤 2),直到第101次循环,此时 i 的值为101,i<=100 不成立,所以结束循环。

    由此我们可以总结出for循环的一般形式:

    for(初始化语句; 循环条件; 自增或自减){
        语句块
    }

    for 循环中的三个表达式

    for 循环中的“表达式1(初始化条件)”、“表达式2(循环条件)”和“表达式3(自增或自减)”都是可选项,都可以省略(但分号;必须保留)。

    1) 修改“从1加到100的和”的代码,省略“表达式1(初始化条件)”

    1. int main(){
    2. int i = 1, sum = 0;
    3. for( ; i<=100; i++){
    4. sum+=i;
    5. }

    可以看到,i=1移到了 for 循环的外面。

    2) 省略了“表达式2(循环条件)”,如果不做其它处理就会成为死循环。例如:

    for(i=1; ; i++) sum=sum+i;

    相当于:

    1. i=1;
    2. while(1){
    3. sum=sum+i;
    4. i++;
    5. }

    所谓死循环,就是循环条件永远成立,循环会一直进行下去,永不结束。死循环对程序的危害很大,一定要避免。

    3) 省略了“表达式3(自增或自减)”,就不会修改“表达式2(循环条件)”中的变量,这时可在循环体中加入修改变量的语句。例如:

    1. for( i=1; i<=100; ){
    2. sum=sum+i;
    3. i++;
    4. }


    4) 省略了“表达式1(初始化语句)”和“表达式3(自增或自减)”。例如:

    1. for( ; i<=100 ; ){
    2. sum=sum+i;
    3. i++;
    4. }

    相当于:

    1. while(i<=100){
    2. sum=sum+i;
    3. i++;
    4. }


    5) 3个表达式可以同时省略。例如:

    for( ; ; )  语句

    相当于:

    while(1)  语句


    6) “表达式1”可以是初始化语句,也可以是其他语句。例如:

    for( sum=0; i<=100; i++ ) sum=sum+i;


    7) “表达式1”和“表达式3”可以是一个简单表达式也可以是逗号表达式

    for( sum=0,i=1; i<=100; i++ ) sum=sum+i;

    或:

    for( i=0,j=100; i<=100; i++,j-- ) k=i+j;


    8) “表达式2”一般是关系表达式或逻辑表达式,但也可是数值或字符,只要其值非零,就执行循环体。例如:

    for( i=0; (c=getchar())!='\n'; i+=c );

    又如:

    1. for( ; (c=getchar())!='\n' ; )
    2. printf("%c",c);
    展开全文
  • 输入整数a和b(0 0.(116279069767441860465),循环节长度为21;  思路:分数不能表示无限不循环小数。建立3个数组,一个放商,一个放余数,一个对应下角标的数若是... 这个主要是怎么寻找循环节,在除法计算的过程

    输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及循环节长度。例如a=5,b=43,小数表示为

    0.(116279069767441860465),循环节长度为21;  

    思路:分数不能表示无限不循环小数。建立3个数组,一个放商,一个放余数,一个对应下角标的数若是余数则元素为1,即记录余数存在。循环除数加一次,若余数为0,则循环节长度为1,若当前得到的余数已经存在,则有循环节,求出2个相同余数的距离即为循环节长度。

      这个主要是怎么寻找循环节,在除法计算的过程中如何判断一个循环节已经出现了。循环节第二次出现意味着计算过程中的余数已经第二次出现。其实自己在草纸上写一个比如5/7就能发现。当商5的时候(5是循环节的最后一位)余数是5,这和第一次商0的时候(0是循环节前一位)余数也是五。然后用索引存储是否这个余数已经出现过,还有一个数组记录余数对应的商的位置。余数的范围是1~m-1,所以循环节最长是m-1,所以查询数组的大小根据m的值来设定


    1. #include <iostream>  
    2. #include <cstdlib>  
    3. #include <cstring>  
    4. #include <cstdio>  
    5.   
    6. using namespace std;  
    7.   
    8. int r[3003],u[3003],s[3003];  
    9.   
    10. int main()  
    11. {  
    12.     int n,m,t;  
    13.     while (cin >> n >> m) {  
    14.         t = n;  
    15.         memset(r, 0, sizeof(r));  
    16.         memset(u, 0, sizeof(u));  
    17.         int count = 0;  
    18.         r[count ++] = n/m;  
    19.         n = n%m;  
    20.         while (!u[n] && n) {  
    21.             u[n] = count;  
    22.             s[count] = n;  
    23.             r[count ++] = 10*n/m;  
    24.             n = 10*n%m;  
    25.         }  
    26.         printf("%d/%d = %d",t,m,r[0]);  
    27.         printf(".");  
    28.         for (int i = 1 ; i < count && i <= 50 ; ++ i) {  
    29.             if (n && s[i] == n) printf("(");  
    30.             printf("%d",r[i]);  
    31.         }  
    32.         if (!n) printf("(0");  
    33.         if (count > 50) printf("...");  
    34.         printf(")\n");  
    35.         printf("   %d = number of digits in repeating cycle\n\n",!n?1:count-u[n]);  
    36.     }  
    37.     return 0;  
    38. }  

    展开全文
  • 计算循环冗余校验码计算

    万次阅读 2015-07-07 09:44:18
    计算循环冗余校验码计算

    循环冗余校验码的计算是计算机组成原理的一大考点,具体算法如下:


    A、编码原理:   

                               现假设有:   有效信息:M   ;  

                   除数G(生成多项式)   有:   M/G=Q+R/G

                              此时,可选择R作为校验位,则MR即为校验码。

                             

    B、校验原理:  (M-R/G=Q+0/G   

                                说明:以接收到的校验码除以约定的除数,若余数为0,则可认为接收到的数据是正确的。

                         

                             例:有效信息1101,生成多项式样1011

                   求循环校验码解:  

                                             有效信息1101(k=4),即M(x)=x3+x2+x0    生成多项式1011(r+1=4,r=3),

                                                     G(x)=x3+x1+x0    M(x)·x3=x6+x5+x3,即1101000(对1101左移三位)   

                                            M(x)·x3/G(x)=1101000/1011=1111+001/1011    即1010CRC是:1101001

                           

                                                    如下图进行计算:

                

                                                    


                                            循环校验码的来源余数与出错序号间处理存在对应模式,

                                           该模式只与只与码制和生成多项式有关,与具体的码字无关。

                                            生成多项式满足的条件:任一位发生错误都应使余数不为0不同的位发生的错误余数应不同。


    展开全文
  • 循环计算n的阶乘

    千次阅读 2017-02-17 10:02:42
    循环计算n的阶乘

    循环计算n的阶乘

    #include<iostream>
    #include<ctime>
    
    using namespace std;
    
    double f(int x)
    {
    	if (x < 0)
    		return 0;
    	else if (x == 0)
    		return 1;
    	else
    		return x*f(x - 1);
    
    }
    
    int main()
    {
    	//反复输入,计算阶乘
    	int n;
    	for (;;)
    	{
    		cout << "请输入一个正整数:";
    		cin >> n;
    		if (n == 0)
    			break;
    		if (n < 0)
    		{
    			cout << "不能是负数" << endl;
    			continue;
    		}
    			
    		cout << n << "的阶乘为:" << f(n) << endl;
    	}
    	return 0;
    }


    展开全文
  • do…while循环 while循环 for循环
  • /* 使用do…while循环语句计算正数5的阶乘。 */ public class Factorial{ public static void main(String[] args) { int i=1; long n=1; do { n=n*i; i++; }while(i<6); System.out.println...
  • 使用for循环计算圆周率

    千次阅读 2020-03-26 23:15:16
    我们可以观察以上公式,并且根据规律使用if语句和for循环进行计算。 fourth_pi = 0 iter_times = 1000000 for i in range(1,iter_times): if i%2: fourth_pi += 1/(2*i-1) else: fourth_pi -= 1/(2*i-1) prin...
  • 19-Python-循环计算

    千次阅读 2018-06-05 08:47:28
    2.4 循环计算在程序开发中,通常会遇到利用循环重复计算的需求遇到这种需求,可以:1. 在while上方定义一个变量,用于存放最终计算结果2. 在循环体内部,每次循环都用最新的计算结果,更新之前定义的变量需求计算0...
  • R语言while循环计算圆周率

    千次阅读 2018-10-28 23:09:23
    R语言while循环计算圆周率 原理说明 计算圆周率的方法很多,在这里我们使用概率的方法来计算圆周率(蒙特卡洛法)。 假设有一个正方形,以其一个顶点为圆心,正方形的边长为半径,画1/4圆。则可以在正方形中随机产生...
  • Java do while循环-计算1到10的和

    千次阅读 2020-08-04 22:45:53
    使用 do while 循环计算出 1 到 10 的和。 题目解决思路 分别定义两个变量用于存储循环变量及最终结果值。 使用 while 循环 10 次,并进行累加。 输出最终结果。 代码具体实现 public class DoWhileDemo01 { ...
  • python for循环计算速度很慢

    千次阅读 2020-04-25 17:21:43
    从一个比较大的数据文件中读取数据,是一个80k乘10k的矩阵,保存在pickle文件中,循环读取然后做一些计算处理,最后记录并保存为同样矩阵大小的文档,代码写好之后,开始测试,跑一个循环就要6s左右,一共80k个循环...
  • python再计算无限循环小数的循环

    千次阅读 2017-05-01 23:02:00
    如果无限小数的小数点后,从某一位起向右进行到某一位止的一节数字循环出现,首尾衔接,称这种小数为循环小数,这一节数字称为循环节。 #寻找1000以内的n,使得1/n的循环小数节长度最长#问题化简,首先不是素数的...
  • 计算循环队列元素个数

    千次阅读 2019-11-06 22:58:42
    计算循环队列元素个数 zz因为rear的值不一定front的直大,所以说他俩的差值有可能得到的是负值,故采用这种取模的方式。二如果说rear在正常情况下大于front德华,那么rear与front的差值就是队列的长度 图示解析: ...
  • php 利用for循环语句计算1~100之间奇数的和 <php sum=0;for(sum =0;for(sum=0;for(i=0,i<100,i<100,i<100,i++) { if ($i%2==0) {continue}; sum=sum=sum=sum+KaTeX parse error: Expected 'EOF', got '...
  • * 创建一个Java类,名称:CountAverageSocre.java ,利用 Java 循环语法计算并输出若干个学生5门课的平均分 * 外循环循环一次处理一个学生 * 内循环则处理一个学生的5门课成绩 * */ pac...
  • 计算循环冗余码

    千次阅读 2008-02-20 23:46:00
    FJNU.1240Description计算机网络中采用循环冗余码来校验数据的正确性。其原理是:发送方计算出待发送的二进制数据的循环冗余...其中计算二进制数据的循环冗余码的计算过程如下: >>协议事先约定一个二进制生成表达式,本
  • 做个 java 小练习,使用循环嵌套来实现如下需求: 计算出任意一个小于10位的整数的个数。 实现代码如下: public static void count(int n) { /** * 计算一个整数(小于10位)的位数 * 如:输入999...
  • MATLAB利用parfor计算多重for循环

    万次阅读 2018-11-11 11:35:10
    当MATLAB程序中出现多个for循环时,为提高运行效率,可用如下方式实现循环变量索引。 clear; clc; M = 2; N = 3; R = 4; parfor i = 0 : M * N * R - 1 ii = floor(i / (N * R)) + 1; jj = floor(mod(i, N * R...
  • a=[2 4 6 8 10]; b=[1 2 3 4 5]; n=5;%n=5时的循环褶积 for m=1:n a1=a’; b1=b’;%赋初值 end for j=1:n ...end %建立循环矩阵 ab2=s1*b1 %计算循环褶积 运行结果如下: ab2 = 90 100 100 90 70 ...
  • Python语言计算1+2+3+4,用while循环for循环分别实现Python语言计算1+2+3+4,用while循环for循环分别实现Python语言计算1+2+3+4,用while循环for循环分别实现Python语言计算1+2+3+4,用while循环for循环分别实现...
  • CRC循环冗余码及其详细计算

    千次阅读 多人点赞 2020-09-21 20:35:05
    文章目录循环冗余校验码的定义循环冗余校验码的特点什么是模2运算CRC码的计算具体怎么校验 循环冗余校验码的定义 循环冗余校验码由信息码n位和校验码k位构成。k位校验位拼接在n位数据位后面,n+k为循环冗余校验码的...
  • public class Yang1014 { public static void main(String[] args) { //使用while循环计算1+2+3+…+100的值 int i=1; int sum=0; while(i<=100) { sum+=i; i++; } System.out.println(“sum=”+sum); } } ...
  • For循环次数计算公式

    千次阅读 2006-07-07 20:33:00
    N=INT((终值-初值)/步长)+1 
  • 法一:从一个例题出发来看循环卷积的过程,首先我们采用定义循环卷积的公式来求解。我们把公式的计算过程写成矩阵相乘会更加直观。先把要进行循环的序列x2写成矩阵形式(由于循环卷积不满足交换律,注意先后顺序),...
  • 循环队列个数计算公式

    千次阅读 2019-03-21 22:22:20
    计算队列的元素个数:(尾-头+表长)%表长 队列头指针为front,队列尾指针为rear,队列容量为M,则元素个数为|rear-front+M|%M,注意,这个%是求余运算。 设f为队头,r为队尾,m为队长,a为元素个数,则 1. f>r...
  • 循环冗余校验码的基本思想和构造方法
  • 实操名称:用while和for循环分别计算100以内奇数和偶数的和,...一:用while循环计算语句 1.详细代码如下: public class Test02 { public static void main(String[] args) { int i=1; int sum01=0;//...
  • 一般想到的计算是,通过求余 求模,没有整除,循环次数就要 +1 int p = totalCount / pageSize; if (totalCount % pageSize != 0) p++; return p; int p = totalCount / pageSize; if (to...
  • 题目:按下面的程序框架编程,使用循环语句计算1+2+3+…+100,并把结果保存在物理地址12345H指向的字存储单元中。 CODES SEGMENT ASSUME CS:CODES START: ;此处输入功能实现代码 MOV AH,4CH INT 21H CODES ENDS...
  • CRC循环校验码原理及计算举例

    千次阅读 2019-11-21 09:51:02
    循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。通过某种数学运算来建立数据位和校验位的约定关系。这种数学运算就是“模2除法”。这种编码基本思想是将要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,126,210
精华内容 450,484
关键字:

循环比如何计算