鱼C论坛

 找回密码
 立即注册
查看: 2416|回复: 15

C的一个问题

[复制链接]
发表于 2014-3-12 14:02:09 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 erool950 于 2014-3-12 14:38 编辑

给你5个整数,求他们中所有奇数的乘积。


#include<stdio.h>
#define n 5
int main(void)
{
        int sum=1,i,a,t;
        for(i=0;i < n;i++)
        {
                scanf("%d",&a);
                if(a%2 == 1)
                {
                sum *=a;
                t++;
                }
        }
        if(t)
        printf("%d",a);
        else
        printf("0");
        return 0;
        
}
这个有点问题

最佳答案

查看完整内容

改几个地方: 1:t = 0; 2:print打印a干嘛?你不是要乘积吗?应该打印sum吧? 3:程序有点画蛇添足,其实t这个变量多余的,直接printf(sum)不就好了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-12 14:02:10 | 显示全部楼层
改几个地方:
1:t = 0;
2:print打印a干嘛?你不是要乘积吗?应该打印sum吧?
3:程序有点画蛇添足,其实t这个变量多余的,直接printf(sum)不就好了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-12 15:14:12 | 显示全部楼层
1,t没有赋值,后面出现t++好像是不对的。
2, printf("0")是干嘛的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-12 15:18:25 | 显示全部楼层
表示赞同二楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-12 15:20:56 | 显示全部楼层
本帖最后由 swsm 于 2014-3-12 22:32 编辑
#include<stdio.h>
#define n 5
int main(void)
{
    //此程序完成的是输入5个数然后将其中的奇数相乘后输出
    printf("用户输入5个数,计算其中所有奇数相乘的积!\n");
    int sum=1,i,a,t=0; //这里t要付出值,我也是看到别人讲了,才注意到的,所以又回来修改了!
    for(i=0;i < n;i++)
    {
        printf("请用户输入第%d个数:",i+1);
        scanf("%d",&a);
        if(a%2 == 1)
        {
        sum *=a;
        t++;
        }
    }
    if(t)
        {
                printf("结果计算为:");
                printf("%d\n",sum);
        }
    else
        {
                printf("结果计算为:");
                printf("0\n");
        }
                
    return 0;
        
}
//程序能完成了,我也多添了一些语句,好读一点!有问题,再交流啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-13 09:05:49 | 显示全部楼层
t++是什么意思啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-13 09:11:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-13 09:13:44 | 显示全部楼层
swsm 发表于 2014-3-12 15:20
//程序能完成了,我也多添了一些语句,好读一点!有问题,再交流啊!!!

t++是什么意思啊  看不懂了呢 初学者  求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-13 09:17:37 | 显示全部楼层
超级忍者龟 发表于 2014-3-12 15:56
改几个地方:
1:t = 0;
2:print打印a干嘛?你不是要乘积吗?应该打印sum吧?

t++是不是计数器啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-13 10:08:45 | 显示全部楼层
蒲公英花开 发表于 2014-3-13 09:17
t++是不是计数器啊

他代码的目的却是t当计数的,当时t没有初始化,是个随机值,可能是个很大的数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-13 12:14:52 | 显示全部楼层
超级忍者龟 发表于 2014-3-13 10:08
他代码的目的却是t当计数的,当时t没有初始化,是个随机值,可能是个很大的数据。

哦哦   懂了
  谢了哈  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-13 12:18:07 | 显示全部楼层
printf("%d", a); 改为printf(“%d“, sum);  就好了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-13 23:04:17 | 显示全部楼层
看下怎么解决滴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-14 09:56:44 | 显示全部楼层
#include <iostream>

#include <fstream>

#include <windows.h>

#include <string>


using namespace std;


struct FishOi1

{

        string name;

        string uid;

        char sex;

};


// bool InitFishC();

bool ReadFishC();

void RecordFishC();

int WriteFishC(FishOi1 * p);


int main()

{

        int i;

//         InitFishC();

        while(1)

        {

                cout<<"请选择需要进行的操作:\n";

                cout<<"1.打印数据\n";

                cout<<"2.录入数据\n";

                cout<<"3.退出程序\n";

                cin>>i;


                switch(i)

                {

                case 1:

                        if(ReadFishC())

                                cout<<"成功读取文件\n\n";

                        else

                                cout<<"读出文件失败\n\n";

                        break;

                case 2:

                        RecordFishC();

                        break;

                case 3:

                        return 0;

                }

        }

        cout<<"初始化失败\n\n";

        return 0;

}


// bool InitFishC()

// {

// }


bool ReadFishC()

{

        ifstream ifile;

        ifile.open("d:\\fishc.txt");

        if(!ifile)

                return false;

        else{

                cout<<"name"<<"\t"<<"uid"<<"\t"<<"sex"<<endl;

                FishOi1 pIO;

                while(ifile>>pIO.name){

                        ifile>>pIO.uid>>pIO.sex;

                        cout<<pIO.name<<"\t"<<pIO.uid<<"\t"<<pIO.sex<<endl;

                }               
                ifile.close();

                return true;

        }


}


void RecordFishC()

{

        ofstream ofile;

        ofile.open("d:\\fishc.txt",ios::app);

        if(!ofile){

                cout<<"录入失败\n";

        }

        else{

                int flag=1;

                FishOi1 pIO;

                while(flag){

                flag=WriteFishC(&pIO);

                ofile<<pIO.name<<' '<<pIO.uid<<' '<<pIO.sex<<'\n';

                }

                cout<<"录入完成\n";

                ofile.close();

        }

        
}

int WriteFishC(FishOi1 * p)

{

        int b;

        cout<<"name: ";

        cin>>p->name;

        cout<<"uid: ";

        cin>>p->uid;

        cout<<"sex: ";

        cin>>p->sex;

        cout<<"是否录入?1(yes) or 0(no):";

        cin>>b;

        return b;        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-14 15:15:46 | 显示全部楼层
谢谢各位大大的指导。。我重新改了下代码,首先那个printf处的a改成sum了,然后t是作为计数器的,有人说直接printf("%d",sum)就可以了,不用printf("0"),但是题目要我求的是奇数的乘积,如果没有奇数那么乘积不就为0了吗,我是这么认为的。。如果有错误希望有大大能指出。。。
下面是我改的代码.

#include<stdio.h>
#define n 5
int main(void)
{
        int sum=1,i,a,t;
        for(i=0;i < n;i++)
        {
                scanf("%d",&a);
                if(a%2 == 1)
                {
                sum *=a;
                t++;
                }
        }
        if(t)
        printf("%d",sum);
        else
        printf("0");
        return 0;
        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-24 01:01:12 | 显示全部楼层
你要打印的是sum,你打印a干嘛?打印a就显示你最后输入的那个数了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 14:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表