重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1.首先你的返回值没有确定,只是一个 return
创新互联服务项目包括阳城网站建设、阳城网站制作、阳城网页制作以及阳城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,阳城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到阳城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
2.在下面代码中
for(i=100;i1000;i++)
{
cmcc(i); //无论这句返回的是什么都会执行下一句。
printf("%d ",i);
}
试试下面这段修改后的看看
#includestdio.h
int cmcc(int x)
{
int a,b,c;
a=x/100;
b=x/10%10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
return 1;
return 0;
}
main()
{
int i;
for(i=100;i1000;i++)
{
if(cmcc(i))
printf("%d ",i);
}
}
因为前面输入数字时,最后总要按下回车键,这就输入了一个回车符,而后面的getchar()会读取这个字符,而不等待从键盘输入(因为缓冲区不为空),修改如下:
#include stdio.h
#include stdlib.h
int main()
{
int data[7000]={1,1,0},num,digit=1,i,j,k;
FILE *fp;
char fname[50];
printf("\t阶乘计算器\n\t请输入:");
scanf("%d",num);
for(i=1;i=num;i++)
{
if(i%20==0)
{
printf("\n\t当前计算到%10d 的阶乘!!!........\n",i);
}
for(j=1;j=digit;j++)
{
data[j]*=i;
}
for(j=1;j=digit;j++)
{
if(data[j]9)
{
for(k=1;k=digit;k++)
{
if(data[digit]9)
{
digit++;
}
data[k+1]+=data[k]/10;
data[k]%=10;
}
}
}
}
printf("\n\n\n\t%d!=\n",num);
for(j=digit;j0;j--)
{
printf("%d",data[j]);
}
printf("\n\n\t%d!共有%d位......\n\n\n",num,digit);
printf("是否保存文件?(y\\n)");
fflush(stdin);/************注意这里,刷新缓冲区,避免前面输入数字时遗留的回车符影响这里的读取******/
if(tolower(getchar())=='y')
{
printf("请输入文件名:");
gets(fname);
if((fp=fopen(fname,"w"))==NULL)
{
printf("打开文件%s失败",fname);
exit(0);
}
fprintf(fp,"\t%d!=\n",num);
for(j=digit;j0;j--)
{
fprintf(fp,"%d",data[j]);
}
fprintf(fp,"\n%d!有%d位......\n\n\n",num,digit);
fclose(fp);
}
return 0;
}
这是因为getchar前面有一个scanf("%lf",a);
你输入完a的值后,是否会
输入回车
这个回车就是一个字符啊,这个字符就被getchar当做你输入的字符了,所以看起来像没有执行,其实是执行了。
可以在getchar()前使用
fflush(stdin);
刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
这样就可以输入字符了。
如果用返回的温度值作为实参,这个函数就不执行了,如果我随便输入个整数就可以执行,怎么回事??
说明还是参数的问题。再仔细看看参数的传递是否正确。包括类型。
还有传递的时候是否是真实数据,还是数据已经被释放。
自己调试着看看吧。