加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言入门--循环语句及练习

(2016-05-29 21:32:46)
标签:

365

c语言

程序设计

循环语句

it

分类: C语言
一,for 循环

   参数1:循环结构 --- 在满足特定条件下反复执行的代码段.
   参数2:特定条件 --- 循环条件
   参数3:代码段 --- 循环体
    1. initialization 循环变量初始化
    2. condition  循环条件
    3. increment  循环变量增量
    4. statements 循环体(语句)
   循环执行的顺序: 1 - 2 - 4 - 3 - 2 - 4 - 3 - ... - 2 - 4 - 3 - 2 (当循环条件不满足, 跳出循环, 循环结束)
//示例 1
    for (int i = 0; i < 10; i ++) {
        char b = '.';
        printf("第-%c遍,薛哥是教学部最帅的!\n",i+1,b);
    }
//练习: 打印1 - 100 之间的数
 //格式一
    for (int i=1; i <= 100; i ++) {
       char b = '.';
        printf("%d%c\t ", i,b);
    }
//格式二,每五个打印一行
    for(int i = 1; i<=100;i++){
        printf("%d\t",i);   // 制表符\t
        if (i%6==0) {
            printf("\n");      // 每五个一行
        }
    }
     
// 练习: 打印1 - 100 之间的偶数
//方法一
    for (int i = 2; i <= 100; i++) {
        if (i % 2 == 0) {         //判断是否是偶数
              printf("%d ", i);   //如果是偶数,就输出(进到分支内部,意味着满足此时分支的条件,也就是偶数)
        }
      
    }
//方法二
    for (int i = 2; i <= 100; i += 2) {
          printf("%d ", i);
    }
   
// 练习: 打印1 - 100 之间的奇数
    for (int i = 1; i < 101; i += 2) {
        printf("%d  ", i);
    }
   
    printf("\n");
    for (int f = 1; f < 101; f ++) {
        if (f % 2 != 0) {
            printf("%d ", f);
        }
    }

//练习: 打印1 - 100之间7的倍数
    for (int i = 7; i < 100; i += 7){
        printf("%d ",i);
    }
   
    printf("\n");
   
    for(int a = 1; a < 101; a ++){
        if(a % 7 == 0){
            printf("%d ", a);
        }
    }

//练习: 打印1 - 100之间个位为7的数
    for (int b= 7; b < 101; b += 10) {
        printf("%d ",b );
    }
   
    printf("\n");
   
    for (int c = 0; c < 101; c++) {
        if (7 == c % 10 ) {  //当进行常量与变量的判断,判断他们是否相等时,把常量写在前面变量写在后面 --- 小技巧
            printf("%d ",c );
        }
    }

//练习:打印1 - 100 之间十位为7的数
    for (int i = 0; i < 100; i++) {
        if (7 == i / 10) {
            printf("%d ", i);
        }
    }

// 练习:打印1 - 100之间 不是7的倍数,也不包含7的数   
    for (int i = 1; i < 101; i++) {
        if (i % 7 != 0 && i % 10 != 7&& i / 10 != 7) {
            printf("%d ", i);
        }
    }
 
   
//求1 - 100之间所有数的和
    int sum = 0;
    for ( int i = 0; i < 101; i++) {
        sum = sum + i;
    }
    printf("%d\n", sum);
 
//求1 - 100之间所有偶数的和
    int sum = 0;
    for (int i = 2; i < 101; i += 2) {
        sum += i;
    }
    printf("1 - 100之间所有偶数数之和是%d\n", sum);
 
//求1 - 100之间所有奇数的和
    int sum = 0;
    for (int i = 1; i < 100; i += 2) {
        sum += i;
    }
    printf("1 - 100之间所有奇数之和是%d\n", sum);

//求1 - 100之间7的倍数的和
    int sum = 0;
    for (int i = 7; i < 100; i += 7) {
        sum += i;
    }
    printf("1 - 100之间7的倍数之和是:%d\n", sum);

