C程序设计 (第四版) 谭浩强 习题7.8
习题 7.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如输入1990,应输出“1 9 9 0”。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法1:使用数组
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void outputSpace(char strNum[], int number){
int base = 1000;
int i;
for(i = 0; i < 7; i++){
if(i % 2 == 0){
strNum[i] = number / base + '0';
number -= number / base * base;
base /= 10;
}
else{
strNum[i] = ' ';
}
}
strNum[i] = '\0';
printf("New String: %s\n", strNum);
}
int main(){
int number;
printf("Enter number: ");
scanf("%d", &number);
while(number < 1000 || number > 9999){
printf("Error! The number must be 4 bits!\nEnter number: ");
scanf("%d", &number);
}
char strNum[8];
outputSpace(strNum, number);
system("pause");
return 0;
}
方法2:使用指针、动态分配内存
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 80
void inputNum(int *number){
printf("Enter number: ");
scanf("%d", number);
while(*number < 1000 || *number > 9999){
printf("Error! The number must be 4 bits!\nEnter number: ");
scanf("%d", number);
}
}
void outputSpace(char strNum[], int *number){
int base = 1000;
int i;
for(i = 0; i < 7; i++){
if(i % 2 == 0){
strNum[i] = *number / base + '0';
*number -= *number / base * base;
base /= 10;
}
else{
strNum[i] = ' ';
}
}
strNum[i] = '\0';
printf("New String: %s\n", strNum);
}
int main(){
int *number = (int*)malloc(sizeof(int));
char *strNum = (char*)malloc(N * sizeof(char));
inputNum(number);
outputSpace(strNum, number);
free(number);
free(strNum);
system("pause");
return 0;
}