作业1
展开的思路,按要求分析以下代码。
要求不要放到编译器中运行,自己手动分析出每条输出语句的结果,分析出结果后,再在编译器中执行验证结果
void main() {
int num, num2, num3;
num = 1;
num2 = 2;
num3 = 3;
num = ++num2 + ++num3;
printf("\n%d,%d,%d", num, num2, num3); //输出结果1
num = num2++ + num3++;
printf("\n%d,%d,%d", num, num2, num3); //输出结果2
num = ++num2 > num3++;
printf("\n%d,%d,%d", num, num2, num3); //输出结果3
num = num2-- && --num3;
printf("\n%d,%d,%d", num, num2, num3); //输出结果4
num = num2>num3 ? num2++ : num3++;
printf("\n%d,%d,%d", num, num2, num3); //输出结果5
}
输出结果如下:
7, 3, 4
7, 4, 5
0, 5, 6
1, 4, 5
5, 4, 6
作业2
编程实现:输入华氏温度F,要求输出对应的摄氏温度C, 要求结果保留两位小数。
计算公式为:C = 5/9*(F-32);
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 输入华氏温度F,要求输出对应的摄氏温度C,要求结果保留两位小数。
float f, c;
printf("请输入华氏温度F:");
scanf("%f", &f);
c = (5.0 / 9.0) * (f - 32);
printf("%.2f华氏度为%.2f摄氏度\n", f, c);
return 0;
}
作业3
使用 switch
实现简易计算器:例如,输入一个表达式:3+5,程序输出结果为 8
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 使用switch实现简易计算器
int num1, num2; // 表达式两边的数字
char op; // 运算符
printf("请输入一个表达式: ");
scanf("%d %c %d", &num1, &op, &num2);
switch (op) {
case '+':
printf("%d\n", num1 + num2);
break;
case '-':
printf("%d\n", num1 - num2);
break;
case '*':
printf("%d\n", num1 * num2);
break;
case '/':
printf("%d\n", num1 / num2);
break;
default:
printf("error\n");
break;
}
return 0;
}
作业4
使用 switch
实现,要求输入一个日期,输出该日期是对应今年的第几天
例如输入:2023 1 20 输出结果:该日期是今年第 20 天
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 使用 switch 实现,要求输入一个日期,输出该日期是对应今年的第几天
int year, month, day;
printf("请输入年月日:");
scanf("%d%d%d", &year, &month, &day);
// 判断是不是闰年
int run = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
int count = 0; // 记录前几月份的天数
switch (month) {
case 12: count += 30;
case 11: count += 31;
case 10: count += 30;
case 9: count += 31;
case 8: count += 31;
case 7: count += 30;
case 6: count += 31;
case 5: count += 30;
case 4: count += 31;
case 3: count += run ? 29 : 28; // 闰年2月有29天
case 2: count += 31;
case 1: count += 0;
}
printf("%d\n", count + day); // 需要加上本月份的天数
return 0;
}