美文网首页
(3)进制转换 矩阵转置 字符处理

(3)进制转换 矩阵转置 字符处理

作者: 笑笑学生 | 来源:发表于2016-08-21 21:05 被阅读93次

通信

1.进制转换

(1)十进制数转换为其他进制数
一个十进制正整数m转换成r进制数的思路是,将m不断除以r取余数,直到商为0时止,以反序输出余数序列即得到结果。
注意,转换得到的不是数值,而是数字字符串或数字串。
例如,任意读入一个十进制正整数,将其转换成二至十六任意进制的字符串。

#include <stdio.h>
int main(){
    int Type,a,b[10],i=0,c=0;
    printf("请输入转换类型:1、十进制转二进制,2、二进制转十进制\n");
    scanf("%d",&Type);
    printf("请输入原数据");
    scanf("%d",&a);
    switch(Type)
    {
        case 1 :
            while(a!=0){
                b[i]=a%2;
                a/=2;
                i++;
            }
            printf("二进制位:");
            i--;
            //反序输出余数序列
            for(;i>=0;i--)
                printf("%d ",b[i]);
            printf("\n");
            break;
        case 2 :
            while(a!=0){
                b[i]=a%10;
                a/=10;
                i++;
            }
            i--; 
            for(;i>=0;i--)
                c=c*2+b[i];
            printf("十进制为:%d\n",c);
            break;  
    } 
}

参考:http://blog.csdn.net/lcj8/article/details/2174147

#include <stdio.h>
int main()
{
  int num,a[100],i=0;
  printf("输入想要转换的10进制数:");
  scanf("%d",&num);
  printf("\n转换成16进制数后是:");
  do{
    a[i]=num%16;
    num=num/16;
    i++;
    }while(num);
    i--;
    for (;i>=0;i--){
      if(a[i]>=10){
        a[i]+=55;
        printf("%c",a[i]);
        }else{
            printf("%d",a[i]);
        }
    }
    printf("\n");
    return 0;
}

(2)其他进制数转换为十进制数
其他进制整数转换为十进制整数的要领是:“按权展开”,例如,有二进制数101011,则其十进制形式为1×25+0×24+1×23+0×22+1×21+1×20=43。若r进制数an……a2a1(n位数)转换成十进制数,方法是an×r n-1+……a2×r1+a1×r0。
注意:其他进制数只能以字符串形式输入。
例:任意读入一个二至十六进制数(字符串),转换成十进制数后输出。

2.矩阵转置

矩阵转置的算法要领是:将一个m行n列矩阵(即m×n矩阵)的每一行转置成另一个n×m矩阵的相应列。
例:将以下2×3矩阵转置后输出。
即将
1 2 3
4 5 6
转置成
1 4
2 5
3 6

