鱼C论坛

 找回密码
 立即注册
查看: 2878|回复: 5

函数编程练习

[复制链接]
发表于 2011-4-8 20:46:36 | 显示全部楼层 |阅读模式

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

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

x
#include  <stdio.h>

int Add(int a,int b)
{
   int answer;
   printf("%d+%d=",a,b);
   scanf("%d",&answer);
   if(a+b == answer)
         return 1;
   else
         return 0;
}
void printf(int flag)
{
     if(flag)
            printf('Right!\n");
     else
            printf("Not correct!\n");
}
main()
{
     int a,b,answer;
     printf("Input a,b:");
     scanf("%d,%d",&a,&b);
     answer = Add(a,b);
     print(answer);
}




这个,额,FLAG,是怎么回事,和answer的1、0没关系啊,但是书上还拿这个做例题,有哪位高人指点下奥~~~~~~拜托啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-12 22:23:03 | 显示全部楼层
我是这样理解的看对不对:这个程序就是输入两个int型数据后在输入一个int型数据,判断最后一个数是否是前面两数这和,如果是就打印正确,反之就打印错误。
其中add()方法就是判断最后一个数是否是前面两数这和,如果是就返回1,否则返回0;print()方法中的参数flag就是add()方法的返回值,如果add()方法返回值是1,就说明flag为真,就打印正确;如果add()方法返回值为0,就说明flag为假,就打印错误。
main()方法中的answer与add()方法中的answer是不一样的。其中main()方法中的answer为add()方法的返回值(0或1),而add()方法中的answer是手动输入的一个数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-13 15:35:48 | 显示全部楼层
#include "stdafx.h"//这个你先不用管它
#include  <stdio.h>
#define FALSE 0
#define TRUE  1

int Add(int a, int b);//函数声明
void MyPrintf(int flag);//函数声明

int Add(int a, int b)//函数定义
{
   int answer;
   int ok = FALSE;//默认返回回答错误,用1或者0这样的数字很难分清其代表的具体含义

   printf("%d+%d=",a, b);
   scanf("%d", &answer);
   if(a + b == answer)
   {
           ok = TRUE;
   }     
   
   return ok;//根据返回ok的值判断是否回答正确
}

void MyPrintf(int flag)
{
     if(flag)
         {
                 printf("Right!\n"); //flag等于ok时候输出
         }
     else
         {  
                 printf("Not correct!\n");
         }
}
int main(int argc, char* argv[])
{
         int a;
         int b;
         int flag;//作为标志

     printf("Input a, b:");
     scanf("%d,%d",&a, &b);
     flag = Add(a, b);
     MyPrintf(flag);//根据flag的值来输出不同的结果,此处的FLAG并非上边MyPrintf中的那个flag

        return 0;
}
我是这么给你改的程序看看你能不能看懂吧,这个flag只是作为标志来用的,正常应该是布尔类型,但是这里用int也是一样的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-13 23:14:11 | 显示全部楼层
回复 1# 科比

#include  <stdio.h>

int Add(int a,int b)
{
   int answer;
   printf("%d+%d=",a,b);                 //这里可以改为输入ANSWER的值,这样很容易误导初学者  
   scanf("%d",&answer);
   if(a+b == answer)
         return 1;
   else
         return 0;
}
void printf(int flag)            //这里多了一个F,应该改为print;
{
     if(flag)
            printf('Right!\n");                    //打印函数中,Right的左边是个单引号,错误;应该改为 printf("Right!\n");   
     else
            printf("Not correct!\n");
}
main()
{
     int a,b,answer;
     printf("Input a,b:");
     scanf("%d,%d",&a,&b);
     answer = Add(a,b);
     print(answer);             //这个函数名与声明的函数不相同,这里少了一个F,
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-14 09:24:40 | 显示全部楼层
很好理解,flag是形式参数,不起仍和作用,你在add函数中会返回一个整数 1  或者 0  然后 调用的 PRINT函数 会把 1 或者 0  作为 参数 传递进去 也就是 FLAG=1  或者 FLAG=0

明白了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2014-7-17 13:47:54 | 显示全部楼层
因为打印函数写错了!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 00:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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