C语言if语句,for循环相关年月日应用

本文详细介绍了如何将if双分支语句简化为单分支,以及使用冒泡排序法对数组进行排序。同时,提供了判断闰年的代码实现,并讨论了根据输入年月输出当月天数的问题,包括考虑闰年因素。最后,探讨了两种不同的数值交换方法,分别是函数直接交换和指针操作交换。这些内容涵盖了基础编程技巧和算法应用。
摘要由CSDN通过智能技术生成

一,if双分支语句变成单分支语句

1.if单分支语句

if ( 表达式 )
{
代码块;
}

2.if双分支语句

if ( 表达式 )
{
 代码块1;
  }
else
{
 代码块2;
}

3.if双分支语句改成单分支语句

如果else 后面的语句什么也不做,就可以去掉它。如果if后面的语句和else后面的语句是简单的数字运算,可以改成三目运算符,表达式1?表达式2:表达式3的形式。

二,采用冒泡排序法对n个数据排序

将第一个元素和第二个元素进行比较,若为逆序则将两个元素交换,然后比较第二个元素和第三个元素。依次类推,直至第 n-1个元素和第 n个元素进行比较为止。

编写n个元素数组,用冒泡排序法进行排序

void sorting(int a[],int n)
{
  int j,i,temp,k;
  for(j = 0;j<n-1;j++)
  for(i = 0;i<n-1-j;i++)
{
if(a[i]>a[i+1]) 
{ 
  temp = a[i];
  a[i] = a[i+1];
  a[i+1] = temp;
} 
}
  for(k=0;k<n;k++)
   {
     printf("%d ,",a[k]);
   }
     printf("\n");
}

三,输入一个年份,判断是不是闰年

1. 满足两个条件之一即为闰年

(1)能被4整除但是不能被100整除
(2)能被400整除

2.代码实现

int main()
{
 int year;
 printf("请输入年份:");
 scanf("%d",&year);
 if (year%400 == 0 || year%4 == 0 && year%100 != 0)
  printf("%d是闰年\n",year);
 else
  printf("%d不是闰年\n",year);
 return 0}

四,输入年月,输出这个月有多少天

1, 考虑闰年问题

二月份的天数与闰年有关。闰年的判断依据是:若某年能被4整除,但不能被100整除,则这一年是闰年;若某年能被400整除,则这一年也是闰年。
例如;

void main() {
    int year, month;
    int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    printf("请输入年份和月份:");
    scanf("%d%d", &year, &month);
    ///判断这一年是是不闰年
    if (year % 400 == 0 || (year % 4 == 0) && (year % 100 != 0) {
        //如果是闰年的话,将数组中二月份的天数改为29天
        days[1] = 29;
    }
    printf("%d年%d月有%d天", year, month, days[month - 1]);
}

2,输入年月日,输出这天是这年第几天

首先定义一个数组,包含一到十二月各月的天数,由键盘输入年、月、日,将之前月份的天数累计相加,再加上当前的天数就是总天数。如果该年是闰年,总天数就要加一。
例如;
//显示该日是本年的第几天

#include<stdio.h>
int main()
{
    int y = 0, m = 0, d = 0, days = 0, i;
    int months[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    scanf("%d%d%d", &y, &m, &d);
    if((y%4 == 0 && y%100 != 0)||(y%400 == 0))
        months[1] = 29;
    else
        months[1] = 28;
    for(i = 0; i < m - 1; i++)
        days += months[i];
        days += d;
        printf("%d", days);
    return 0;
}

五,用函数对2个数交换

1.用函数直接交换

void swap(int x,int y)   //这个时候传递的就是值
{
    int t;
    t = x;
    x = y;
    y = t;    //值交换
    printf("a = %d\n",x);
    printf("b = %d\n",y);
}

int main()
{
    int a = 1,b = 2;
    swap(a,b);   //改变的是形参,但是实参没有改变
    printf("a = %d\n",a);
    printf("b = %d\n",b);
    return 0;
}

2.用指针操作交换

void swap(int *x,int *y)    //按指针传递
{
    int t;
    t = *x;
    *x = *y;
    *y = t;    //此时交换的时指针指向的值
    printf("a = %d\n",*x);
    printf("b = %d\n",*y);
}
int main()
{
    int a = 1,b = 2;
    swap(&a,&b);   
    printf("a = %d\n",a);
    printf("b = %d\n",b);
    return 0;
}
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

喜羊羊zz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值