编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。

在本题中,二进制、八进制及十进制算法思路一样,采取模除的方式,输出各个位置的数,接着采用逆序输出。在十六进制中"0123456789abcdef"[num%16],求出各位的数字。

#include<stdio.h>
void reverse(int len,char arr[]) //逆置
{
 int left =0;
 int right =len -1;
 while(left < right)
 {
  char temp = arr[left];  
  arr[left] = arr[right];
  arr[right] = temp;
  right --;
  left ++;   
 }
}
void itob(int num,char s[], int n)  //以n进制形式输出
{
 int i=0;
 while(num)  
 {
  if(n<10)
  { 
   s[i]=num% n+‘0‘;   
   num /= n ; //模除
   i++;
  }
  else if(n==16)
  {
   s[i]="0123456789abcdef"[num%16];
   num/=16;
   i++;
  } 
  else
  {
   break; 
  }
 }
 s[i]=‘\0‘;
 reverse(i , s);
}
int main()
{
 char s[32];
 int n=0;
 int num;
 scanf("%d",&n);
 printf("num=");
 scanf("%d",&num);
 itob(num,s, n);   
 printf("%s\n",s);
 return 0;
}

时间: 2024-10-22 13:20:19

编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。的相关文章

整数n转换为以b进制的数,itob

写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数.保存到s中. #include<stdio.h> #include<stdlib.h> void itob(int n, char s[],int b)//整数n转换为以b进制的数 { int i = 0; int start = 0; int end = 0; if ((b == 2) || (b == 8))//2进制和8进制 { while (n) { s[i] = n%b + '0

【C语言】【笔试题】编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。

#include <stdio.h> static int i=0; int itob(int n,char s[],int b) { if(n<2) { s[i]=n+'0'; } else { itob(n/2,s,b); //递归 i++; n=n%2; s[i]=n+'0'; } s[i+1]='\0';//结束标志 return 0; } int main () { char s[20]; int num=0; scanf("%d",&num); i

【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。

#include<stdio.h> void itob(int n,char s[], int b) {  int i=1;  for(;i<=32;i++)    //共循环了32次,保证得到32位的二进制数  {   s[i-1]= n % b;   //数组是从编号0开始的,一直到编号31结束   n = n/b ; //用模除的方法依次得到每位进制数  }  for(i=32;i>0;i--)  {   printf("%d",s[i-1]);   }

【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。

/*编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数.*/ #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_string

编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0

/* 编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0 */ #include <string.h> #include <stdio.h> // 可读性 -> 性能 -> 精简(重构) int char_contains(char str[], char c); int main() { //int result = char_contains("itc8ast"

编写一个函数reverse_string(char * string)(递归实现)

编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数. #include<stdio.h> #include<assert.h> #include<stdlib.h> int my_strlen(const char*str) { assert(str); int count = 0; while (*str) { count++; str++; } retur

实现一个函数itoa(int n, char s[]),将整数n这个数字转换为对应的字符串,保存到s中。

实现一个函数itoa(int n, char s[]),将整数n这个数字转换为对应的字符串,保存到s中. #include <stdio.h> void reverse(char *left, char *right){ while (left < right) {  char tmp = *left;  *left = *right;  *right = tmp;  left++;  right--; }} void my_itoa(int n, char s[]){ char *st

【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。

//编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列. //要求:不能使用C函数库中的字符串操作函数. #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_stri

C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列

编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. #include <stdio.h> #include <string.h> #include <assert.h> int reverse_string(char * str) { assert(str); int len=strlen(str); char *ch=str+len-1; while(len>1) { char tmp=*st