正在学 QB
只学到FOR-NEXT语句
题目要求:
键盘接收一个数字
求该数字各个位上的数字之和
因为数字的位数不知道 所以我不知道怎样提取各位数字。
请写出提取各位数字的语句,谢谢。
我用C#写过个类似的程序不完全一样是算男女融合度的,只是个雏形
[CODE]using System;
namespace BC_CN_TEST1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
int [] aeiou=new int [5];
int result;
int num;
System.Console .Write ("Please Input Number:");
num=Convert.ToInt32 (System.Console .ReadLine ());
for(int i=0;i<num;i++)
{
System.Console .Write("No.{0}: ",i+1);
aeiou[i]=Convert.ToInt32 (System.Console .ReadLine ());
}
Console.Write ("-------------------------\nResult is ");
result=Compute(aeiou);
Console.WriteLine (result);
}
//该函数输入一个字符数组 比如111返回运算结果4
每次转换完都要对结果进行检查是否超标
static int Compute(int[] s)
{
int [] temp=new int [s.Length ];
temp=s;
int tempi=0;
for(int j=0;j<s.Length ;j++)
{
for(int i=0;i<s.Length -1;i++)
{
temp[i]=temp[i]+temp[i+1];
if(i==0)//判断递归层次
j++;
tempi=i;
}
Check(temp,s.Length -tempi);//判断是否超标 如果不超标直接返回 继续执行循环
}
temp[0]=temp[0]+temp[1];//最后一层运算
Console.WriteLine (temp[0]);
return temp[0];
}
//该函数对执行加法一次运算后的数字进行检查
如果此行中有超标者 则转换比如 17换为1 7
然后再次调用计算
static int Check(int[] s,int lth)
{
if(lth==1)//是否执行到最后一层
return 0;
int max=0;
for(int i=0;i<lth ;i++)//检查送进来的数字是否超标 max为计数器
{
if(s[i]>9)
max++;
}
if(max==0)//没有超标的数
return 0 ;
int[] maxDeal=new int [lth +max];//超标的话则对数进行转换 比如以前是[1,15] 现在生成一个新的[1,1,5]
int num=0;
for(int i=0;i<lth ;i++)//转换程序
{
if(s[i]>9)//超标的数分裂
{
maxDeal[num]=1;
num++;
maxDeal[num]=s[i]-10;
num++;
}
else//不超标的数直接存储到新数组中去
{
maxDeal[num]=s[i];
num++;
}
}
return Compute(maxDeal);//转换完毕后 继续计算新生成的数组
}
}
}[/CODE]