(3)進数変換マトリクス転置文字処理
4999 ワード
つうしん
1.進数変換
(1)10進数を他の1進数に変換する1つの10進数正の整数mをr進数に変換する考え方は、mをrで絶えず除算して残りを取り、商が0になるまで逆順で残りのシーケンスを出力して結果を得ることである.変換したものは数値ではなく、数字文字列または数字列であることに注意する.例えば、1つの10進数正の整数を任意に読み込んで2から10に変換する6任意の進数の文字列.
参照先:http://blog.csdn.net/lcj8/article/details/2174147
(2)他の進数を10進数に変換他の進数を10進数に変換するには、「重みで展開」、例えば、2進数101011があれば、その10進数形式は1×25+0×24+1×23+0×22+1×21+1×20=43.r進数an......a 2 a 1(n桁)を10進数に変換すると、方法はan×r n-1+……a2×r1+a1×r0. 注:他の進数は文字列でしか入力できません.例:任意に2~16進数(文字列)を読み込み、10進数に変換して出力します.
2.マトリックス転置
マトリクス転置のアルゴリズムの要領は、1つのm行n列マトリクス(すなわちm×n行列)の各行を別のnに転置する×mマトリクスの対応する列.例:次の2×3マトリクスを回転させて出力します.まもなく1 2 3 4 5 6を1 4 2 5 6に転置します
3.文字処理
(1)文字統計:文字列内の各種文字の出現回数の統計.例:小文字のみを含む文字列を任意に読み込み、各文字の個数を統計する.
(2)文字暗号化は、例えば、いずれかの英字のみを含む文字列に対して、それぞれの文字を後の3番目の文字に置き換えて出力する(文字X後の3番目の文字はA、文字Y後の3番目の文字はB、文字Z後の3番目の文字はC).http://blog.csdn.net/liuhui_8989/article/details/13398793
4.整数の各数桁上の数字の取得アルゴリズムの核心は、「任意の正の整数が10の余剰を除いて、その数桁上の数字を得る」という特徴を利用して、整数の各数桁上の数字を低位から高位まで順次取り出すことである.
例1、任意に1つの5ビット整数を読み込んで、そのシンボルビットと高位から低位までの数字を出力する.参照先:http://blog.csdn.net/yuliu0552/article/details/6649312/
例2、任意に1つの整数を読み込んで、そのシンボルビットおよび下位から上位への数字を順次出力する.[解析]この問題に読み込まれた整数は数桁であることは知らないが、例えば読み込まれた整数が3796であり、xに格納され、x%10を実行した後の残数が6で出力される.x/10を379にしてxに割り当てます.x%10を再実行した後の残数は9で出力されます.x/10を37にしてx...に付与し、商xが0になるまで終了する.
例3、任意に1つの整数を読み込んで、そのシンボルビットと高位から低位までの数字を順次出力する.[解析]この問題は,順次求めた低位から高位までの数字を配列によって保存してから逆順に出力しなければならない.
1.進数変換
(1)10進数を他の1進数に変換する1つの10進数正の整数mをr進数に変換する考え方は、mをrで絶えず除算して残りを取り、商が0になるまで逆順で残りのシーケンスを出力して結果を得ることである.変換したものは数値ではなく、数字文字列または数字列であることに注意する.例えば、1つの10進数正の整数を任意に読み込んで2から10に変換する6任意の進数の文字列.
#include
int main(){
int Type,a,b[10],i=0,c=0;
printf(" :1、 ,2、
");
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("
");
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
",c);
break;
}
}
参照先:http://blog.csdn.net/lcj8/article/details/2174147
#include
int main()
{
int num,a[100],i=0;
printf(" 10 :");
scanf("%d",&num);
printf("
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("
");
return 0;
}
(2)他の進数を10進数に変換他の進数を10進数に変換するには、「重みで展開」、例えば、2進数101011があれば、その10進数形式は1×25+0×24+1×23+0×22+1×21+1×20=43.r進数an......a 2 a 1(n桁)を10進数に変換すると、方法はan×r n-1+……a2×r1+a1×r0. 注:他の進数は文字列でしか入力できません.例:任意に2~16進数(文字列)を読み込み、10進数に変換して出力します.
2.マトリックス転置
マトリクス転置のアルゴリズムの要領は、1つのm行n列マトリクス(すなわちm×n行列)の各行を別のnに転置する×mマトリクスの対応する列.例:次の2×3マトリクスを回転させて出力します.まもなく1 2 3 4 5 6を1 4 2 5 6に転置します
#include
#define M 3
#define N 4
int main(){
int a[M][N]={0},b[N][M]={0};
int i,j;
for(i=0;i
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
int main()
{
int a[100]={0},i;
char c;
while((c=getchar())!='
'){
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
",i+32,a[i]);
}
(2)文字暗号化は、例えば、いずれかの英字のみを含む文字列に対して、それぞれの文字を後の3番目の文字に置き換えて出力する(文字X後の3番目の文字はA、文字Y後の3番目の文字はB、文字Z後の3番目の文字はC).http://blog.csdn.net/liuhui_8989/article/details/13398793
#include
#include
#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
", words);
else
{
printf("input words too long!
");
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
", words);
return 0;
}
4.整数の各数桁上の数字の取得アルゴリズムの核心は、「任意の正の整数が10の余剰を除いて、その数桁上の数字を得る」という特徴を利用して、整数の各数桁上の数字を低位から高位まで順次取り出すことである.
例1、任意に1つの5ビット整数を読み込んで、そのシンボルビットと高位から低位までの数字を出力する.参照先:http://blog.csdn.net/yuliu0552/article/details/6649312/
#include
#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、任意に1つの整数を読み込んで、そのシンボルビットおよび下位から上位への数字を順次出力する.[解析]この問題に読み込まれた整数は数桁であることは知らないが、例えば読み込まれた整数が3796であり、xに格納され、x%10を実行した後の残数が6で出力される.x/10を379にしてxに割り当てます.x%10を再実行した後の残数は9で出力されます.x/10を37にしてx...に付与し、商xが0になるまで終了する.
例3、任意に1つの整数を読み込んで、そのシンボルビットと高位から低位までの数字を順次出力する.[解析]この問題は,順次求めた低位から高位までの数字を配列によって保存してから逆順に出力しなければならない.