【C语言经典100题】(12月20日-day7)

cr:经典

 题目7

输出九九乘法表。

思路: 

 x*y,x向右递增,y向下递增;每行第一个都是1*x,x最大增到和y相等;用两个for嵌套,外层是y,写完一行再写下一行。

代码: 

对方: 

 反思&收获:

这个题目同样是之前就写过的,几乎毫不费力就写出来了。这是让我很有成就感的,还记得当初写这个程序的时候还卡壳来着……

在这次写的时候,我用到了前几天在写小林题目中学到的东西%-m.nd 还是挺有成就感的!


cr:小林

例7

输入一个字符,判别它是否为大写字母,如果是,将它转换成小写,如果不是,不转换。然后输出最后得到的字符,要求使用三目运算符。

思路: 

题目的结果是要输出一个小写字母。要做的是判断输入的这个字符是大写还是小写,若为大写则转换后输出,否则直接输出。

代码: 

对方: 

 反思&收获:

在写代码的时候由于粗心大意,把变量类型定义成了浮点数float,结果可想而知,无论怎么看、怎么改都出不来正确结果。看完小林的代码才恍然大悟——犯了一个这么低级的错误!

发完才想起来还有个三目运算符的事情!小林题目要求用三目运算符,我看题的时候没想起来三目运算符是什么,后来看完小林的代码才想起来——其实就是问号语句 ?:;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是C语言实现万年历和农历的代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> // 定义全局变量 int year, month, day; int week, days; int lunar_year, lunar_month, lunar_day; char lunar_month_name[10]; // 定义函数 void gotoxy(int x, int y); void get_date(); void print_calendar(); void print_lunar_calendar(); void get_lunar_date(); void get_lunar_month_name(); void month(int y, int m); int get_lunar_month_days(int year, int month); int get_lunar_year_days(int year); int get_lunar_month(int year, int day); int get_lunar_day(int year, int month, int day); int get_lunar_year(int year); // 主函数 int main() { printf("请输入年:"); scanf("%d%d", &year, &month); month(year, month); return 0; } // 移动光标 void gotoxy(int x, int y) { COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } // 获取公历期 void get_date() { SYSTEMTIME sys; GetLocalTime(&sys); year = sys.wYear; month = sys.wMonth; day = sys.wDay; } // 打印公历历 void print_calendar() { printf(" 一 二 三 四 五 六\n"); for (int i = 1; i < week; i++) { printf(" "); } for (int i = 1; i <= days; i++) { if (week == 7) { printf("%2d\n", i); week = 0; } else { printf("%2d ", i); } week++; } printf("\n"); } // 打印农历历 void print_lunar_calendar() { printf("农历:%s%s\n", lunar_month_name, lunar_day == 1 ? "初一" : lunar_day == 10 ? "初十" : lunar_day == 20 ? "二十" : lunar_day == 30 ? "三十" : ""); } // 获取农历期 void get_lunar_date() { int i, leap = 0, temp = 0; for (i = 1900; i <= year && temp <= 0x10000; i++) { temp = get_lunar_year_days(i); } if (year == i - 1) { temp = get_lunar_year_days(year); } days = temp - 1; for (i = 1; i <= 12 && days > 0; i++) { if (get_lunar_month_days(year, i) == 13) { leap = leap_month(year); } else { leap = 0; } if (leap == i && days > 0) { i--; days -= get_lunar_month_days(year, leap); leap = 0; } else { days -= get_lunar_month_days(year, i); } } if (days == 0 && leap > 0 && i == leap + 1) { if (leap == 12) { leap = 1; } else { leap++; } } if (days < 0) { days += get_lunar_month_days(year, --i); } lunar_month = i; lunar_day = days + 1; } // 获取农历份名称 void get_lunar_month_name() { char *month_name[] = {"", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"}; strcpy(lunar_month_name, month_name[lunar_month]); } // 获取农历年份的总天数 int get_lunar_year_days(int year) { int i, sum = 348; for (i = 0x8000; i > 0x8; i >>= 1) { sum += (get_lunar_year(year) & i) ? 1 : 0; } return sum + leap_month(year); } // 获取农历份的总天数 int get_lunar_month_days(int year, int month) { return (get_lunar_year(year) & (0x10000 >> month)) ? 30 : 29; } // 获取农历年份的闰份 int leap_month(int year) { return get_lunar_year(year) & 0xf; } // 获取农历年份的二进制码 int get_lunar_year(int year) { int i, sum = 0; for (i = 0x8000; i > 0x8; i >>= 1) { sum += (get_lunar_year(year) & i) ? 1 : 0; } return sum; } // 获取农历份 int get_lunar_month(int year, int day) { int i, leap = 0, temp = 0; for (i = 1; i <= 12 && day > 0; i++) { if (get_lunar_month_days(year, i) == 13) { leap = leap_month(year); } else { leap = 0; } if (leap > 0 && i == leap + 1 && day > 0) { --i; day -= get_lunar_month_days(year, leap); leap = 0; } else { day -= get_lunar_month_days(year, i); } } if (day == 0 && leap > 0 && i == leap + 1) { if (leap == 12) { leap = 1; } else { leap++; } } if (day < 0) { day += get_lunar_month_days(year, --i); } return i; } // 获取农历 int get_lunar_day(int year, int month, int day) { int i, leap = 0, temp = 0; for (i = 1; i < month; i++) { if (get_lunar_month_days(year, i) == 13) { leap = leap_month(year); } else { leap = 0; } if (leap > 0 && i == leap + 1) { --i; leap = 0; } } return day; } // 获取农历年份 int get_lunar_year(int year) { int i, leap = 0, temp = 0; for (i = 1; i <= 12 && temp < year; i++) { temp += get_lunar_month_days(year, i); if (get_lunar_month_days(year, i) == 13) { leap = leap_month(year); } else { leap = 0; } if (leap > 0 && i == leap + 1) { --i; leap = 0; } } if (temp > year) { --i; } return i; } // 打印一个历 void month(int y, int m) { int i, j; get_date(); week = 0; days = 0; lunar_year = 0; lunar_month = 0; lunar_day = 0; get_lunar_date(); get_lunar_month_name(); printf("%d年%d\n", y, m); printf("公历:\n"); printf(" 一 二 三 四 五 六\n"); for (i = 1; i < week; i++) { printf(" "); } for (i = 1; i <= days; i++) { if (week == 7) { printf("%2d\n", i); week = 0; } else { printf("%2d ", i); } week++; } printf("\n"); printf("农历:\n"); printf(" 一 二 三 四 五 六\n"); for (i = 1; i < week; i++) { printf(" "); } for (i = 1; i <= days; i++) { if (week == 7) { print_lunar_calendar(); printf("\n"); week = 0; } else { print_lunar_calendar(); } week++; } printf("\n"); } // 相关问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜東

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

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

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

打赏作者

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

抵扣说明:

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

余额充值