暑期培训总结日记#NO.3

C语言continue

一、类型转换:

只有相同类型的数据才能运算,若不相同需要先转换为相同类型后再进行计算

自动类型转换:

转换规则:以不丢失数据为基础,可以适当地牺牲一些空间;1.字节少的向字节多的转2.有符号的向无符号的转(有符号数据环状)3.整型向浮点型转 123为优先级

注意:char short与不同类型的数据运算时,会先提升为int类型后参与运算

sizeof 内式子不参与计算,猜测结果最大值sizeof(3?1:3.1)得出8

强制类型转换:

(新类型名)数据;这种方式有可能会丢失数据,要慎重使用

二、switch开关分支语句:

switch(n)  //n为数值、表达式,运算结果必须是整数

{

case val: //如果val == 表达式则打开执行开关

...

break; //关闭执行开关,结束Switch

//如果每个case后都加break形成分支结构

case val2: //val必须是常量

...

default: //所有case都没有被打开则最后打开default,可不加,break也需要(放case前面也是最后执行,但是若没break则同理未关上开关)

}

switch中不可使用continue

Case a ... b可表示[a,b]但是只有GNU编译器才支持该语法,不建议使用

练习1:输入一个月份判断是什么季度(123 第一季度 456 第二季度 789 第三季度 101112第四季度 other 季度有误)

#include <stdio.h>

int main(int argc,const char* argv[])
{
    char month = 0;
    printf("Please input a month:\n");
    scanf("%hhd",&month);
    switch(month)
    {   
        case 1:printf("first jidu");break;
        case 2:printf("first jidu");break;
        case 3:printf("first jidu");break;
        case 4:printf("second jidu");break;
        case 5:printf("second jidu");break;
        case 6:printf("second jidu");break;
        case 7:printf("third jidu");break;
        case 8:printf("third jidu");break;
        case 9:printf("third jidu");break;
        case 10:printf("forth jidu");break;
        case 11:printf("forth jidu");break;
        case 12:printf("forth jidu");break;
        default:printf("the month your input is wrong");
    }   
    return 0;
}

练习2:输入一个月份判断该月多少天(2月算28)

#include <stdio.h>

int main(int argc,const char* argv[])
{
    char month = 0;
    printf("Please input a month:\n");
    scanf("%hhd",&month);
    switch(month)
    {   
        case 1:printf("this month has 31 days");break;
        case 2:printf("this month has 28 days");break;
        case 3:printf("this month has 31 days");break;
        case 4:printf("this month has 30 days");break;
        case 5:printf("this month has 31 days");break;
        case 6:printf("this month has 30 days");break;
        case 7:printf("this month has 31 days");break;
        case 8:printf("this month has 31 days");break;
        case 9:printf("this month has 30 days");break;
        case 10:printf("this month has 31 days");break;
        case 11:printf("this month has 30 days");break;
        case 12:printf("this month has 31 days");break;
        default:printf("the month your input is wrong");
    }   
    return 0;
}

三、for循环语句:

循环就是一种让代码反复执行的方法,最终达到想要的效果

for循环是一种非常灵活变化多样且危险系数高(相比其他循环而言)的循环语句

for一般使用一个变量来引导循环的执行,该变量叫循环变量i index

For([1] ;[2] ;[3] )

{

 [4] //[]内容可有可无

}

[1].给循环变量赋初始值,C99以上标准才可以在此处定义循环变量,-std=gnu99 for循环内定义的变量无法带出(不能在外面用) [2].判断循环变量是否到达边界,未到达则进入循环到[4]循环体被反复执行 [3].改变循环变量,防止出现死循环,一般进行自加自减

大括号问题:

1.建议上下对齐2.如果循环体中只有一行代码可以省略大括号,但是不利于扩展不建议去大括号,一般的商业代码都要求大括号不能省略

for循环的各种写法:

