标准C语言day03

标准C语言day03

复习:
1、数据类型:
signed char 1 %hhd -128~127
signed short 2 %hd -32768~32767
signed int 4 %d 正负20亿
signed long 4 %ld
signed long long 8 %lld 9天开头的19位数
unsigned char 1 %hhu 0~255
unsigned short 2 %hu 0~65535
unsigned int 4 %u 0~40亿
unsigned long 4 %lu
unsigned long long 8 %llu 1开头的20位数
float 4 %f
double 8 %lf
long double 12 %LF
2、变量取名规则
1、由数字 字母 下划线组成
2、不能以数字开头
3、不能与关键字重名
4、见名知义
3、变量的输入输出
printf 提示信息+占位符+变量名
scanf 占位符+变量地址
%nd %0nd %-nd %n.mf
4、运算符
/ % 除数不能0,否则会产生浮点数例外,核心已转储错误
== 变量尽量放在右边
++/-- 一行代码中不要过多使用
&& || 具有短路特性
A?B:C 不能出现流程控制语句
5、类型转换
自动类型转换:不同类型的数据会先转换成相同类型的数据才能进行运算。
转换规则(以不丢失数据为基础,适当牺牲一些空间):
1、字节少向字节多转
2、相同字节数有符向无符转
3、整型向浮点型转

强制类型转换
(目标类型)数据 , 可能会造成数据丢失,慎重使用。

一、开关语句
switch(n)//运算结果必须是整型
{
case val: // val必须是整常量 ,如果val等于n,则打开执行开关

break; // 关闭执行开关
注意:如果每个cast后都有break,就形成了分支结构。
default:// 如果所有的case都没有匹配成功则打开执行开关
}
case a … b: 判断一个范围,此为GNU编译器独有的语法,不建议使用。

练习1:输入一个月份,判断季节。
    123 春天
    456 夏天
    789 秋天
    10 11 12 冬天
    other 输入的月份有误
    #include <stdio.h>

int main(int argc,const char* argv[])
{
int month;
printf("请输入一个月份:");
scanf("%d", &month);
switch(month)
{   
    case 1:case 2:case 3:
    printf("春");break;
    case 4:case 5:case 6:
    printf("夏");break;
    case 7:case 8:case 9:
    printf("秋");break;
    case 10:case 11:case 12: 
    printf("冬");break;
    default: printf("%d", month);
}   
return 0;
}


练习2:输入一个月份,判断该月有多少天,忽略闰年问题。      略

for循环语句:
循环就是让一段代码反复执行,达到你想要的结果。
for一种比较灵活且危险(与其它循环相比)的一种循环。
一般使用一个变量来引导它的运行,这个变量就叫作循环变量。
for([1];[2];[3])
{
[4];
}
1、给循环变量赋初值,C99标准才可以定义循环变量。
此处定义的循环变量,只能for循环内使用。
2、判断循环变量的是否到达边界。
4、被反复执行的代码,也叫循环体。
3、改变循环变量,防止变成死循环,一般对循环变量自加或自减。
大括号问题:
1、建议上下对齐
2、循环体如果只有一行代码,大括号可以省略
但不利于扩展,一般商业代码要求大括号不能省略。
for循环的多种写法:
for(;😉
{
// 死循环
}
int i = 0;
for(;i<10; i++)
{
}
for(int i=0; i<10;)
{
printf("----");
i++;
}
while语句:
while(条件) // 当条件为真执行循环体,为假时结束
{
// 循环体
}
while循环相当于for循环的精简版本。
for循环负责解决明确知道循环次数的问题。
while负责解决只知道结束条件而不确定循环次数的问题。

do while语句:
do{
循环体
}while(条件);
先执行循环体,再判断循环条件,该循环至少执行一次。

循环嵌套:
循环语句中包含循环语句。
外层循环执行一次,内存循环执行遍。

 练习3:计算出所有的水仙花数。
 #include <stdio.h>
 #include <math.h>
int main(int argc,const char* argv[])
{
for(int i=100;i<=1000;i++)
{   
    int a = i/100;
    int b = i%100/10;
    int c = i%100%10;
    if(i == pow(a,3)+pow(b,3)+pow(c,3))
    {   
        printf("%d\n", i); 
    }   
}   
return 0; 
}

 
练习4:输入一个正整数,判断是否是素数。
#include <stdio.h>int main(int argc,const char* argv[]){
int n;
printf("请输入一个整数:");
scanf("%d", &n);
if(n<2)
{   
    printf("error");
    return 0;
}   
int cnt=0;
for(int i=1;i<=n;i++)
{   
    if(0 == n%i)
    {   
        cnt++;
    }   
}   
if(2 == cnt)
{   
    printf("素数");
     }
else
{
    printf("非素数");
}
return 0;
}


练习5:输入一个整数,分解显示。
-1234
-1 2 3 4
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc,const char* argv[])
{
int num;
printf("请输入一个数字:");
scanf("%d", &num);
if(num<0)
{   
    printf("-");
    num=abs(num);
}   
int cnt=0, copy=num;
while(copy)
{   
    copy/=10;
    cnt++;
}   
for(int i=cnt;i>0;i--)
{   
    printf("%d ", num/(int)pow(10,i-1));
    num = num%(int)pow(10,i-1);
}   
return 0;
}
练习6:输入一个正整数,判断是否是回文数。
1234 
4321
#include <stdio.h>int main(int argc,const char* argv[]){
int num=0,new=0;
printf("请输入一个正整数:");
scanf("%d", &num);
if(num<0)
{   
    printf("error");
}   
int copy=num;
while(copy)
{   
    new = (new*10)+(copy%10);
    copy/=10;
}   
printf("%d %d\n", num, new);
if(new == num)
{   
    printf("回文数");
}   
else
{   
    printf("不是回文数");
}   
return 0;
}

跳转语句:
goto 可以在函数内任意跳转。
它可能会破坏已经设计好的分支或循环语句,因此绝大多数公司禁止使用。
但它在驱动编程时特别适合处理异常。
标签: // 位置
goto 标签;

练习7:不使用循环计算N的阶乘。
还没有整理,等我几天。

break
1、在switch关闭执行开关
2、跳出循环,但只能跳一层。
continue
结束本次循环,进入下次循环。
return
1、返回一个数据给函数的调用者。
2、结束函数的执行。

练习8:不使用循环计算前N项的斐波那切数列。
    1 1 2 3 5 8 13 21 ...
这个也还没有整理,等我几天

作业:

    1、打印9*9乘法表。
   
    2、编程解决百鸡百钱问题,今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。

    3、计算出100~1000之间所有的素数。

    4、输入一个日期(yyyy-mm-dd),计算该日期距离自公元元年1月1日多少天。

    5、显示以图形:要求printf一次只能输出一个字符。
                 **********
                **********
               **********
              **********
             **********
            **********
           **********
          **********
         **********
        **********
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值