#include <stdio.h>
#define M 3
#define N 4 
int main(){
    int a[M][N]={0},b[N][M]={0};
    int i,j;
    for(i=0;i<M;i++)
        for(j=0;j<N;j++)
            scanf("%d",&a[i][j]);
    for(i=0;i<M;i++){
        for(j=0;j<N;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    for(i=0;i<M;i++)
        for(j=0;j<N;j++)
            b[j][i]=a[i][j];
    for(i=0;i<N;i++){
        for(j=0;j<M;j++)
            printf("%d ",b[i][j]);
        printf("\n");
    }
}

3.字符处理

(1)字符统计:对字符串中各种字符出现的次数的统计。
例:任意读入一个只含小写字母的字符串,统计其中每个字母的个数。

参考:http://blog.csdn.net/cyuyanenen/article/details/51736607
    for (i = 0; i < strlen(str); i++)
        if (str[i] >= 'a' && str[i] <= 'z')
            lowAlpha++;
        else if (str[i] >= 'A' && str[i] <= 'Z')
            upAlpha++;
        else if (str[i] >= '0' && str[i] <= '9')
            num++;

#include <stdio.h>
int main()
{
    int a[100]={0},i;
    char c;
    while((c=getchar())!='\n'){
        for(i=65;i<=90;i++)
        //大写字母加32为对应小写字母
            if(c==i+32)
                a[i]++;
    }
    for(i=65;i<=90;i++)
        if(a[i]>0)
            printf("%c:%d\n",i+32,a[i]);
}

(2)字符加密
例如、对任意一个只含有英文字母的字符串,将每一个字母用其后的第三个字母替代后输出(字母X后的第三个字母为A,字母Y后的第三个字母为B,字母Z后的第三个字母为C。)
参考:http://blog.csdn.net/liuhui_8989/article/details/13398793

#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 20

int main()
{
 int nlen = 0,i;
 char words[MAX_LENGTH] = {};
 scanf("%s", words);//读入字符串
 nlen = strlen(words);
 if (nlen > 0 && nlen <= MAX_LENGTH)
  printf("input: %s\n", words);
 else
 {
  printf("input words too long!\n");
  return -1;
 }
 for(i = 0; i < nlen; i++)
 {
    //所有都加3,当超过'z'的值后,减去26 
  if (words[i] >= 'a' && words[i] <= 'z')
  {
   words[i] += 3;
   if (words[i] > 'z')
    words[i] -= ('z' - 'a'+1);
  }
  
  if (words[i] >= 'A' && words[i] <= 'Z')
  {
   words[i] += 3;
   if (words[i] > 'Z')
    words[i] -= ('Z' - 'A'+1);
  }
 }
 printf("output: %s\n", words);
 return 0;
}

4.整数各数位上数字的获取
算法核心是利用“任何正整数整除10的余数即得该数个位上的数字”的特点,用循环从低位到高位依次取出整数的每一数位上的数字。

例1、任意读入一个5位整数,输出其符号位及从高位到低位上的数字。
参考:http://blog.csdn.net/yuliu0552/article/details/6649312/

#include <stdio.h>
#define MAX 10
int main(){
    int a,i=0;
    int b[MAX]={0};
    scanf("%d",&a);
    if(a>=0){
        printf("+");
    }else{
        printf("-");
        a=(-a);
    }
    while(a){
        b[i]=a%10;
        a/=10;
        i++;
    }
    i--;
    for(;i>=0;i--){
        printf("%d",b[i]);
    }
} 

例2、任意读入一个整数,依次输出其符号位及从低位到高位上的数字。
[分析]此题读入的整数不知道是几位数,但可以用以下示例的方法完成此题:
例如读入的整数为3796,存放在x中,执行x%10后得余数为6并输出;将x/10得379后赋值给x。再执行x%10后得余数为9并输出;将x/10得37后赋值给x……直到商x为0时终止。

例3、任意读入一个整数,依次输出其符号位及从高位到低位上的数字。
[分析]此题必须借助数组将依次求得的低位到高位的数字保存后,再逆序输出。

相关文章

  • (3)进制转换 矩阵转置 字符处理

    通信 1.进制转换 (1)十进制数转换为其他进制数一个十进制正整数m转换成r进制数的思路是,将m不断除以r取余数,...

  • python小技巧

    能调用方法的一定是对象。 技巧#1 字符串翻转 技巧#2 矩阵转置 矩阵转置 自己喜欢的一种写法: 技巧#3 a ...

  • C# 数据操作工具类

    将Unicode编码转换为汉字字符串 2进制string 转byte[] 16进制转2进制 字节数组转16进制字符...

  • 【Dart/Flutter】一些常用的基本数据格式转换

    十六进制 十六进制转十进制 十六进制转BigInt 十六进制转字符串 有时,从16进制转换为字符串后,因为16进制...

  • 矩阵的置换_线性代数_day18

    矩阵的转置的应用 矩阵的转置就是将矩阵的行和列进行转换,行变成列;列变成行 形式化 专置之后就是 证明: 证明:

  • 习题汇总

    习题汇总 每天一练好棒棒~~~~~~~~~~~ 转置矩阵(方阵) 给定一个3*3方阵,求其转置矩阵,如 规律:对角...

  • 类型转换

    做蓝牙功能的时候用到了很多类型转换,记录一下。 1、字符串转data 2、data转字符串 3、十六进制字符串转中...

  • 2019-02-22 Day 48 待提高

    1.转置矩阵 给定一个矩阵 A, 返回 A 的转置矩阵。 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列...

  • R语言中性价比最高的函数以及最贵的函数

    今天讲几个我喜欢的函数。 1.性价比最高的函数t() 中文名称转置,就是矩阵的行列转换先创建一个矩阵 用t()转置...

  • mysql常用函数

    1、常用日期时间处理函数 2、常用字符串处理函数 3、流程控制函数 4、进制转换函数

网友评论

      本文标题:(3)进制转换 矩阵转置 字符处理

      本文链接:https://www.haomeiwen.com/subject/hujwsttx.html