给定一个年月日,判断这个日期是否有效,如果有效,请计算出下一天
#include <stdio.h>
#include <stdbool.h>
bool isValidDate(int yea
r,int mon,int day){
//假设无效的 只需要找出有效的
int leap = year%4==0 && year%100!=0 || year%400==0; //闰年 leap为1 平年0
int littel = mon == 4 || mon == 6 || mon == 9 || mon==11;//小月为1 大月为0
if(mon>0 && mon<=12){
if(mon == 2){
if(day>0 && day<=28+leap){//若为闰年则+1
return true;
}
}else{
if(day>0 && day<=31-littel){
return true;
}
}
}
return false;
}
struct Date{
int year;
int mon;
int day;
};
struct Date nextDay(struct Date d){
//假设有效的日期
struct Date nd = {d.year,d.mon,d.day+1};
if(d.day == 31){
if(d.mon == 12){
nd.year = d.year+1;
nd.mon = 1;
}else{
nd.mon = d.mon + 1;
}
nd.day = 1;
}else if(d.day == 30){
if(d.mon == 4 || d.mon == 6 || d.mon == 9 || d.mon == 11){
nd.mon = d.mon + 1;
nd.day = 1;
}
}else if(d.day == 29){
if(d.mon == 2){
nd.mon = 3;
nd.day = 1;
}
}else if(d.day == 28){
if(d.mon == 2 && !(d.year%4==0&&d.year%100!=0||d.year%400==0)){
nd.mon = 3;
nd.day = 1;
}
}
return nd;
}
int main(int argc,char *argv[]){
return 0;
}
写函数,求一组整数的最大连续子串和
#include <stdio.h>
int maxSubSum(int arr[],size_t n){
int sum = arr[0]; //记录最大子串和
int currSum = 0; //当前累加和
int i;
for(i=0;i<n;++i){
currSum += arr[i];
if(currSum > sum){
sum = currSum;
}
if(currSum < 0){ 若当前累加和为负数,则抛弃不要,重新计算。
currSum = 0;
}
}
return sum;
}
int main(){
return 0;
}
写函数,逆序输出字符串
void nixu(char *arr)
{
size_t len;
for(len=0;str[len];++len);
int i;
for(i=0;i<len/2;++i)
{
char tmp=str[i];
str[i]=str[len-1-i];
str[len-1-i]=tmp;
}
}
写函数,把字符串往左移n
void reverse(char *arr,size_t len) //先逆序字符串
{
int i;
for(i=0;i<len/2;++i)
{
char tmp=str[i];
str[i]=str[len-1-i];
str[len-1-i]=tmp;
}
}
void momvRight(char *str,size_t n) //再根据左移位数,分别逆序
{
size_t len=strlen(str);
n=n%len;//避免位移数大于字符串长度
if(n>0)
{
reverse(str,len);
reverse(str,len-n);
reverse(str+len-n,n);
}
}