9个回答
展开全部
可以int a;scanf("%2d",&a);printf("%d",a);假如你输入123456,那么只会输出12
追问
首先scanf里是不能用%2d的,还有就是我是要3输出03
追答
要3输出03,那么就用printf("%2d",a);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个有助于帮助你理解计算机显示字符的方法和原理。
首先要存储每个数字字符的点阵信息,每个点用1位二进制数表示1表示有点0表示无点。
分析一下,你的每个数字每行12字符,即12点,共18行,可以用16位二进制数组存放
那么我们就开设数组存储unsigned short int num1[18];
拿字符1来说,每行的点阵转化成16进制数据记录下来:
000000000000 0x00
000000000110 0x06
000000011110 0x1e
000000011110 0x1e
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000000 0x00
这样存储下来是:unsigned short int num1[18]={0,6,0x1e,0x1e,6,6,6,6,6,6,6,6,6,6,6,6,0};
程序在显示这样的字符时,需要逐行取这些点阵,逐位判断是否是1,根据显示要求看1代表字符0还是空格;多个数字一行需要同时先把所有数字的第1行显示完后再去处理第2行,直到处理完18行为止。
首先要存储每个数字字符的点阵信息,每个点用1位二进制数表示1表示有点0表示无点。
分析一下,你的每个数字每行12字符,即12点,共18行,可以用16位二进制数组存放
那么我们就开设数组存储unsigned short int num1[18];
拿字符1来说,每行的点阵转化成16进制数据记录下来:
000000000000 0x00
000000000110 0x06
000000011110 0x1e
000000011110 0x1e
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000110 0x06
000000000000 0x00
这样存储下来是:unsigned short int num1[18]={0,6,0x1e,0x1e,6,6,6,6,6,6,6,6,6,6,6,6,0};
程序在显示这样的字符时,需要逐行取这些点阵,逐位判断是否是1,根据显示要求看1代表字符0还是空格;多个数字一行需要同时先把所有数字的第1行显示完后再去处理第2行,直到处理完18行为止。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//试一下嘛
#include <stdio.h>
#include "string.h"
#include <stdlib.h>
#define NN 5//这里你想要几进制,就填几
int mi(int m,int n)
{
if (n==0)
return 1;
while(n>1)
{
m*=m;
n--;
}
return m;
}
int jinzhi(int num)
{
char c[50];
itoa(num,c,NN);
return atoi(c);
}
void main()
{
int n,j;
char chrprint[20],chrtemp[10];
printf("请输入N:");
scanf("%d",&n);
j=mi(NN,n);
strcpy(chrprint,"%0");
itoa(n,chrtemp,10);
strcat(chrprint,chrtemp);
strcat(chrprint,"d\n");
for(int i=1;i<j;i++)
{
printf(chrprint,jinzhi(i));
}
}
#include <stdio.h>
#include "string.h"
#include <stdlib.h>
#define NN 5//这里你想要几进制,就填几
int mi(int m,int n)
{
if (n==0)
return 1;
while(n>1)
{
m*=m;
n--;
}
return m;
}
int jinzhi(int num)
{
char c[50];
itoa(num,c,NN);
return atoi(c);
}
void main()
{
int n,j;
char chrprint[20],chrtemp[10];
printf("请输入N:");
scanf("%d",&n);
j=mi(NN,n);
strcpy(chrprint,"%0");
itoa(n,chrtemp,10);
strcat(chrprint,chrtemp);
strcat(chrprint,"d\n");
for(int i=1;i<j;i++)
{
printf(chrprint,jinzhi(i));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
图实例:
a=12,b=03
测试代码:
#include "stdio.h"
#include "conio.h"
main()
{
int a=12;
int b=3;
printf("a=%2d,b=%02d\n",a,b);
getch();
}
楼主好运!
a=12,b=03
测试代码:
#include "stdio.h"
#include "conio.h"
main()
{
int a=12;
int b=3;
printf("a=%2d,b=%02d\n",a,b);
getch();
}
楼主好运!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询