科比 发表于 2011-4-8 20:46:36

函数编程练习

#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没关系啊,但是书上还拿这个做例题,有哪位高人指点下奥~~~~~~拜托啦

fishc13708 发表于 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是手动输入的一个数。

jkricky 发表于 2011-4-13 15:35:48

#include "stdafx.h"//这个你先不用管它
#include<stdio.h>
#define FALSE 0
#define TRUE1

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也是一样的。

杨光 发表于 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,
}

LNH_Sniper 发表于 2011-4-14 09:24:40

很好理解,flag是形式参数,不起仍和作用,你在add函数中会返回一个整数 1或者 0然后 调用的 PRINT函数 会把 1 或者 0作为 参数 传递进去 也就是 FLAG=1或者 FLAG=0

明白了吗?

赵得伟 发表于 2014-7-17 13:47:54

因为打印函数写错了!!
页: [1]
查看完整版本: 函数编程练习