作业小分享

/* 第一题 */
/* 每一种数据类型都是有一定的表达范围的,编程实现一种算法,
在不假定数据类型长度的条件下,算出当前系统的整型 int 所能表达的最大值。 */

#include <stdio.h>
#include <math.h>//pow(x,y)需要的头文件

int main()
{
    int  a, b, c;
    a = sizeof(int);
    b = a*8;
    c = pow(2,b-1)-1;//用次方函数计算最大值
    printf("整型变量的最大值为:%d",c);
    return 0;
}

代码优化后

/* 通过位运算来优化代码 */
#include <stdio.h> 

int main(int argc, char const *argv[])
{
    printf("当前系统的整型 int的范围为: %d ~ %d\n", (0x1 << 31), ~(0x1 << 31));   
    return 0;
}

/* 第二题 */
/* 编写一个程序,计算N升纯净水所包含的分子个数,结果用科学计数法表示。 */
/* 注意因为水的密度是1g/cm³,所以一升水就是1000克,
水的摩尔质量是18g/mol,所以1升水有1000/18=55.55555556mol水分子 */
/* 1mol水中存在6.02*10^23个水分子 */

#include <stdio.h>

int main(int argc, char const *argv[])
{
    printf("你要输入多少升的水\n");
    float Water = 0;
    float sum = 0;
    float num = 0;
    scanf("%f",&Water);
    sum = (Water*1000)/18;
    num = sum*(6.02e23);
    printf("得到了%f升的水可以转换成%.2f mol的水分子\n",Water,sum);
    printf("得到了%.2f mol的水可以转换成%.2e 的水分子\n",sum,num);
    return 0;
}

优化代码后
#include <stdio.h>

int main(int argc, char const *argv[])
{
    printf("你要输入多少升的水\n");
    float Water = 0;
    float num = 0;
    scanf("%f",&Water);
    num = Water*(3.34e22);
    printf("得到了%.2f 升的水可以转换成%.2e 的水分子\n",Water,num);
    return 0;
}




(字符与字符串)
【3】简述 ‘a’ 与 “a” 的异同。

'a':是一个字符,char类型的占用一个字节。
"a":是一串字符,同样也是char类型的,但a后面还有一个'\0',也占用一个字节,总共占用2个字节,所以是一个字符串。
/* 第四题 */
/* 编写一个程序,将用户输入的天数转化为等价的星期数和天数*/

#include <stdio.h>

// #define WEEK 7/* 定义一个全局变量WEEK */

int main()
{
    int a;
    // int WEEK = 7;/* 定义一个局部变量 */
    printf("请输入一个数字\n");
    scanf("%d",&a);
    // printf("输入%d转换为%d星期%d天\n",a,a/WEEK,a%WEEK);
    printf("输入%d转换为%d星期%d天\n",a,a/7,a%7);
    return 0;
}



/* 第五题 */
/* 实现1--n的累加求和 */

#include <stdio.h>

int add(int a)
{
    int i = 1, sum = 0;
    // /* do while循环 */
    // do
    // {
    //     sum = sum + i;
    //     i++;
    // }
    // while(i<=a);
    // /* for循环 */
    for(i = 1;i<=a;i++)
    {
        sum = sum + i;
    }
    // /* while循环 */
    // while(i<=a)
    // {
    //     sum = sum+i;
    //     i++;
    // }
    return sum;
}
int main()
{
    int a = 0;// a 输入一个数 
    int b = 0;// b 求和 
    printf("请输入一个值\n");
    scanf("%d",&a);
    b = add(a);
    printf("1+2+3+4+...+%d = %d\n",a,b);
    return 0;
}
//优化后代码
/* 采用公式法 */
#include <stdio.h>

int main(int argc, char const *argv[])
{
    int a;
    scanf("%d",&a);
    printf("%d\n",a*(a+1)/2);

    return 0;
}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值