C语言中出现“undeclared identifier”错误。望高手解答

#include<stdio.h>intmain(void){inta[5];intk;inti=1;printf("请输入一个由0到32767之间的一个数");scan... #include<stdio.h>
int main (void)
{int a[5];
int k;
int i=1;
printf("请输入一个由0到32767之间的一个数");
scanf("%c",&a);
while (k<6)
{
for(i=k;i<6;i++)
printf("%d",a[b]);

k++;
}}
原题是要求输入一个0~32767之间的一个整数,然后将该整数的各位数字在一行中打印出来,数字之间间隔三个空格。第一行从最左边的数字开始,输出全部的5个数字位;第二行从第二个数字开始输出四个数字,以此类推。如,用户输入1234,则屏幕上打印出:
01234
1234
234
34
4
我是个初学者,以上是我自己编的。求教各位高手。望详细解说下。若思路不对,还望多多指导。谢谢了
展开
 我来答
fateland
2012-01-16 · TA获得超过1536个赞
知道小有建树答主
回答量:1509
采纳率:0%
帮助的人:1001万
展开全部
首先,k没有初始化,而在下面你又把它赋值给i。
其次,按照你的设想,应该是输入五个数给数组a,然后先输出全部元素,再回车并从第二个元素开始输出数组后面的元素,每次减少一个元素输出直到只输出数组最后一个元素为止。这个应该用双重for循环来实现。
再次,当你只输入1234然后回车,打个比方~即便它会自动填充一个0,数组各个元素也应该是1,2,3,4,0了,你下面要按照你设想的那样先输出01234,这里就在先让他输出数组中最后一个元素,然后循环输出,每次下标后移一位直到输出第四个元素为止。这样虽然说也可以实现,但就显得麻烦些,代码就得写多点。
总之,你输入的数最好还是输完5个再回车!
追问
如果在开始我把两个定义换成:
int k=1;
int i;是不是就不会有第一个错误了?
确实,如果输入的数是23,那么第一个输出的数是23000,这和我的题目要求不符,如果不用循环体,有没有更好的思路?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-01-16
展开全部
#include<stdio.h>
#include "string.h"
void main (void)
{
char a[10];
int k=0;
int i;
printf("请输入一个由0到32767之间的一个数");
scanf("%d",&i);
sprintf(a,"%05d",i);
while (k<5)
{
for(i=k;i<5;i++)
printf("%c",a[i]);
printf("\n");
k++;
}
}
追问
运行了一下,没有问题。有几个问题想求解一下。
1.为什么还要加个#include "string.h"?
2.定义a的时候为什么要用char而不用int?
3.a为什么后面的数字是10?最多五位数的话不是用5就好了嘛?
4.sprintf(a,"%05d",i);的意思是?选定字符串中间开始向后输出?
还有,谢谢
追答
1.#include "string.h"不需要
2.定义a用char比较好操作
3.a可以大于5即可,一般略微大些,避免出现意外。
4.sprintf(a,"%05d",i);的意思是将整数转化为5位字符,不足前面补0,即如果i=123,a[10]="00123"
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庾嘉玉9w
2012-01-15 · TA获得超过3774个赞
知道大有可为答主
回答量:7014
采纳率:7%
帮助的人:2634万
展开全部
确实是str没有声明,如果你的str得到的路径需要在其他的函数中使用,那么你必须把它声明在类中作为一个成员变量,如果你只是在这个函数中使用那么你可以像楼上说的那样把它声明在这个函数里面
追问
str是什么?函数名吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式