个人C语言笔记

11 .要求输入100~200之间不能被3整除的数。

#include <stdio.h>

#include<stdlib.h>

main()

{

    int n;

    for (n = 100; n <= 200; n++)

    {

         if (n % 3 == 0)

             continue;   /*contnue语句的应用:每次n%3成立时执行一次continue,跳过printf即不输出,提前终止本次循环;不同于break,它会终止整个循环*/

         printf("%-8d", n); /*左对齐,好看点*/

    }

    printf("\n");

    system("pause");

}

 

 

 

 

 

 

 

 

 

 

 

 

 

或:

#include <stdio.h>

#include<stdlib.h>

main()

{

    int n;

    for (n = 100; n <= 200; n++)

    {

         if (n % 3 !=0) printf("%-8d", n);   /*注意!=的输入方式!!!!必须英文输入状态下*/

    }

    printf("\n");

    system("pause");

}

用\t对齐最好!

 

12 .输出以下4*5矩阵。

      1  2  3  4  5

      2  4 6  8  10

      3  6 9  12 15

      4  8  1216 20

#include <stdio.h>

#include<stdlib.h>

main()

{

    int i, j, n = 0;

    for (i = 1; i <= 4; i++)            /*外循环输出一行数据(外循环执行一次,内循环执行5次)*/

    for (j = 1; j <= 5; j++, n++)       /*内循环输出一列数据(注意输出格式,即每行输出5个数换行)n用来累计数据个数*/

    {

         if (n % 5 == 0)   printf("\n");  /*换行语句*/

        

         printf("%d\t", i*j);            /*算法第一行和第一列的乘积,注意i,j的变化方式*/

    }

    printf("\n");

    system("pause");

}

 

改一:用break减少输出一行

#include <stdio.h>

#include<stdlib.h>

main()

{

    int i, j, n = 0;

    for (i = 1; i <= 4; i++)            /*外循环输出一行数据(外循环执行一次,内循环执行5次)*/

    for (j = 1; j <= 5; j++, n++)       /*内循环输出一列数据(注意输出格式,即每行输出5个数换行)n用来累计数据个数*/

    {

         if (n % 5 == 0)   printf("\n");  /*换行语句*/

         if (i == 3 && j == 1)break;    /*遇到第三行第一列,终止内循环(break在哪就终止哪个循环,也注意这种用if语句定位的思想)*/

         printf("%d\t", i*j);            /*算法第一行和第一列的乘积,注意i,j的变化方式*/

    }

    printf("\n");

    system("pause");

}

原因:遇到第三行,第一列时,提前终止内循环,流程进入外循环

 

改二:用coniute减少某一数据的输出。

把上述“break”改为“continue”即可

原因:遇到第三行,第一列时,continue跳过了一次内循环,少输出一次“\t”,所以后面四个数据向前移动一个tab位置

 

13.循环算法

   (1)用π/4≈1-1/3+1/5-1/7…..求π的近似值,知道发现某一项的绝对值小于10-6为止(该项不累加)

#include <stdio.h>

#include<stdlib.h>

#include<math.h>        /*数学函数头文件*/

main()

{

    int sign = 1;                             /*sign表示数值的符号*/

    double pi = 0.0, n = 1.0, term = 1.0;     /*pi代表开始多项式的值,最后代表pi的值,n代表分母;term代表临时变量,存放当前值*/

                                           

    while (fabs(term) >= 1e-6)                /*注意fab函数使用方法,要想提高精度,只要改变这一行的条件就行*/

    {

         pi = pi + term;

         n = n + 2;

         sign = -sign;                        /*符号转换算法*/

         term = sign / n;

    }

    pi = pi * 4;

    printf("π=%10.8f\n", pi);               /*数据占10位,其中小数占8位*/

    system("pause");

}

注:fabs()函数求绝对值输出为双精度数

    abs()函数求绝对值输出为整数

 

  (2)斐波那契数列,求前40个数。

                    F1=1        (n=1)

F2=1         (n=1)

Fn=Fn-1+Fn-2   (n≥3)

#include <stdio.h>

#include<stdlib.h>

main()

{

    int f1 = 1, f2 = 1, f3,i;

    printf("%12d\n%12d\n", f1, f2);   /*f1和f2的输出方法,,真是醉了。。。*/

    for (i = 1; i <= 38; i++)         /*注意循环范围*/

    {

         f3 = f1 + f2;

         printf("%12d\n", f3);         /*思想:中间即输出!!*/

         f1 = f2;                     /*f4=f3+f2,交换赋值*/

         f2 = f3;

    }

    system("pause");

}

 

程序优化(一行输出四个)

#include <stdio.h>

#include<stdlib.h>

main()

{

    int f1 = 1, f2 =1, i;

    for (i = 1; i <= 20; i++)           /*改为每次输出两个,所以只循环20次*/

    {

         printf("%12d%12d", f1, f2);   

         if (i % 2 == 0)                  /*此if语句的作用是使输出4个数后换行,i为偶数时换行,*/

             printf("\n");

         f1 = f1 + f2;

         f2 = f2 + f1;                    /*注意这一行的f1数值已变成f3*/

    }

    system("pause");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值