C语言一个小程序怎么写

输入若干个十进制数字
判断是否同时满足两个条件(1、每个数字都不一样;2、每个数字都是2^i,i=0,1,2,...31)
满足就显示“最简”;
不满足就显示“还可以化简”。

用链表实现

//main.cpp
//根据你的要求,在有数字相同时输出“相同的数字”,出现不是2的n次方的数字时输出“还可以化简”
//没有使用链表,因为太麻烦,realloc足以满足。
//
#include <stdio.h>
#include <malloc.h>
#include <math.h>
int main()
{
    int number=0;
    size_t array_length = 1;
    int * array =(int*) malloc(sizeof(array_length*sizeof(int)));
    int ret = 0;
    do
    {
        ret = scanf("%d",&number);
        if(ret==0 || ret==EOF)
            return 0;
        size_t idx=0;
        //检查是否有相同的数字
        for(;idx<array_length;idx++)
        {
            //相同的数字
            if(array[idx]==number)
            {
                //printf("相同的数字\n");
                printf("还可以化简");
                free(array);
                return 1;
            }
        }
        if(realloc(array,(array_length+1)*sizeof(int))==NULL)
            return -1;
        array_length++;
        array[array_length-1]=number;
        
        ret = log2(number);
        //printf("number %d : log2 = %d ,%lf \n",number,ret,log2(number));
if(!(log2(number)-ret==0))//不是2的n次方
        {
            printf("还可以化简");
            break;
        }

    }
    while(1);
    free(array);
    return 0;
}

double log2(double x)
{
return log(x)/log(2);
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-26
不编程的日子才是好日子啊
第2个回答  2014-01-26
自己写嘛,这么简单的问题,郁闷追问

不会才问啊,会就自己写了

追答

你如果是打算学计算机,这种小问题就得尝试自己来做,链表,队列,栈,二叉树,hash,set这些是很常用的东西

追问

我不打算学编程,只是现在需要这个程序求助。

追答

好吧

相似回答