用控制台应用程序实现下列功能:从键盘接收一个大于100的整数,然后分别输出该整数每一位的值,并且输出这些为相加的结果。要求分别用字符提取法和整数整除法实现。字符提取法是指先将整数转换为字符串,然后依次取字符串中的每个字符,再将每个字符转换为整数求和。整数整除法是指利用取整和求余数的方法求每一位的值,再求这些位的和。 程序運行效果如圖:
代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace lianxi { class Program { static void Main(string[] args) { while (true) { Console.Write("请输入一个大于100的数:"); string str = Console.ReadLine(); int a = int.Parse(str);//將輸入的數字轉化成整型 int length = Math.Abs(a).ToString().Length;//計算輸入的數字的長度 Console.WriteLine("该整数共有" + length + "位"); Console.Write("实现思路1:每一位的值为"); //字符提取法 int sum = 0; int l; for (int i = 0; i < length; i++) { if (i != length - 1)//運用if輸出‘、’和‘,’,如果不需要,也可以不寫if語句 { Console.Write(str[i] + "、"); l = str[i] - '0'; } else { Console.Write(str[i] + ","); l = str[i] - '0';//此處減去‘0’,表示使用字符值,而不是ASCII碼值;如果減去0,則得出的是ASCII碼值 } sum = sum + l; } Console.WriteLine("这些位之和为" + sum); //整數整除法 int x = a; int sum1 = 0; Console.Write("实现思路2:每一位的值为"); for (int i = length - 1; i >= 0; i--) { int j = (int)Math.Pow(10, i);//定義10的i次方等於j int a1 = x / j; if (i != 0) { Console.Write(a1 + "、"); } else { Console.Write(a1 + ","); } x = x % j; sum1 = sum1 + a1; } Console.WriteLine("这些位之和为" + sum1); Console.WriteLine("按回車鍵退出,按任意键继续"); if (Console.ReadKey(true).Key == ConsoleKey.Enter) break;//判斷輸入,如果輸入的是回車鍵,則退出 } } } }ps:小白第一次寫,有很多不妥的地方,希望大家多多包涵。希望與大家一起共同進步。
