请帮忙解说一下一道C语言的解题思路,谢谢!!

#include<stdio.h>voidprintletter(){staticintc=57;if(c>=48){putchar(c);c--;printletter... #include <stdio.h>
void printletter()
{ static int c=57;
if (c>=48)
{ putchar(c);
c--;
printletter();
}
}
main()
{ printletter();
}
展开
 我来答
veket的小号
2012-09-26 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3936万
展开全部
知识点:
static 类型变量的特点
递归函数

main 调
printletter

进入 printletter c是57 >48 输出 c(ascii码为57的字符是9) c--变为 56
再去调
printletter

进入printletter c 是 56>48 输出 c(ascii码为56的字符是8) c--变为 55
再去调
printletter

...............

进入printletter c 是 48==48 输出 c(ascii码为48的字符是0) c--变为 47
再去调
printletter

进入printletter c 是 47<48

返回 printletter (static为 48 的那个)

再返回 .........

一直返回到 (static为 57 的那个)
返回main
邹靖0000
2012-09-26 · TA获得超过231个赞
知道答主
回答量:72
采纳率:0%
帮助的人:75.8万
展开全部
1.进入main函数,调用函数printletter();,c初值是57,满足条件c≥48,输出ASCII码值等于c的字符,c自减;
2.c的值为56,还是满足条件,继续输出,自减;
...
n.一直到c的值为47的时候,退出函数printletter();,同时,程序结束。
其实就是一个循环,用递归的方式实现,估计是LZ对递归和关键字static不太理解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
silvermouse
2012-09-26 · TA获得超过186个赞
知道答主
回答量:117
采纳率:0%
帮助的人:29.6万
展开全部
C 为静态变量,函数结束也不会催毁,初始化为57 ,对应为数字9,
然后自身调用, C-1=56 ,对应为数字8
... 再调用时,C=48了,对应数字0,
... 再调用自身时,条件为假,结速执行.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
曹枫1
2012-09-26
知道答主
回答量:79
采纳率:0%
帮助的人:29万
展开全部
学习c语言就要看懂代码的意思下面我就将我对这个程序的了解一步一步的讲给你听:1< stdio.h>
是一个头文件就是下面的要写的程序要调用这个库文件中的程序执行 例如:printf“、、、、 ”但是这里好像没有。呵呵!
下面的:
void printletter() 是在main()函数中的调用的子函数
static int c=57 是在定义一个变量他的类型是static int
然后调用if函数条件是当c大于或者等于48时执行下面的程序

下面介绍这个 { putchar(c);
c--;
printletter();}

putchar(c)是让你输入一个字符
c--;然后这个字符对应的自减
printletter();然后再调用的这个函数。
估计说到这你可能已经迷糊了。呵呵!给不给分没关系。
给你讲讲这个程序的功能吧:当你输入48以下不含48的数时程序结束执行。输入48以上含48时程序会一只提醒你输入字符。
不过你这个程序号像没有多大的意义没有输出,是你没有写完还是我没看懂。
不过告诉你分析程序的先从main函数开始执行然后遇到调用子函数时执行子函数执行完之后再回到main函数知道程序结束。
累死了!!!!不知道对你有没有帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wo是只小菜鸟
2012-09-26 · TA获得超过212个赞
知道小有建树答主
回答量:308
采纳率:75%
帮助的人:83.9万
展开全部
首先你得明白数字与字符的关系,他们之间是一个“48“的差值。 C定义为int 但是输出的时候是以字符的形式输出。 所以 在这个函数自调用中,整数 57本身代表的字符是57-48=9,所以在自调用10次的过程中,C不断的减小,意味着在9的基础上依次减小。 这里面主要是一个自调用关系和数字与字符之间的关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
secondyet
2012-09-26 · TA获得超过146个赞
知道答主
回答量:31
采纳率:0%
帮助的人:21.8万
展开全部
这是个递归函数,只要c >= 48,就继续递归下去,并把该ASCII码的字符打印出来
void printletter()
{
static int c=57; // 这是个静态变量,只初始化一次
if (c>=48) // 只要c>=48,就打印这个字符
{
putchar(c);
c--; // c减1
printletter(); // 继续递归下去
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式