L1-017 到底有多二(chen-C语言)

一,题目
L1-017 到底有多二 (15分)
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。

输入格式:
输入第一行给出一个不超过50位的整数N。
输出格式:
在一行中输出N犯二的程度,保留小数点后两位。

输入样例:
-13142223336
输出样例:
81.82%

二,思路(测试点2未通过)
1.字符数组
2.判断正负(字符)
3.判断奇偶(数组取余)
4进行运算

三,新点
1.强制类型转换的使用(double)
2.使用strlen(a[i])去实现得到数组的位数(负数情况下,为strlen (a[i]) - 1 )
int i = (int)(a[strlen(a)-1] - ‘0’);
3.输出为nan:not a number,不是一个数字
4.long long输入的数字是19位
long

四,代码

#include<stdio.h>   //类比于L1-003
#include<string.h>
int main()
{
    double er=1.0;
    char a[55];
    gets(a);
    int i,count = 0;
    for(i=0;i<strlen(a);i++)
    {
        if(a[i]=='2')//使用字符'2',因为是字符数组
            count++;
    }
    int u = strlen(a);
    if(a[0]=='-')
    {
        u = u-1;
        er = er*1.5;
    }
    if(a[u]%2==0)
            er = er*2.0;
    er = 100*er*count/u;
    printf("%.2lf\%\n",er);
        
    
    return 0;
    
}
一、C语言自我YY 1)、C语言是许多高级计算机语言的基础,学好C语言能更好的学习其他高级语言,为以后的学习打基础;往深学C语言的话那就是学到C在Linux里的应用,Linux十分强大。 2)、C语言是一种计算机程序设计语言。具有高级语言的特点,又具有汇编语言的特点。C语言可作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。 3)、应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,维图形和动画。具体应用比如单片机以及嵌入式系统开发。 4)、C语言是面向过程语言,C语言通过windows/linux平台下编译的,是直接运行在windows/linux平台下的,而XX始终是运行在他的虚拟机之上的;所以理论上C语言能做一些相对于比较底层的工作,像XX就不能编写Windows病毒。 5)、如果要利用编程来做一些windows优化工作的话,建议还是利用C语言。C语言是目前世界上流行、使用最广泛的高级程序设计语言 6、很多编译器,几乎所有操作系统Windows,Linux,Unix的大部分代码都是C,C在背后做了很多东西的,也许开发游戏用C++,安卓用XX更为合适,图形界面的用其他语言开发效率更高一些(因为他们封装了很多东西),但同样的原因导致略微接近底层的功能其他语言根本干不了!Windows的API都是按照C语言的格式给的,这也很能说明问题!嵌入式开发更是离不了C语言!纵观电脑发展几十年,C语无所不能呀!
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页