for( ;//不写永远为真 ; )

{

     //死循环

}

int i =0;

for (;i<10;i++)

{

}

for(int i =0; ;i++)

{

 if(i>=10)

{

break;

}

}

练习3:计算出所有的三位水仙花数(abc == a^3+b^3+c^3)

#include <stdio.h>

int main(int argc,const char* argv[])
{
    int i = 0,num1=0,num2=0,num3=0;
    for(i=100;i<1000;i++)
    {   
        num1=i%10;
        num2=((i-num1)/10)%10;
        num3=i/100;
        if(i==num1*num1*num1+num2*num2*num2+num3*num3*num3)
        {
            printf("%d\n",i);
        }
    }   
    return 0;
}
             

 

练习4:输入一个正整数判断是否是素数

#include <stdio.h>

int main(int argc,const char* argv[])
{
    int numi=0,i=0;
    printf("Please input a Z number:\n");
    scanf("%d",&numi);
    for(i=2;i<numi;i++)
    {   
        if(numi%i==0)
        {
            printf("this Z number is not a prime number");break;
        }
    }   
    if(i==numi)
    {   
        printf("this Z number is a prime number");
    }   
    if(numi==1)
    {   
        printf("既不是质数也不是合数");
    }   
    return 0;
}

四、while循环:

while(表达式)

{

//若表达式为真反复执行此处循环体代码

}

while相当于for的精简版本,for循环专门负责解决明确知道循环次数的问题,while循环专门负责解决不确定循环次数的问题

五、do-while循环:

do{

// 循环体

}while(表达式);    //这个封号必须加

先执行循环体再判断循环条件,最少执行一次,适合先干活后检查的特殊情况,例如输密码、文件内容判断,表达式为真继续循环

for、while、do-while的区别:(自己的话概括)while是for的精简版本,while便于解决循环次数不确定的问题,for便于解决循环次数确定的问题,do-while是先进入循环体再判断,至少会执行一次,适合不同的特殊情况

六、循环嵌套:

循环语句中包含了循环语句,外层循环执行一次,内层循环执行n次,n为决定内层循环的次数。最好控制三个循环之内。

练习5:输入一个正整数,判断是不是回文数(例如12321 123321正着念=倒着念)

#include <stdio.h>
int main(int argc,const char* argv[])
{
    int num = 0,n = 0,same = 0,temp = 0;
    printf("Please input a Z number:\n");
    scanf("%d",&num);
    temp=num;
    while(num>0)
    {   
        n=num%10;
        num=num/10;
        same=same*10+n;
    }
    if(same==temp)
    {   
        printf("YES\n");
    }
    else
    {   
        printf("NO\n");
    }
    return 0;
}

练习6:模拟输入六位密码,输入成功则显示“登陆成功”,错误则提示还剩几次机会(总3次),如果还有机会则继续输入密码,超三次显示“账号已锁定请联系柜台”,结束程序。

#include <stdio.h>

int main(int argc,const char* argv[])
{
    int key=200105,answer=0,n=3;
    printf("请输入密码,共3次机会\n");
    do  
    {   
        scanf("%d",&answer);
        if(key==answer)
        {
            printf("登录成功\n");break;
        }
        else
        {
            n=n-1;
            if(n==0)
            {
                printf("密码错误,当前帐号已锁定,请联系工作人员\n");break;
            }
            printf("登录失败,你还有%d次机会\n",n);
        }
    }while(n>0);
    return 0;
}

作业:

1.打印99乘法表

#include <stdio.h>

int main(int argc,const char* argv[])
{
    char i=1,j=1,m=0;
    printf("                                                   九九乘法表\n");
    printf("*************************************************************************************************************\n");
    for(i=1;i<10;i++)
    {   
        for(j=i;j<10;j++)
        {
            m=i*j;
            printf("%-2hhd*%2hhd = %2hhd  ",i,j,m);
        }
        printf("\n");
    }   
    printf("*************************************************************************************************************\n");
    return 0;

}

 

2.编程解决百钱百鸡问题(公鸡rooster一个五块钱,母鸡hen一个三块钱,小鸡Chicken单数chick三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?)

#include <stdio.h>

int main(int argc,const char* argv[])
{
    char roosters = 0,hens = 0,chicken = 0;
    for(roosters=0;roosters<100;roosters++)
    {   
        for(chicken=0;chicken<100-roosters;chicken=chicken+3)
        {
            hens=100-roosters-chicken;
            if(5*roosters+3*hens+chicken/3==100)
            {
                printf("roosters=%2hhd,hens=%2hhd,chicken=%2hhd\n",roosters,hens,chicken);
            }
        }
    }   
    return 0;
}

3.计算出(100~1000)之间所有素数

#include <stdio.h>

int main(int argc,const char* argv[])
{
    int num = 0,i = 0,count = 0;
    for(num=100;num<=1000;num++)
    {   
        for(i=2;i<num/2;i++)
        {
            if(num%i==0)
            {
                break;
            }
        }
        if(i==num/2)
        {
            count++;
            printf("%d ",num);
        }
        if(count==20)
        {
            printf("\n");
            count = 0;
        }
    }   
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河马天上飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值