C程序设计(第四版) 谭浩强 习题7.8 个人设计
习题 7.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如输入1990,应输出“1 9 9 0”。
代码块:
方法1:
#include <stdio.h>
char addsp(int x, char y[]); //定义字符输出函数
int main()
{
int a;
char b[7];
scanf("%d", &a); //输入数字
b[7]=addsp(a, b); //调用字符输出函数
puts(b); //输出结果
return 0;
}
//字符输出函数
char addsp(int x, char y[])
{
int i, j;
char m[4];
m[0]=x/1000;
m[1]=(x-m[0]*1000)/100;
m[2]=(x-m[0]*1000-m[1]*100)/10;
m[3]=x-m[0]*1000-m[1]*100-m[2]*10;
for (i=0, j=0; i<4; i++, j++)
m[i]=m[j]+'0';
for (i=0, j=0; i<7; i++){
if (i==2*j){
y[i]=m[i/2];
j++;
}
else
y[i]=' ';
}
y[i]='\0';
return y[i];
}
方法2:
#include <stdio.h>
#include <math.h>
void input(); //定义输入函数
void change(int n); //定义字符输出函数
int num;
int main()
{
input(); //调用输入函数
change(num); //调用字符输出函数
return 0;
}
//输入函数
void input()
{
printf("Please enter number: ");
scanf("%d", &num);
while(num<1000||num>9999){ //如果输入不是4位数,报错并重新输入
printf("Error!\nPlease enter number: ");
scanf("%d", &num);
}
}
//字符输出函数
void change(int n)
{
char v[4];
for (int i=0, j=3; i<4; v[i++]=(int)(n/pow(10,j))%10+'0', j--);
printf("New style: ");
for (int k=0; k<4; printf("%c ", v[k++]));
printf("\n");
}