瑞星卡卡安全论坛技术交流区系统软件 有一道难题,高手请进!!!!!

12   1  /  2  页   跳转

有一道难题,高手请进!!!!!

有一道难题,高手请进!!!!!

给一个不多于 5 位的正整数:
1.求出它是几位数;
2.分贝输出每一位数字;
3.按逆序输出各位数字。
最后编辑2007-08-05 05:46:33
分享到:
gototop
 

不成熟的一个家伙发的不知所谓的家伙:



main()
{
int a[5],i,j;
printf("输入一个不大于5位数的整数");

scanf("%d",i);

if(i<10)
printf("这是一个1位数");
if(i>9&&i<100)
printf("这是一个2位数");
if(i>99&&i<1000)
printf("这是一个3位数")'
if(i>999&&i<10000);
printf("这是一个4位数");
if(i>999&&i<100000);
printf("这是一个5位数");/*只会这么多了*/


}


我有另一个想法:

使用数组,把这个不大于5位数的整数按字符来处理,使用字符串函数来获得位数,再使用数组的比较功能比较大小。

然后交换一下数组下标。

一个for循环输出数组。

PS:越说,偶的头脑越清醒了,先温习一下字符串处理函数,试试!!

呵呵
gototop
 

反过来呢?
gototop
 

N个错误的程序:

#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>st[j])

{

tmp=st;

st=st[j];

st[j]=tmp;}
}


}
puts(st);

}

里面的好几个错误,我也不知道错在哪里,理论上是能通过的。

PS:对于输入整数的限制我还不会。所以只能寄希望于输入那些数字的朋友们别输入特殊字符及0~9以外的字符才好啊。
gototop
 

强制转换类型也忘了怎么用了。
gototop
 

哦,知道了,谢谢!!!
gototop
 

引用:
【0o孤狼o0的贴子】哦,知道了,谢谢!!!
………………




帮人帮己,楼主能帮我找出错误点么?

修改成功后,偶还想收藏这个成功范例呢.
gototop
 

#include <iostream>
using namespace std;
int main()
{
int num, result;
int g, s, b, q, w;

cout << "请输入一个数(小于10000)" <<  endl;
cin >> num;

if(num>=0 && num <10)
cout << "是一位数。" << endl;
if(num>=10 && num <100)
cout << "是两位数。" << endl;
if(num>=100 && num <1000)
cout << "是三位数。" << endl;
if(num>=1000 && num<10000)
cout << "是四位数。" << endl;
if(num>=10000 && num<100000)
cout << "是五位数。" << endl;

g = num%10;
s = num/10%10;
b = num/100%10;
q = num/1000%10;
w = num/10000;
result = g*10000 + s*1000 + b*100 + q*10 + w;

cout << "各位:" <<  g << endl;
cout << "十位:" <<  s << endl;
cout << "百位:" <<  b << endl;
cout << "千位:" <<  q << endl;
cout << "万位:" <<  w << endl;
cout << "逆序数为:  " << result << endl;

return 0;
}

没编译过,不知道有没有错误
gototop
 

C#:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i; string str, temp = "";
            do
            {
                Console.Write("请输入一个小于100000的非负数: ");
                str = Console.ReadLine();

                try { i = Convert.ToInt32(str); }
                catch { Console.WriteLine("你输入的不是数字!"); continue; }
                if (i > 99999 || i < 0) { Console.WriteLine("输入的数值超出范围!"); continue; }

                Console.WriteLine("是"+str.Length+"位数。");

                Console.WriteLine("个位: " + i % 10);
                Console.WriteLine("十位: " + (i / 10) % 10);
                Console.WriteLine("百位: " + (i / 100) % 10);
                Console.WriteLine("千位: " + (i / 1000) % 10);
                Console.WriteLine("万位: " + i / 10000);

                for (i = 0; i < str.Length; i++) { temp += str.Substring(str.Length - 1 - i, 1); }
                Console.WriteLine("逆序数字: " + temp);

                break;
            } while (true);
            Console.WriteLine("按任意键退出。");
            Console.ReadKey();
        }
    }
}

运行效果如图

不过大家不要学我,我的程序有很多地方不妥

附件附件:

下载次数:185
文件类型:application/octet-stream
文件大小:
上传时间:2007-7-25 12:50:22
描述:



gototop
 

C#还真不错哈
1楼的朋友格式都是错的
3楼(int) st[5];没有考虑输入数据含符号强制转换会发生错误等情况

7楼用C++写的我敢肯定没有编译过........
有时间学学C#
gototop
 
12   1  /  2  页   跳转
页面顶部
Powered by Discuz!NT