C语言高手求教,程序理解
发布网友
发布时间:2024-10-01 00:04
我来回答
共3个回答
热心网友
时间:2024-10-01 01:03
我学的是C++,你的程序我看不懂,不过 fun 函数基本能懂 照着你的程序给你翻译一下
返回值为无符号的 fun函数 形参为 无符号
定义了几个无符号的变量
把m的值赋值给t
while条件为 t>10 满足时 循环
if t可以除以10,即t>10
对t除以10进行取余(即t的个位数),赋值给p
用s加上p乘以s1赋值给s
s1乘以10为新的s1
t赋值为t除以10后的取整(例 123取整后为12)
如果此时的t>10,进入下一次循环
返还s的值
以整数1234为例 从if开始 各参数的变化
if
p=t%10 p=4
s=0+4*1=4
s1=10*1=10
t=t/10=123
进入下一循环
p=3
s=4+3*10=34
s1=10*10=100
t=12
再循环
p=2
s=34+2*100=234
s1=1000
t=1
此时t<10.循环结束 返回s的值 (即234)
后面的程序看不懂
热心网友
时间:2024-10-01 01:03
有那么复杂么?写的太复杂。
热心网友
时间:2024-10-01 01:04
#include <conio.h>
#include <stdio.h>
unsigned fun(unsigned m)
{
unsigned t,s=0,s1=1,p=0;
t=m; /*用t来运算,不改变m*/
while(t>10) /*开始循环的条件*/
{
if(t/10) /*多余,t>10,此表达式不为0*/
p=t%10; /*模10得个位数,即取出最低位*/
s=s+p*s1; /*因为s1=1,将得到的最低位数字放到s的最低位*/
s1=s1*10; /*s1*10,说明接下来循环是将得到的最低位放到s的十位、百位等*/
t=t/10; /*t除10,t的原来十位数字变为个位数字,重复刚才操作*/
}
return s;
}
main()
{
unsigned n;
FILE *out; /*该指针指向系统一个文件*/
printf("Enter a unsigned integer data : ");
scanf ("%u",&n);
printf("The original data is : %u\n",n);
if(n<10)
printf("Data error!");
else
printf("The result : %u\n",fun(n)); /*运算后打印结果*/
out=fopen("outfile.dat","w"); /* out指向文件outfile.dat ,以写的方式打开*/
fprintf(out,"%u",fun(28)); /*这个函数将函数值通过指针out写到outfile.dat */
fclose(out); /*文件使用后要关闭的,这是常识*/
}
关于文件操作语法:fopen("outfile.dat","w"),是先写文件名加双引号,再写打开方式(很多,见教材);fprintf(out,"%u",fun(28)),先写文件指针,再加上与printf函数同样的内容。
/*这里面是解释*/