| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2005 人关注过本帖
标题:输入一个5位整数,再逆序输入的问题
只看楼主 加入收藏
_2007
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-7-13
收藏
 问题点数:0 回复次数:9 
输入一个5位整数,再逆序输入的问题

输入一个不大于5位数的整数.
输出这个整数
输入这个数的位数
按大小输出这个整数的各个位数的数字



#include "stdio.h"
main()
{
char st[5];
int k=0;
printf("输入一个不多于5位的正整数:\n");
gets(st);
puts(st);
k=strlen(st);
printf("这是一个%d位数",k);
(int) st[5];
int tmp=0,i=0,j=0;

for(i=0;i<5;i++)
{

j=i+1;

if(st[i]>st[j])

{

tmp=st[i];

st[i]=st[j];

st[j]=tmp;}
}/*交换下标*/

}

puts(st);
}

搜索更多相关主题的帖子: 逆序 整数 STRONG 位数 输入 
2007-07-21 21:00
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 
看来你是不知道C语言中有一个规定,定义变量只能在执行语句的开头定义.

清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-07-27 23:14
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 
所以你这句int tmp=0,i=0,j=0; 写在中间是不合法的

清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-07-27 23:15
岳C
Rank: 1
等 级:禁止发言
帖 子:354
专家分:0
注 册:2007-7-16
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2007-07-28 00:02
wengjinxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-7-17
收藏
得分:0 

#include <stdio.h>
#include <string.h> // strlen()函数要用到这个头文件
main()
{
char st[6]; //字符串后面固定有个'\0',所以数组大小要定义为6,而不是5,不然会溢出
char tmp;
int i,j,k;


printf("输入一个不多于5位的正整数:"); //输入还需做必要的控制,不然还是会有溢出问题
gets(st);
puts(st);
k=strlen(st);
printf("这是一个%d位数",k);

// 用冒泡法对数组st进行排序
for(i=0;i<k;i++)
for(j=0;j<k-i-1;j++)
if(st[j]>st[j+1])
{
tmp=st[j];
st[j]=st[j+1];
st[j+1]=tmp;
}
puts("\n按大小输出这个整数的各个位数的数字为:");
puts(st);
}

2007-07-28 02:01
水漪儿
Rank: 2
来 自:shangshida
等 级:论坛游民
帖 子:147
专家分:10
注 册:2007-7-19
收藏
得分:0 
char st[6]; //字符串后面固定有个'\0',所以数组大小要定义为6,而不是5,不然会溢出
5楼的printf是不是可以printf("这是一个%ld位数",k);这样就不会溢出了
2007-07-28 08:38
anelwl
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-26
收藏
得分:0 
回复:(_2007)输入一个5位整数,再逆序输入的问题
我的程序,请高手指正啊:
#include "Stdio.h"
#include "Conio.h"
main()
{
char a[5],*p,*q,b[5]="";
int i=0,t;
printf("请输入一个整数:(必须为数字)\n");
scanf("%s",a);
p=a;
while(*p!='\0')
{
printf("第 %d 个数是%c.\n",i+1,*p);
i++;
p++;
}
printf("这个整数的位数为: %d\n",i);
q=a;
for(t=i;t>0;)
{
b[t-1]=*q;
q++;
t--;
}
printf("逆序输出的整数为:%s\n",b);
getch();
}

[此贴子已经被作者于2007-7-28 10:35:39编辑过]


2007-07-28 10:33
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 

就象6楼说的一样,你的字符串的长度应该声明比实际的长度大一,因为还有'\0',
所以你的程序只能准确处理<=4个字符,>=5就会有乱码.


清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-07-28 13:14
wengjinxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-7-17
收藏
得分:0 
以下是引用水漪儿在2007-7-28 8:38:58的发言:
char st[6]; //字符串后面固定有个'\0',所以数组大小要定义为6,而不是5,不然会溢出
5楼的printf是不是可以printf("这是一个%ld位数",k);这样就不会溢出了


如果不定义成 6 的话,这将处理不了五位数的整数,因为他下面用的是gets(st)这样我语句


当然我上面那个程序还没有做到最完善,我在那行注视已经说了


总之,你不定义成 6 ,输入一个五位数的整数将会出现
2007-07-28 13:24
wengjinxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-7-17
收藏
得分:0 
回复:(vbc)就象6楼说的一样,你的字符串的长度应该声...
你说的好像是5楼吧,
2007-07-28 13:26
快速回复:输入一个5位整数,再逆序输入的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020401 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved