C语言基础_Day04

本文展示了四个C语言编程作业,涵盖运算符优先级分析、摄氏与华氏温度转换、简易计算器功能实现以及日期到今年天数的计算,强调了理解和正确使用运算符的重要性。
摘要由CSDN通过智能技术生成

作业1:

展开的思路,按要求分析以下代码。
要求不要放到编译器中运行,自己手动分析出每条输出语句的结果,分析出结果后,再在编译器中执行验证结果

void main()
{
     int num,num2,num3;   
     num=1;    
     num2=2;
     num3=3; 
     num=++num2+ ++num3;         // num = 3+4 = 7, ++num2 = 3, ++num3 = 4
     printf("\n%d,%d,%d",num,num2,num3);//输出结果1:7,3,4
     num=num2++ + num3++;        
     printf("\n%d,%d,%d",num,num2,num3); //输出结果2:8(3+5),4,4
     num=++num2> num3++;        //0 = 5 > 5
     printf("\n%d,%d,%d",num,num2,num3); //输出结果3:0,5,6
     num=num2-- && --num3;      //1 = 5 && 5
     printf("\n%d,%d,%d",num,num2,num3); //输出结果4:1,4,5
     num  =  num2>num3 ? num2++ : num3++;	//5 = 4>5 ? :num3++         
     printf("\n%d,%d,%d",num,num2,num3); //输出结果5:5,4,6
}

作业二:

编程实现:输入华氏温度F,要求输出对应的摄氏温度C,要求结果保留两位小数。计算公式为:C = 5/9*(F-32);

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(int argc, const char *argv[])
{
	float temper_F; 		//接收华氏温度
	float temper_C; 		//输出摄氏温度

	printf("请输入要转换的华氏温度:");
	scanf(" %f", &temper_F);
	//法1 ,若表达式为C = 5/9*(F-32),因为运算符是从左向右结合,5/9的结果是0
	//将浮点型放在算式式左侧即可
	temper_C = (temper_F-32)*5/9;
	//法2
	//temper_C = 5.0/9*(temper_F-32);

	printf("华氏温度%.2f等于摄氏温度%.2f\n", temper_F, temper_C);

	return 0;
}

作业三:

使用switch实现简易计算器:例如,输入一个表达式:3+5,程序输出结果为8

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(int argc, const char *argv[])
{
	double num1, num2, result;	//保存数字
	char opera;	//保存输入的运算符

	printf("请输入一个简易表达式,\n"
			"格式为:数字 运算符 数字,运算符可以是+-*/\n");
	scanf(" %lf %c %lf", &num1, &opera, &num2);		//%前加空格,删去输入的多余空格
	switch(opera)		//不同的运算符,运算符不同,输入的运算符为字符型
	{
		case '*':  	result = num1*num2; break;
		case '/':  	result = num1/num2; break;
		case '+':  	result = num1+num2; break;
		case '-':  	result = num1-num2; break;
		default: 	printf("输入的运算符不是+-*/中的一个\n");
	}

	printf("%.3lf %c %.3lf = %.4lf\n", num1, opera, num2, result);
	return 0;
}

作业四:

使用switch实现,要求输入一个日期,输出该日期是对应今年的第几天
例如输入:2023 1 20 输出结果:该日期是今年第20天

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define debug_ 0

int main(int argc, const char *argv[])
{
	int year, month, day;
    int cnt_day = 0;
    #if debug_
    while(1)
    {
    #endif
        cnt_day = 0;
        printf("请输入一个日期(格式:年 月 日):");
        scanf("%d%d%d", &year, &month, &day);
        //如果给scanf末尾加上\n,\n不表示等待换行符,而是读取并放弃连续的空白字符
        //scanf("%d%d%d\n", &year, &month, &day);

        switch(month)
        {
            //01 02 03 04 05 06 07 08 09 10 11 12
            //31 28 31 30 31 30 31 31 30 31 30 31
            case 12: cnt_day += 30;        //利用case遇到break才退出的特性
            case 11: cnt_day += 31;
            case 10: cnt_day += 30;
            case  9: cnt_day += 31;
            case  8: cnt_day += 31;
            case  7: cnt_day += 30;
            case  6: cnt_day += 31;
            case  5: cnt_day += 30;
            case  4: cnt_day += 31;
            case  3: cnt_day += 28;
            case  2: cnt_day += 31;
            case  1: cnt_day += day; break;
            default: printf("输入的月份有误!\n");
        }
        #if debug_
        printf("%d %d %d", year, month, day);
        #endif
        
        if(year<0 || month<0 || day <0 || day>31)
            printf("输入的年或日不正确!\n");
        else
            if( ((year%4 == 0 && year%100 != 0) || year % 400 == 0) && month>2)
            {
                cnt_day++;      //闰年二月多一天,+1
            }
            printf("该日期是今年第%d天\n", cnt_day);
    #if debug_
    }
    #endif

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值