C在新行中逐个写入扩展名中的数字
我是C语言的新手,我不能在学校做简单的练习 我想这样做:C在新行中逐个写入扩展名中的数字,c,C,我是C语言的新手,我不能在学校做简单的练习 我想这样做: Please insert a number: 12345 five four three two one 基本上,用户输入一个数字,然后程序在新行中写入从最后一个有效数字到最高有效数字的数字 这与开关功能有关,仅与基本编程技能有关 我有这个: #include <stdio.h> #include <stdlib.h> int main() { int num; printf("Pleas
Please insert a number: 12345
five
four
three
two
one
基本上,用户输入一个数字,然后程序在新行中写入从最后一个有效数字到最高有效数字的数字
这与开关功能有关,仅与基本编程技能有关
我有这个:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num; printf("Please insert a number: "); scanf("%d", &num);
switch(num){
case 1:printf("One\n");break;
case 2:printf("Two\n");break;
case 3:printf("Three\n");break;
case 4:printf("Four\n");break;
case 5:printf("Five\n");break;
case 6:printf("Six\n");break;
case 7:printf("Seven\n");break;
case 8:printf("Eight\n");break;
case 9:printf("Nine\n");break;
case 0:printf("Zero\n");break;
}
}
#包括
#包括
int main()
{
int num;printf(“请插入一个数字:”;scanf(“%d”,&num);
开关(num){
案例1:printf(“一次”)中断;
案例2:printf(“两个”)中断;
案例3:printf(“三个”);中断;
案例4:printf(“四”)中断;
案例5:printf(“五个”);中断;
案例6:printf(“六个”);中断;
案例7:printf(“Seven\n”);break;
案例8:printf(“八”);中断;
案例9:printf(“Nine\n”);break;
案例0:printf(“零\n”);中断;
}
}
我使用一个介于0和9之间的数字,它工作正常,但是一个比这个数字大的数字,它什么也不做
我不能解决的第一个问题是,在一个数字中,得到数字的位置。
我相信在我的代码中,中断并不是什么都不做
对不起,如果我不能更好地解释我,但英语不是我的母语
问候,
法沃拉斯
##############################进行中解决方案(如果数字%10给出0,则不起作用)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num; printf("Please insert a number: "); scanf("%d", &num);
int i,digit;
for (i = 0; num%10!=0;i++){
digit = num % 10;
switch(num){
case 1:printf("One\n");break;
case 2:printf("Two\n");break;
case 3:printf("Three\n");break;
case 4:printf("Four\n");break;
case 5:printf("Five\n");break;
case 6:printf("Six\n");break;
case 7:printf("Seven\n");break;
case 8:printf("Eight\n");break;
case 9:printf("Nine\n");break;
case 0:printf("Zero\n");break;
}
num = num / 10;
}
}
#包括
#包括
int main()
{
int num;printf(“请插入一个数字:”;scanf(“%d”,&num);
int i,数字;
对于(i=0;num%10!=0;i++){
数字=num%10;
开关(num){
案例1:printf(“一次”)中断;
案例2:printf(“两个”)中断;
案例3:printf(“三个”);中断;
案例4:printf(“四”)中断;
案例5:printf(“五个”);中断;
案例6:printf(“六个”);中断;
案例7:printf(“Seven\n”);break;
案例8:printf(“八”);中断;
案例9:printf(“Nine\n”);break;
案例0:printf(“零\n”);中断;
}
num=num/10;
}
}
数字123
为100+20+3
或1*10^2+2*10^1+3*10^0
您需要将各个数字与输入隔离开来
提示:使用/
和%
运算符
12345 % 10 ==> 5
12345 / 10 ==> 1234
1234 % 10 ==> 4
1234 / 10 ==> 123
123 ... ... ...
如果输入的数字较大,
num
正好包含该数字,即您的案例(0
到9
)中没有一个与num
的值匹配
因此,您必须逐位“遍历”数字。如果取模10:12345%10==5
,则可以提取最后一个数字。此外,您可以通过除以10来截断最后一个数字:2345/10==234
(由于整数除法)
因此,您必须编写一个循环,从
num
中提取单个数字,然后对每个数字应用大小写区分。在基数10中,数字12345
实际上是1*10000+2*1000+3*100+4*10+5*1
。因此,您可以通过计算数字除法的剩余部分来获得数字的最后一位E数由<代码> 10 > /代码>而红利将是该数的最大值。因此,“12345=1234×10+5 <代码>。< < /代码> %>代码>运算符被用来计算除法的剩余部分,因此< /代码> 12345% 10 >代码>等于< /代码> 5 './p>
然后,你只需在数字不为零时循环,在每一步取余数,显示数字,然后除以数字。+1对于措辞恰当的问题,你所谓的解决方案是错误的解决方案。如果数字为666或1000,会发生什么情况?好的。发现错误。谢谢。当问题被标记为
H时,将尝试解决此问题OMWorks<代码>请考虑不要给代码提供更多的指针来帮助发问者编写代码。顺便问一下,如果用户输入了数字<代码> 0 /代码>,那是什么?- 1:如果你要编写家庭作业问题的代码,至少写出好的代码,这样学生就可以通过复制来学习一些东西:<代码>主< /代码>应该是R。eturnint
;默认情况下输出是行缓冲的,因此您应该使用换行符或fflush(stdout)终止字符串;
打印后;scanf
返回值应该被检查;您错过了num的验证
void main (void){
int num;
int factor=10;
printf("Please insert a number: "); scanf("%d", &num);
while(num>0){
switch(num%factor){
case 1:printf("One\n");break;
case 2:printf("Two\n");break;
case 3:printf("Three\n");break;
case 4:printf("Four\n");break;
case 5:printf("Five\n");break;
case 6:printf("Six\n");break;
case 7:printf("Seven\n");break;
case 8:printf("Eight\n");break;
case 9:printf("Nine\n");break;
case 0:printf("Zero\n");break;
}
num=num/factor;
}
}