题目:
程序功能:输入一个长整数n,从高位开始逐位分离并输出。例如输入123456,程序运行结果如下图。要求使用while或do-while语句实现循环结构。
考察知识:
1、关系表达式、逻辑表达式及运算符的使用。
2、while或do…while实现循环结构程序设计。
3、数组。
解题思路:
1、定义长整型避免输入数据过大而溢出,若希望输入更大的数,可定义unsigned long long,即无符号的长整型。
2、定义数组并将其中元素全部初始化为0,用于后续存放分离后的数。
3、输入一个正整数,例如:输入了12345。
4、定义循环变量i。
5、利用循环实现逐位分离长整数。a、b、c……为分离长整数具体步骤。
a、a[i] = n % 10;取个位数字,并将所得数存放到数组中。如第一次循环:a[0]=12345%10=5 第二次循环:a[1]=1234%10=4……
b、n /= 10;相当于n=n/10;每次循环,都将丢弃个位数字,成为一个新数字。如第一次循环:12345/10=1234 第二次循环:1234/10=123……
6、计数器更新次数比分离后所得数的数量多1,即多执行了一次i++,故需要i–。
7、再次利用循环输出分离后的数。
代码:
#include<stdio.h>
int main()
{
int long long n;//定义长整型避免输入数据过大而溢出,若希望输入更大的数,可定义unsigned long long,即无符号的长整型
int a[20] = { };//定义数组并将其中元素全部初始化为0,用于后续存放分离后的数
printf("输入一个正整数:");//例如:输入了12345
scanf("%lld", &n);
int i=0;//定义循环变量
while( n > 0 )//利用循环实现逐位分离长整数
{
a[i] = n % 10;//取个位数字,并将所得数存放到数组中。如第一次循环:a[0]=12345%10=5 第二次循环:a[1]=1234%10=4……
n /= 10;//相当于n=n/10;每次循环,都将丢弃个位数字,成为一个新数字。如第一次循环:12345/10=1234 第二次循环:1234/10=123……
i++;
}
i--;//计数器更新次数比分离后所得数的数量多1,即多执行了一次i++,故需要i--
while (i >= 0)//利用循环输出分离后的数
{
printf("%d,", a[i]);
i--;
}
return 0;
}
运行结果:
版权声明:本文为lbcbjtlhmjq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。