如何使用“C”将“1234567890”打印到“123434567890”?
很抱歉,我不想使用如何使用“C”将“1234567890”打印到“123434567890”?,c,C,很抱歉,我不想使用string或char* 许多天前,我创建了一个小型的Ccode。例如,它允许我输入1234567890;并且,它会将0987654321打印到屏幕上: int n; printf("n = "); scanf("%d", &n); printf("\n---\n\n m = "); while (n) { printf("%d ", n % 10); n = n / 10; } printf("\n\n---\n\n"); 现在,我尝试创建另一个
string
或char*
许多天前,我创建了一个小型的
C
code。例如,它允许我输入1234567890
;并且,它会将0987654321
打印到屏幕上:
int n;
printf("n = ");
scanf("%d", &n);
printf("\n---\n\n m = ");
while (n)
{
printf("%d ", n % 10);
n = n / 10;
}
printf("\n\n---\n\n");
现在,我尝试创建另一个脚本,它允许我输入
1234567890
;并且,它会将1234567890
打印到屏幕上
#include <stdio.h>
void main()
{
int n;
printf("n = ");
scanf("%d", &n);
int i1 = 0, n1 = n;
while (n1 != 0)
{
i1 = i1 + 1;
n1 = n1 / 10;
}
printf("\n---\n\nm = ");
int n2 = n;
do
{
int k = 1, i2 = i1 - 1;
while (i2 != 0)
{
k = k * 10;
i2 = i2 - 1;
}
n2 = n2 / k;
i1 = i1 - 1;
printf("%d ", n2);
}
while (i1 != 0);
printf("\n\n---\n\n");
}
#包括
void main()
{
int n;
printf(“n=”);
scanf(“%d”和“&n”);
int i1=0,n1=n;
而(n1!=0)
{
i1=i1+1;
n1=n1/10;
}
printf(“\n--\n\nm=”);
int n2=n;
做
{
int k=1,i2=i1-1;
而(i2!=0)
{
k=k*10;
i2=i2-1;
}
n2=n2/k;
i1=i1-1;
printf(“%d”,n2);
}
而(i1!=0);
printf(“\n\n--\n\n”);
}
我的代码没有打印我想要的内容:1234567890
;它总是打印许多零:100
你能告诉我代码中有哪些错误吗
如何使用
C
将1234567890
打印到123434567890
#include <stdio.h>
int main(void){
int n;
printf("n = ");fflush(stdout);
scanf("%d", &n);
int n1 = n;
int base = 1;
while(n1 >= 10){
n1 /= 10;
base *= 10;
}
printf("\n---\n\nm = ");
while(base){
printf("%d ", n1 = n / base);
n -= n1 * base;
base /= 10;
}
return 0;
}
内部主(空){
int n;
printf(“n=”);fflush(stdout);
scanf(“%d”和“&n”);
int n1=n;
int base=1;
而(n1>=10){
n1/=10;
基数*=10;
}
printf(“\n--\n\nm=”);
while(基本){
printf(“%d”,n1=n/基);
n-=n1*碱基;
基数/=10;
}
返回0;
}
通过修改第一个小c代码,您可以获得预期的显示:
#include <stdio.h>
int main()
{
int n;
char sNumToText[80]; // to store n in ascii characters
printf("n = ");
scanf("%d", &n); // ask for 'n'
sprintf(sNumToText,"%d",n); // convert integer to text
printf("\n---\n\n m = ");
n=0;
while (sNumToText[n]!='\0')
{
printf("%c ", sNumToText[n]); // print one digit and one space
n ++;
}
printf("\n\n---\n\n");
return (0);
}
#包括
int main()
{
int n;
char sNumToText[80];//以ascii字符存储n
printf(“n=”);
scanf(“%d”,&n);//请求“n”
sprintf(sNumToText,“%d”,n);//将整数转换为文本
printf(“\n--\n\n m=”);
n=0;
而(sNumToText[n]!='\0')
{
printf(“%c”,sNumToText[n]);//打印一个数字和一个空格
n++;
}
printf(“\n\n--\n\n”);
返回(0);
}
打印字符之间带有空格的字符串并避免在最后一个字符上留下额外尾随空格的一种方法:
void printWithSpaces( const char *input )
{
// start with zero-length separator
const char *separator = "";
while ( *input )
{
printf( "%s%c", separator, *input );
separator = " ";
input++;
}
}
这将输出字符串
"1234567890"
作为
为赢而递归:
#include <stdio.h>
/* print n (n >= 1) recursively */
void recurse(int n) {
if (!n) return;
recurse(n / 10);
printf("%d ", n % 10);
}
int main(void) {
recurse(1234567890);
return 0;
}
#包括
/*递归打印n(n>=1)*/
无效递归(int n){
如果(!n)返回;
递归(n/10);
printf(“%d”,n%10);
}
内部主(空){
递归(1234567890);
返回0;
}
如果您只输入一位整数,即0到9,则以下代码对我来说很好
#include<stdio.h>
#include<conio.h>
int main(void){
int c,i=0,k;
int a[100]; //you can enter upto 100 digits;you can change the size if you want
while( (c = getche()) != 13){ //until you hit the enter your input will be taken
a[i++] = c;
}
for(k = 0;k<i;k++){
printf("%c ",a[k]);
}
return 0;
}
#包括
#包括
内部主(空){
int c,i=0,k;
int a[100];//最多可以输入100位数字;如果需要,可以更改大小
而((c=getche())!=13){//,直到您点击回车键,您的输入将被接受
a[i++]=c;
}
对于(k=0;k使用数学库的另一种方法:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n = 0, n1 = 0, n2 = 0;
int p = 1;
printf("n = ");
scanf("%d", &n);
n1 = n;
while(n1/10 != 0)
{
p++;
n1/=10;
}
printf("\n---\n\nm = ");
n1 = n;
n2 = n1/pow(10,p);
while(p>=1)
{
n1 = n1 - n2*pow(10,p);
n2 = n1/pow(10,p-1);
printf("%d ", n2);
p--;
}
printf("\n\n---\n\n");
}
#包括
#包括
#包括
int main()
{
int n=0,n1=0,n2=0;
int p=1;
printf(“n=”);
scanf(“%d”和“&n”);
n1=n;
而(n1/10!=0)
{
p++;
n1/=10;
}
printf(“\n--\n\nm=”);
n1=n;
n2=n1/pow(10,p);
而(p>=1)
{
n1=n1-n2*pow(10,p);
n2=n1/pow(10,p-1);
printf(“%d”,n2);
p--;
}
printf(“\n\n--\n\n”);
}
或使用字符串转换:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n = 0,i,n1,p;
char *number;
printf("n = ");
scanf("%d", &n);
n1 = n;
while(n1/10 != 0)
{
p++;
n1/=10;
}
number = malloc(p+1);
if(number != NULL)
{
printf("\n---\n\nm = ");
memset(number,0,p+1);
sprintf(number, "%d", n);
for (i=0;i<p+1;i++)
{
printf("%c ", number[i]);
}
free(number);
}
printf("\n\n---\n\n");
}
#包括
#包括
#包括
int main()
{
int n=0,i,n1,p;
字符*数字;
printf(“n=”);
scanf(“%d”和“&n”);
n1=n;
而(n1/10!=0)
{
p++;
n1/=10;
}
数量=malloc(p+1);
如果(数字!=NULL)
{
printf(“\n--\n\nm=”);
memset(数字,0,p+1);
sprintf(数字,“%d”,n);
对于(i=0;i当您输入第二个值时,n1
的值是多少循环?因为这是您正在分割和打印的值。是时候学习如何使用调试器了!使用调试器,您可以逐行检查代码,同时监视变量及其值。能够使用调试器对任何程序员来说都是一项关键技能。哦,不,不是。printf(“%d”,n1)
非常清晰地打印出n1
。请使用您的调试器。@YeuSeChia我看到您编辑了您的问题以修复该错误,但您仍然留下了一个仍然打印n1的位置。似乎需要做很多工作。使用无符号长
而不是int
。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n = 0,i,n1,p;
char *number;
printf("n = ");
scanf("%d", &n);
n1 = n;
while(n1/10 != 0)
{
p++;
n1/=10;
}
number = malloc(p+1);
if(number != NULL)
{
printf("\n---\n\nm = ");
memset(number,0,p+1);
sprintf(number, "%d", n);
for (i=0;i<p+1;i++)
{
printf("%c ", number[i]);
}
free(number);
}
printf("\n\n---\n\n");
}