函数编程练习
#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没关系啊,但是书上还拿这个做例题,有哪位高人指点下奥~~~~~~拜托啦 我是这样理解的看对不对:这个程序就是输入两个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是手动输入的一个数。 #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也是一样的。 回复 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,
} 很好理解,flag是形式参数,不起仍和作用,你在add函数中会返回一个整数 1或者 0然后 调用的 PRINT函数 会把 1 或者 0作为 参数 传递进去 也就是 FLAG=1或者 FLAG=0
明白了吗? 因为打印函数写错了!!
页:
[1]