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;
}
这个有点问题
改几个地方:
1:t = 0;
2:print打印a干嘛?你不是要乘积吗?应该打印sum吧?
3:程序有点画蛇添足,其实t这个变量多余的,直接printf(sum)不就好了吗? 1,t没有赋值,后面出现t++好像是不对的。
2, printf("0")是干嘛的? 表示赞同二楼 本帖最后由 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;
}
//程序能完成了,我也多添了一些语句,好读一点!有问题,再交流啊!!!
t++是什么意思啊 swsm 发表于 2014-3-12 15:20 static/image/common/back.gif
//程序能完成了,我也多添了一些语句,好读一点!有问题,再交流啊!!!
t++是什么意思啊看不懂了呢 初学者求解 swsm 发表于 2014-3-12 15:20 static/image/common/back.gif
//程序能完成了,我也多添了一些语句,好读一点!有问题,再交流啊!!!
t++是什么意思啊看不懂了呢 初学者求解 超级忍者龟 发表于 2014-3-12 15:56 static/image/common/back.gif
改几个地方:
1:t = 0;
2:print打印a干嘛?你不是要乘积吗?应该打印sum吧?
t++是不是计数器啊 蒲公英花开 发表于 2014-3-13 09:17 static/image/common/back.gif
t++是不是计数器啊
他代码的目的却是t当计数的,当时t没有初始化,是个随机值,可能是个很大的数据。 超级忍者龟 发表于 2014-3-13 10:08 static/image/common/back.gif
他代码的目的却是t当计数的,当时t没有初始化,是个随机值,可能是个很大的数据。
哦哦 懂了
谢了哈 printf("%d", a); 改为printf(“%d“, sum);就好了! 看下怎么解决滴 #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;
} 谢谢各位大大的指导。。我重新改了下代码,首先那个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;
} 你要打印的是sum,你打印a干嘛?打印a就显示你最后输入的那个数了。
页:
[1]