C语言 scanf语句问题 两文件程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 10:15:28
问题一
#include "stdio.h"
int A;
int power(int n)
{int i,k=1;
for(i=1;i<=n;i++)
k=k*A;
return k;
}
void main()
{int m,b=5;
scanf("%d,%d",&A,&m);
printf("%d*%d=%d\n",A,b,A*b);
printf("%d@%d=%d",A,m,power(m));
printf("\n");
}
A是全局变量
程序功能:定义变量b=5,输入两个数(分别付给A、m),求A的m此方(调用power函数)和A*b的值并输出。
以上程序的结果为
输入6 3 输出6*5=30
6@1245068=0(第二句明显不对)
但把scanf那句改为scanf("%d%d",&A,&m);(两个%d之间的逗号去掉)则输出结果反而正确 第二句为6@3=216 ,为什么?
问题二
把此程序修改为包含两个文件的源文件,实现相同的功能:
#include "stdio.h"
int A;
void main()
{int m,b=5;
scanf("%d%d",&A,&m);
printf("%d*%d=%d\n",A,b,A*b);
printf("%d@%d=%d",A,m,power(m));
printf("\n");
}以文件名file1保存。
#include "stdio.h"
extern A;//*声明A是一个已定义的外部变量*//
int power(int n)

问题一
如果有逗号,输入的时候也用逗号分隔,如果输入没有逗号,m值是随机的,结果自然是错的
如果没有逗号,输入的时候用空格分隔

问题二
你知道外部变量要声明,可是为什么没有声明外部函数呢?
#include "stdio.h"
extern int power(int);/*声明外部函数*/
int A;
void main()
{int m,b=5;
scanf("%d%d",&A,&m);
printf("%d*%d=%d\n",A,b,A*b);
printf("%d@%d=%d",A,m,power(m));
printf("\n");
}
编译的时候直接编译file1,file2会自动编译。
单独编译file2肯定会报错的,因为file2没有main()函数

scanf("%d,%d",&A,&m); -- 输入的两量,要用逗号分隔。
scanf("%d %d",&A,&m);(两个%d之间的逗号去掉,这里有一个空白,所以给入用空白分隔的 6 3 正确 )

编译命令中加 编译选择开关 -c
VC++ 编译器:
CL file1.c -c
得 file1.obj
CL file2.c -c
得 file2.obj
再链接:
CL file1.obj file2.obj
得 file1.exe

file1时提示符号power未定义-- 要加原型声明:
extern int power(int);

scanf("%d%d",&A,&m);//scanf本来这里就不能加逗号的好吧?去翻翻你C的书。

file2的情况吧。。。我觉得应该定义个.h的头文件实现程序连接。。

那样2个程序肯定不知道