内容发布更新时间 : 2025/1/23 3:52:50星期一 下面是文章的全部内容请认真阅读。
实验6函数与预处理1(2)
自测题一 编写函数,实现删除字符串中字符’T’的功能,要求使用内联函数
#include
inline char fun(char ch) //内联函数fun首部 { }
int main() { }
char c;
cout << \ << endl; while ((c = getchar()) != '\\n') { }
cout << \; return 0;
if (fun(c)) //对于if来说除了0之外都是1
cout << fun(c);
if (ch == 'T')
return 0;
//内联函数fun函数体,语句数量不限
自测题二 编写重载函数Max可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。
#include
{/*功能:求取两个整数的最大值,语句数量不限 */ }
int max(int a, int b, int c)
{/*求取三个整数的最大值,语句数量不限 */ }
double max(double a, double b)
{/*求取两个双精度的最大值,语句数量不限 */ }
double max(double a, double b, double c) {/*求取三个双精度的最大值,语句数量不限 */
cout << \; cout << \; return a > b ? a : b;
cout << \;
return a > b ? (a > c ? a : c ) : ( b > c ? b : c); cout << \; return a > b ? a : b;
}
return a > b ? (a > c ? a : c) : (b > c ? b : c);
int main() { }
int a, b, c, d, e; double m, n, o, p, q;
cout << \请输入两个整数:\ << endl; cin >> a >> b;
cout << \最大值为\ << max(a, b) << endl; cout << \请输入三个整数:\ << endl; cin >> c >> d >> e;
cout << \最大值为\ << max(c, d, e) << endl; cout << \请输入两个双精度数:\ << endl; cin >> m >> n;
cout << \最大值为\ << max(m, n) << endl; cout << \请输入三个双精度数:\ << endl; cin >> o >> p >> q;
cout << \最大值为\ << max(o, p, q) << endl; return 0;
自测题三 设计一个打印年历的程序。要求:打印每个月的月历的功能有一个独立的函数完成,程序运行时,主程序通过若干次调用该函数完成年历的输出。注意处理闰年问题。
#include
using namespace std;
void printmonth(int m); //5个被调函数声明 void printhead(int m); int daysofmonth(int m); int isleap(int y); void firstday(int m);
int year, weekday; //定义全局变量 int main() { while (true) { cout << \输入年份:\; cin >> year; cout << \; cout << year << \年\\n\; for (int i = 1; i <= 12; i++) { printmonth(i); cout << \;
}
cout << \;
} return 0;
}
void printmonth(int m)
{ /*功能:1、调用printhead(m),输出月历首行形式并确定m月第1天的位置 2、从第1天输出该月其它天的日历,注意换行控制格式*/ int days; printhead(m);
for (int i = 0; i < (weekday + 1) % 7; i++)//控制是星期的输出
cout << setw(4) << \;
days = daysofmonth(m);//得到每月的天数 for (int i = 1; i <= days; i++) { cout << setw(4) << i;
weekday = (weekday + 1) % 7;//为了配合星期的显示 if (weekday == 6)
cout << endl << endl;
}
}
void printhead(int m) { /*功能:1、输出月历首行形式: m 月 日 一 二 三 四
2、确定m月第1天的位置,即对齐改天是星期几*/
cout << endl << endl;
五 六 }
cout << m << \月\ << endl;
cout << setw(4) << \日\ << setw(4) << \一\ << setw(4) << \二\ << setw(4) << \三\ << setw(4)
<< setw(4) << \五\ << setw(4) << \六\ << endl;
<< \四\
firstday(m);
int daysofmonth(int m) { }
int isleap(int y) { }
void firstday(int m) {
/*功能:判断该月的第一天是星期几? 思路:这个问题需找一个参照点,如设2000年1月1日为参照点,这天是星期六,则可计算该月的第一天距离参照点有多少天,(注意闰年要多加1天)如2012年4月1日与2000年1月1日相差4474天,4474%7=1,所以2012年4月1日是星期日。返回值是y月第1天是星期几*/
long n;
n = (year - 1) * 365;//从公元 1 年 1 月 1 日天始算, 到现在所输入年有多少天 /*功能:判断y是否为闰年,是返回1,否返回0,闰年判断表达式见上机指导P19 二、填空题第5return (y % 4 == 0 && y % 100 != 0 || y % 400 == 0); 题*/
/*功能:判断m月多少天,返回值是m月的天数,注意闰年*/ switch (m) { case 1: case 3: case 5: case 7: case 8: case 10:
case 12:return 31;//1,3,5,7,8,10,12,月每月有31天 case 4: case 6: case 9:
case 11:return 30;//4,6,9,11月每月31天 case 2: }
if (isleap(year))
return 29;//闰年每年二月29天 return 28;//非闰年二月28天 else
default:return 30;