c程序检查数字是否均匀

时间:2015-07-08 04:58:28

标签: c digits

输入和输出格式:

输入包含一个与账单编号对应的编号。 账单号码是一个3位数字,数字中的所有3位数字都是偶数。

输出包含一个“是”或“否”的字符串。当客户收到奖品时输出为是,否则输出为

样品:

Input     Output
565       no
620       yes
66        no         # Not a 3-digit number (implicit leading zeros not allowed)
002       yes        # 3-digit number

我通过使用“number”mod 10获得单个数字,然后检查“digit”mod 2是否为0来解决问题......

但是如果我输入“002”,它会输出“no”而不是我希望它应该是“是”。

代码 - 从评论中复制和格式化:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
    int num, t, flag, count = 0;
    while (num)
    {
        t = num % 10;
        num = num / 10;
        if (t % 2 == 0)
        {
            flag = 1;
        }
        else
        {
            flag = 0;
        }
        count++;
    }
    if (flag == 1 && count == 3)
    {
        printf("yes");
    }
    else
    {
        printf("no");
    }
    return 0;
}

3 个答案:

答案 0 :(得分:1)

您必须使用字符串而不是数字,否则您无法表示 public static Bitmap getFacebookProfilePicture(String userID) throws IOException { URL imageURL = new URL("https://graph.facebook.com/" + userID + "/picture?type=large"); Bitmap bitmap = BitmapFactory.decodeStream(imageURL.openConnection().getInputStream()); return bitmap; } // on createView method try { Bitmap mBitmap = getFacebookProfilePicture(id); imageView.setImageBitmap(mBitmap); } catch (IOException e) { e.printStackTrace(); } 值。

识别偶数:

002

识别只有偶数位的字符串:

int even(char c) {
    switch (c) {
        case '0':
        case '2':
        case '4':
        case '6':
        case '8':
            return 1;
        default:
            return 0;
    }
}

仅对3个偶数位的字符串返回“yes”,对所有其他字符串返回“no”:

int all_even(char* s) {
    while (*s != '\0') {
        if (!even(*s)) {
            return 0;
        }
        s++;
    }
    return 1;
}

答案 1 :(得分:0)

如何读取整数002?输入002时,num的值仅为2而不是002。在这种情况下,您while loop将仅运行一次,count的值将为1。因此,在这种情况下,if条件为false

尝试此解决方案。

 #include<stdio.h>
 #include<string.h>
 void main(){
    char bill[4];
    int i, flag=0;
    int digit, len;

    scanf("%s",bill);

    len = strlen(bill);
    if(len<3){
            printf("no\n");
            return;
    }

    for(i=0;i<len;i++){

            digit = bill[i] - '0';

            if(digit%2 == 0) flag = 1;
            else{
                    flag = 0;
                    break;
            }
    }

    if(i==3 && flag == 1) printf("Yes\n");
    else printf("No\n");

    return;
}

答案 2 :(得分:0)

检查是否有效

 #include <stdio.h>
    #include <string.h>
    char * checknum(char a)
    {
        switch (a){
            case '0':
            case '2':
            case '4':
            case '8':
            return "YES";
            default: return "NO";
        }
    }

    int main()
    {
        char input [3];int i;
        char * output;
        printf("Enter the number");
        scanf("%s",&input);
        if(strlen(input)==3)
        {
            for(i=0;i<strlen(input);i++)
            {
                output=checknum(input[i]);
                if(output=="NO")
                {
                    printf("NO\n");
                    break;
                }
            }
            if(output=="YES")
                {
                    printf("YES\n");
                }
        }
        return 0;
    }