erool950 发表于 2014-3-12 14:02:09

C的一个问题

本帖最后由 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;
      
}
这个有点问题

超级忍者龟 发表于 2014-3-12 14:02:10

改几个地方:
1:t = 0;
2:print打印a干嘛?你不是要乘积吗?应该打印sum吧?
3:程序有点画蛇添足,其实t这个变量多余的,直接printf(sum)不就好了吗?

zhangyu 发表于 2014-3-12 15:14:12

1,t没有赋值,后面出现t++好像是不对的。
2, printf("0")是干嘛的?

智波景严 发表于 2014-3-12 15:18:25

表示赞同二楼

swsm 发表于 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;
      
}
//程序能完成了,我也多添了一些语句,好读一点!有问题,再交流啊!!!

蒲公英花开 发表于 2014-3-13 09:05:49

t++是什么意思啊

蒲公英花开 发表于 2014-3-13 09:11:10

swsm 发表于 2014-3-12 15:20 static/image/common/back.gif
//程序能完成了,我也多添了一些语句,好读一点!有问题,再交流啊!!!

t++是什么意思啊看不懂了呢 初学者求解

蒲公英花开 发表于 2014-3-13 09:13:44

swsm 发表于 2014-3-12 15:20 static/image/common/back.gif
//程序能完成了,我也多添了一些语句,好读一点!有问题,再交流啊!!!

t++是什么意思啊看不懂了呢 初学者求解

蒲公英花开 发表于 2014-3-13 09:17:37

超级忍者龟 发表于 2014-3-12 15:56 static/image/common/back.gif
改几个地方:
1:t = 0;
2:print打印a干嘛?你不是要乘积吗?应该打印sum吧?


t++是不是计数器啊

超级忍者龟 发表于 2014-3-13 10:08:45

蒲公英花开 发表于 2014-3-13 09:17 static/image/common/back.gif
t++是不是计数器啊

他代码的目的却是t当计数的,当时t没有初始化,是个随机值,可能是个很大的数据。

蒲公英花开 发表于 2014-3-13 12:14:52

超级忍者龟 发表于 2014-3-13 10:08 static/image/common/back.gif
他代码的目的却是t当计数的,当时t没有初始化,是个随机值,可能是个很大的数据。

哦哦   懂了
谢了哈

杨学子 发表于 2014-3-13 12:18:07

printf("%d", a); 改为printf(“%d“, sum);就好了!

我在努力 发表于 2014-3-13 23:04:17

看下怎么解决滴

未闻丶花名 发表于 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;      
}

erool950 发表于 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;
      
}

||solo 发表于 2014-3-24 01:01:12

你要打印的是sum,你打印a干嘛?打印a就显示你最后输入的那个数了。
页: [1]
查看完整版本: C的一个问题