C语言基础

文章详细介绍了C语言中的循环结构(包括for、while和do..while),控制语句(break和continue),以及数组的使用(包括初始化、访问和倒置)。通过实例展示了如何用循环解决鸡兔同笼问题、打印99乘法表,以及计算成绩平均值和查找水仙花数。
摘要由CSDN通过智能技术生成

1.循环结构:
    1.while
    2.do..while 
    3.for 
        1.基本形式
        2.嵌套形式
            for (A; B; C)
            {
                D;
                for (E; F; G)
                {
                    H;
                }
            }

            外层循环执行一次,里层循环执行一遍
    下列是以for循环实现解决鸡兔同笼问题

鸡兔个数为50有140只脚分别求鸡和兔的个数

1 #include <stdio.h>                                                                        
  2 
  3 int main(void)
  4 {
  5     int x = 0;
  6 
  7     for(x = 0;x <= 50;x++)
  8     {
  9         if(140 == x * 2 + (50 - x) * 4)
 10 
 11         {
 12         printf("鸡的个数为:%d\n 兔的个数为:%d\n",x,50 - x);
 13         }
 14 
 15     }
 16 
 17     return 0;
 18 }


    练习:利用双层for循环实现打印99乘法表

1 #include <stdio.h>
  2 
  3 int main(void)
  4 {
  5     int i = 1;
  6     int a = 1;
  7     int c = 0;
  8 
  9     for(i = 1;i <= 9;i++)
 10     {                                                                                     
 11         for(a = 1;a <= i;a++)
 12         {
 13         c = a * i;
 14         printf("%d*%d=%d\t",a,i,c);
 15         }
 16         printf("\n");
 17     }
 18 
 19 
 20     return 0;
 21 }


    4.goto 
        出错处理

例子:

 1 #include <stdio.h>
  2 
  3 int main(void)
  4 {
  5     int i = 0;
  6     int sum = 0;
  7 
  8 loop:
  9     sum += i;
 10     i++;
 11 
 12     if(i < 101)
 13     {
 14     goto loop;
 15     }
 16 
 17     printf("sum=%d 循环次数i=%d\n",sum,i);                                                
 18 
 19     return 0;
 20 }


2.辅助控制语句:
    1.break
        跳出循环或者switch结构

        循环不再执行,用break

    2.continue
        结束本次循环

        一个循环中屏蔽某几次循环可以使用continue


    3.return 
        结束当前函数

练习:
    1.从终端接收若干个成绩,以-1结尾,计算所有输入有效成绩的平均分
        97
        34
        71
        43
        -1        

==========================================================================================================================
数组:
    1.数组:一组类型相同的有限个元素的集合
    2.分类:一维数组、二维数组、多维数组
    3.一维整形数组:
        1.定义形式:
            数据类型 数组名[元素个数];

            int a[5];

            注意:
                元素个数必须为常量或常量表达式,不能是变量或变量表达式


            int n = 5;
            int a[n];           //错
            int a[n+2];         //错
            int a[5];           //对
            int a[2+3];         //对

        2.元素访问:
            数组名[元素下标];

            元素下标: 0 - 元素个数-1 
            元素下标:可以用变量、常量或者表达式访问

            a[n];               //对
            a[0];               //对
            a[0+1];             //对
            a[n+1];             //对

            注意:
                1.不能越界访问

        3.数组的初始化:
            定义数组时对数组元素赋初值

            初始化 != 赋值  

            1.全部初始化:
                所有数组元素都可以得到初值
                int a[5] = {1, 2, 3, 4, 5};

            2.局部初始化:
                给定一部分元素的值,没有给定初值的元素,默认初始化为0 
                int a[5] = {1, 2, 3};
                int a[5] = {0};

            3.默认初始化:
                不给定数组元素个数,通过初值元素个数决定数组元素个数
                int a[] = {1, 2, 3, 4, 5};

            int a[5] = {0};

            a[5] = {1, 2, 3, 4, 5};         //错
            a = {1, 2, 3, 4, 5};            //错


        4.内存空间:
            int a[5];
                数组所占空间大小 = 数据类型所占空间大小 * 元素个数 
            
            1.连续性:
                数组所占空间连续
            2.有序性:
                数组空间存放顺序有序,先存下标为0的元素,再存下标为1的元素, ...
            
            获得数组元素个数: sizeof(a) / sizeof(a[0])

        练习:从终端接收5个数放入数组中,打印出所有数据的平均值

        5.获得数组中最大值或者最小值


        练习:获得5个数中最小值

      以下程序为实现最小值并获得下标:  6.数组中元素实现倒置

作业:
    1.从终端接收10个成绩,去掉最高分,去掉最低分,计算选手的最终平均分成绩

 1 #include <stdio.h>
  2 
  3 int main(void)
  4 {
  5     int a[10] = {0};
  6     int i = 0;
  7     int min = 0;
  8     int max = 0;
  9     int sum = 0;
 10     int cunt =0;
 11 
 12     for (i = 0;i < 10;i++)
 13     {
 14     scanf("%d",&a[i]);
 15     }
 16         min = a[0];
 17         max = a[0];
 18     for(i = 1;i < 10;i++)
 19     {
 20         if(max < a[i])
 21         {
 22         max = a[i];
 23         }
 24     }
 25     for(i = 1;i < 10;i++)
 26     {
 27         if(min > a[i])
 28         {
 29         min = a[i];
 30         }
 31 
 32     }
 33     for(i = 0;i <10;i++)
 34     {
 35     sum += a[i];                                                                                                                                                        
 36     cunt++;
 37     }
 38     printf("平均分:%f\n",(double)sum / ((double)cunt - 2));
 39 
 40     return 0;
 41 }


    2.打印出所有的水仙花数:
        1.是一个三位数
        2.每位数上的立方和值为该数本身

        153 == 1*1*1 + 5*5*5 + 3*3*3
            == 1 + 125 + 27
            == 153 

1 #include <stdio.h>
  2 
  3 int main(void)
  4 {
  5     int i = 0;
  6     int a = 0;
  7     int b = 0;
  8     int c = 0;
  9 
 10     for(i = 100;i < 1000;i++)
 11     {
 12         a = i % 10;
 13         b = i / 10 % 10;
 14         c = i / 100 % 10;
 15         if(i == a*a*a + b*b*b + c*c*c)
 16         {
 17         printf("%d ",i);
 18         }                                                                                 
 19     }
 20 
 21     printf("\n");
 22 
 23     return 0;
 24 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值