鱼C论坛

 找回密码
 立即注册
查看: 1951|回复: 9

[已解决]使用谭浩强书上的原代码为啥老是会出现类型错误,代码如下

[复制链接]
发表于 2019-3-7 21:44:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>
int max(int x,int y)
{
int z;
if(x>y)
  z=x;
else
  z=y;
return (z);
}
int main()
{   
       
        int max(int x,int y);
        int a[10],m,n,i;
        printf("enter 10 integer numbers:");
        for (i=0;i<10;i++)
        {
                scanf("%d",&a[i]);
        }
        printf("\n");
        for(i=0,m=a[0],n=0;i<10;i++)
        {
                if (max(m,a[i])>m)
                {
                        m=max(m,a[i]);
                        n=i;
                }
               
        }
        printf("The largest number is %d\n it is the %d number.\n",m,n,n+1);
        return 0;;
        system("pause");
}
       
最佳答案
2019-3-8 15:20:02
问题很多
1.前面已经有人提到了printf()参数多了一个n
2.main()函数里申明max的原型
3.system("pause")居然放在return 0;后面

如果你是作为新手的话可以去改改你的代码
1.把你的max函数改的更简练一点
2.不要使用scanf()来得到测试数据, 试着去学会用文件或着命令行管道
3.不要再用system("pause") 换成 getchar()
4.格式问题
5.for()里面可以更省
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-7 21:49:14 | 显示全部楼层
前面那个max函数老是会出现类型错误,求大神指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 22:27:47 | 显示全部楼层
printf("The largest number is %d\n it is the %d number.\n",m,n,n+1);
這裡面只有兩個%d,卻要輸出三個數(m,n,n+1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 08:51:27 | 显示全部楼层
提出原始的错误提示,另外3楼说的问题也存在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-8 12:20:27 | 显示全部楼层
jack772025 发表于 2019-3-7 22:27
printf("The largest number is %d\n it is the %d number.\n",m,n,n+1);
這裡面只有兩個%d,卻要輸出三個 ...

这个问题应该不是主要的问题,我改过了,还是出现类型错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-8 12:21:17 | 显示全部楼层
BngThea 发表于 2019-3-8 08:51
提出原始的错误提示,另外3楼说的问题也存在

具体是什么意思,要如何去修改呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 12:32:08 | 显示全部楼层
拉普拉斯巴鲁 发表于 2019-3-8 12:21
具体是什么意思,要如何去修改呢?

printf("The largest number is %d\n it is the %d number.\n",m,n,n+1);
改成
printf("The largest number is %d\n it is the %d number.\n",m,n+1);
然后程序本身没有什么问题,可能是你编译器的错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 15:02:45 | 显示全部楼层
拉普拉斯巴鲁 发表于 2019-3-8 12:21
具体是什么意思,要如何去修改呢?

贴出编译器给出的错误提示和运行环境, 这样大家才好帮你改

点评

好的,谢谢了!  发表于 2019-3-8 19:41
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 15:20:02 | 显示全部楼层    本楼为最佳答案   
问题很多
1.前面已经有人提到了printf()参数多了一个n
2.main()函数里申明max的原型
3.system("pause")居然放在return 0;后面

如果你是作为新手的话可以去改改你的代码
1.把你的max函数改的更简练一点
2.不要使用scanf()来得到测试数据, 试着去学会用文件或着命令行管道
3.不要再用system("pause") 换成 getchar()
4.格式问题
5.for()里面可以更省
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 10:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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