注意事项贴在代码的备注里:
//10_13《C Primer Plus》第五章“运算符、表达式和语句”编程练习
//1.分钟换算小时和分钟的小程序
/*定义程序目标:把分钟数转换成分钟和小时,输出0后退出循环
设计程序:定义符号常量用于分钟与小时的转换;
定义min、hour、left三个变量,提示用户输入分钟数;
while(min>0)计算hour(*)和left(%),打印出三个值,再提示用户输入min;
最后循环结束打印"done"*/
#include<stdio.h>
#define MIN_PER_HOUR 60
#define DAY_PER_WEEK 7
void lo();
int main(void)
{
int min, hour, left;
printf("Please enter the number of minute:\n");
scanf_s("%d", &min);
while (min > 0)
{
hour = min / MIN_PER_HOUR;
left = min % MIN_PER_HOUR;
printf("%d minutes is %d hours,%d minutes\n", min, hour, left);
printf("Enter the number of minute(<= 0 to quit):\n");
scanf_s("%d", &min);
}
printf("Done!\n");
//2.打印比输入整数大十的所有整数
/*定义程序目标:打印比输入整数大十的所有整数;
设计程序:定义num和i变量,提示用户输入一个整数(在while复合语句之外)
while(++i<=10),i从先加1再开始比较,对应打印的num值加1(可以避免多打印一个原num值)*/
int num;
int i = 0;
printf("请输入一个整数:\n");
scanf_s("%d", &num);//读取用户输入的数
while (++i <= 10)
{
num++;
printf("%d\n", num);
}
//3.天数转换成天数和周数(思路和1一样)
int days, weeks, leftd;
printf("Please enter a number of days :");
scanf_s("%d", &days);
while (days >0)
{
weeks = days / DAY_PER_WEEK;
leftd = days % DAY_PER_WEEK;
printf("%d days is %d weeks %d days\n", days, weeks, leftd);
printf("Enter a number of days(<= 0 to quit):\n", &days);
scanf_s("%d", &days);
}
printf("Done!\n");
//4.厘米转化为英尺和英寸
/*定义程序目标:厘米转化为英尺和英寸单位;
设计程序:*/
float cm;
printf("Enter a height in centimeters:\n");
scanf_s("%f", &cm);
while(cm>0)
{
int foot = cm / 2.54;
float inch = (cm - foot * 2.54) * 12;
/*使用“% ”求余数会要求表达式全为整型,所以可以先求余数在转换,分两步进行*/
printf("%.1f = %d feet, %.1f inches\n", cm, foot, inch);
printf("Enter a height in centimeters(<=0 to quit):\n");
scanf_s("%f", &cm);
}
printf("Done!\n");
//5、6修改程序
int dayss, sum,dollar,n,N;
sum = 0;
dollar = 0;
n = 0;
N = 0;
printf("Enter a number of dayss:\n");
scanf_s("%d", &dayss);
while (dollar++ < dayss)
{
N++;
n = n + N * N;/*考虑清楚什么是规律递增变量,什么是复杂变量,让简单变量做复杂运算*/
sum = sum + dollar;
printf("sum= %d$,n=%d$\n", sum, n);/*加括号可以打印每次循环*/
}
printf("Done!");
//7.打印输入的立方值传递给自定义函数
double cube;
printf("Please enter a number of double type:\n");
scanf_s("%f", &cube);
cube = cube * cube * cube;
lo();
void lo();
{
printf("%f", cube);
}
}
#include<stdio.h>
void lo(void);
int main(void)
{
//7.打印输入的立方值传递给自定义函数
lo();/*调用函数只用来打印结果会报错:应输入声明,可能是因为main函数与调用函数的内容不互通*/
//8.求模运算
int i, div, left;
printf("This orogram computers moduli.\n");
printf("Enter an integer to serve as the second operand:\n");
scanf_s("%d", &i);
printf("Now enter the first integer:\n");
scanf_s("%d", &div);
while (div > 0)
{
left = div % i;
printf("%d %% %d = %d\n", div, i, left);/*打印%号:%d%d;如果只打一个%,最终导致left没打印*/
printf("Enter the next number for the first operand(<=0 to quit):\n");
scanf_s("%d", &div);
}
//9.华氏温度转化为摄氏度和开氏温度,scanf_s函数返回值非1退出
/*设计程序:声明函数,while循环,条件是revalue
提示用户输入一个值,调用函数,提示用户再次输入一个华氏温度值,且输入q退出,用revalue=跟scanf_s的返回值作比较
定义函数,定义摄氏温度CT、华氏温度KT、华氏温度FT变量,用户输入一个华氏温度值(提示在主函数里做好)转换成摄氏度和开氏温度,并打印出来*/
#include<stdio.h>
void Temperatures(void);
int main(void)
{
int revalue = 1;
while (revalue == 1)/*用于作判断的自定义变量*/
{
printf("Please enter a number of Fahrenheit temperatures:\n");
Temperatures();
printf("Please enter a number of Fahrenheit temperatures(enter q to quit):\n");
revalue=scanf_s("%d", revalue);
}
printf("Done!");
}
void Temperatures(void)
{
const double FT;
scanf_s("%lf", &FT);/*注意double的小数类型转换说明用%lf*/
const double CT = 5.0 / 9.0 * (FT - 32.0);
const double KT = CT + 273.16;
printf("%.2lf Fahrenheit temperature is %.2lf Celsius is %.2lf Kelvin temperature\n", FT, CT, KT);
}