//求1 - 100之间个位为7的所有数的和
    int sum = 0;
    for (int i = 0; i < 100; i++) {
        if (i % 10 == 7) {
            sum += i;
        }
    printf("1 - 100之间个位数为7的所有数的和为:%d\n", sum);
//求1 - 100之间十位为7的所有数的和
    int sum = 0;
    for (int i = 0; i <100; i++) {
        if (i / 10 == 7) {
            sum += i;
        }
    } printf("1 - 100之间十位为7的所有数的和为:%d\n", sum);
//求1 - 100之间不是7的倍数,也不包含7的所有数之和
    int sum = 0;
    for (int i = 0; i < 101; i++) {
        if (i % 7 != 0 && i % 10 != 7&& i / 10 != 7) {
            sum += i;
        }
    }printf("1 - 100之间不是7的倍数,也不包含7的所有数之和为:%d\n", sum);
   
// 打印下面的图形
    
      1
      2
        
// 循环嵌套,外层for循环控制打印的行数,内层for循环控制每一行的内容
    for (int j = 0; j < 3; j++) {
        for (int i = 1; i < j + 2; i++) {
            printf("%d   ", i);
        }
        printf("\n");
    }

 //打印下面的图形   
     3
    2
       
    for (int i = 0; i < 3; i++) {
        for (int j = 1; j < 4 - i; j++) {
            printf("%d  ", j);
        }
        printf("\n");
    }

//打印下面的图形
   1
   1
       
    for (int i = 0; i < 3; i++) {
        for(int j = 3; j >i; j--){
            printf("%d  ",j);
        }
        printf("\n");
    }

  
//打印下图
             *
            *
           *
    for (int i = 0; i < 3; i++) {
       
        for (int j = 0; j < 2 - i; j++) {    //第一部分: 空格个数
            printf(" ");
        }
        for (int k = 0; k < i + 1; k++) {       // 第二部分: * 和 空格个数
            printf("* ");
        }
        printf("\n");
    }


二, break, continue
//    continue: 结束本次循环
// 输出 1 - 100 之间的偶数
    for (int i = 1; i < 101; i++) {
        if (i % 2 != 0) {
            continue;
        }
        printf("%d  ",i);
    }

 
//    break:结束本层循环
// 从控制台输入一个数,判断是否是素数.
     int a = 0;
    printf("请输入一个不小于2的整数:");
    scanf("%d",& a);
    for (int i = 2; i < a; i++) {
        if (a % i == 0) {     //判断,如果i在递增的过程中,存在有 a 的因子, 那么 a 就不再是素数
            printf("%d不是素数.\n",a);
            break;  //结束本层循环
        }
        if (i == a) {
            printf("%d是一个素数.\n", a);
        }
    }
    if (a == 2) {
        printf("2是一个素数.");
    }
 

三, while 循环: 经常用于不知道循环次数的循环.
//for循环可以转化为 while 循环,而 while 循环不一定能转化为 for 循环.
//打印 1 - 100 之间的数

    int i = 1;   //循环变量初始化
    while (i< 101) {   //循环条件
        printf("%d ",i);  //循环体
        i++;         //循环增量
    }
    
    int i = 1;
    for (; i< 101; ) {    //for循环的条件可以不写,但是括号里的分号不能去掉.
        printf("%d ",i);
        i++;
    }

   
//练习:打印 1 - 100 之间不是7的倍数,也不包含7的数,使用while循环.
    int i = 1;
    while(i< 101){
        if (i % 10 != 7 && i % 7 != 0&& i / 10 != 7) {
            printf("%d ",i);                    
        }
        i++;
    }
 
//  错误案例,i = 7的时候无法继续执行下去.
    int i = 1;
    while(i % 10 != 7 && i % 7 != 0&& i / 10 != 7&& i < 101){
        printf("%d ",i);
        i++;
    }
   
四, do....while循环:
// 无论循环条件是否满足, 先执行一次循环体, 然后再来判断循环条件是否满足.
// 打印 1 - 100 之间的数
     int i = 1;
    do {
        printf("%d ", i);
        i++;
    } while (i< 101);
 //    循环总结:
//    for循环与while循环的区别: for循环用于知道循环次数的循环,while循环用于不知道循环次数的循环.
//    while循环与do...while循环的区别: do...while循环无论循环条件是否满足,先执行一次循环体.
//    for循环可以转化为while循环,而while循环不一定能够转化为for循环.
   
    
   
五,随机数 : arc4random()
//   printf("%d\n", arc4random() % 11); //[0, 10]
   
//如果想要得到[a, b]区间上得随机数值,取余公式 --- arc4random() % (b - a +1) + a;
//控制台输入一个数,打印相应个数的随机数,范围[10, 30]
 
    int a = 0;
    printf("请输入一个数:");
    scanf("%d",& a);
    for (int i = 0; i < a; i++) {
        printf("%d ", arc4random() % (30 - 10 + 1) + 10);
    }
       
    for (int i = 0; i < 1000; i++) {
        printf("%d ", arc4random() % (10 - 1 + 1) + 1);
    }
  
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3-i; j++) {
            printf(" ");
        }for (int f = 0; f < i+1; f++) {
            printf("* ");
        }printf("\n");
    }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有