#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
void print_integer(int integer){
printf("%d", integer);
}
void print_float(float f){
printf("%f", f);
}
void easy_printf(char *format, ...){
va_list arg;
va_start(arg,format);
char *sptr = format;
char *str;
float flt;
while (*sptr != ‘\0‘){
if (*sptr != ‘%‘){
putchar(*sptr++);
continue;
}
if (*sptr == ‘%‘ && *(sptr+1) == ‘%‘){
putchar(*sptr++);
*sptr++;
continue;
}
switch(*(sptr+1)){
case ‘d‘:
print_integer((va_arg(arg, int)));
sptr += 2;
break;
case ‘f‘:
print_float((va_arg(arg, double)));
sptr += 2;
break;
case ‘s‘:
str = va_arg(arg, char *);
while(*str != ‘\0‘){
putchar(*str++);
}
sptr += 2;
break;
case ‘c‘:
putchar(va_arg(arg, int));
sptr += 2;
break;
default:
sptr += 2;
break;
}
}
va_end(arg);
}
int main(){
char *name = "Peter";
int age = 26;
double pi = 3.14;
char mark = ‘Y‘;
mini_printf("My name is %s. I am %d years old. The value of pi is %f. The answer is %c.", name, age, pi, mark);
}
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void div_num_3(unsigned int num_array[], unsigned int num){
unsigned int div_num;
int loc = 1;
while(num){
div_num = num % 1000;
num = num / 1000;
num_array[loc] = div_num;
loc++;
}
num_array[0] = loc - 1;
}
int num_to_word(unsigned int num, char* buffer){
if (num == 0){
return 0;
}
static char* basic_digits[] = {"", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN", "TWELVE", "THIRTEEN",
"FOURTEEN", "FIFTEEN", "SIXTEEN","SEVENTEEN", "EIGHTEEN" "NINETEEN"};
static char* ten_digits[] = {"", "", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY"};
if (num /100){
strcat(buffer, basic_digits[num/100]);
strcat(buffer, " ");
strcat(buffer, "HUNDRED");
strcat(buffer, " ");
}
num = num % 100;
if (num < 20){
strcat(buffer, basic_digits[num]);
if (num != 0){
strcat(buffer, " ");
}
}
else{
int ten_num = num / 10;
num = num % 10;
strcat(buffer, ten_digits[ten_num]);
strcat(buffer, " ");
strcat(buffer, basic_digits[num]);
if (num != 0){
strcat(buffer, " ");
}
}
}
void written_amount(unsigned int amount, char* buffer){
if(amount == 0){
strcat(buffer, "zero");
return;
}
static char* basic_element[] = {"", "THOUSAND", "MILLION", "BILLION"};
unsigned int div_num[100];
div_num_3(div_num, amount);
int len = div_num[0];
while (len){
num_to_word(div_num[len], buffer);
strcat(buffer, basic_element[len - 1]);
strcat(buffer, " ");
len--;
}
}
int main(){
unsigned int T = 0x12;
unsigned int num_array[100];
char buffer[] = "";
div_num_3(num_array, T);
printf("共有%d组数字\n", num_array[0]);
for (int i = 1; i <= num_array[0]; i++){
printf("第%d组数为:%d\n", i, num_array[i]);
}
written_amount(T, buffer);
printf("The num is: %s\n", buffer);
return 0;
}