c语言中假设一个数组中已经存放若干个数字字符,编写程序,将每个数字字符转换成对应的数字后存放在另一个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中假设一个数组中已经存放若干个数字字符,编写程序,将每个数字字符转换成对应的数字后存放在另一个相关的知识,希望对你有一定的参考价值。

jijijiji

你的说法不对。数字是数字,字符时字符。不能混了。虽然字符到了内存里也是转换成数字的格式存放。简单点的你可以利用强制类型转换。我写一个,你琢磨其中的意思,用在自己的上面就行了。
#include "stdio.h"
void main()
char a[5]='h','e','l','l','o';
int b[6];
int i;
for(i=0;i<5;i++)
b[i]=int(a[i]);
printf("%d ",b[i]);
参考技术A #include<stdio.h>

main()
char c,*str;
int i,a[10];
for(i=0;i<10;i++)a[i]=0;//静态数组初始化
printf("input a string please:");//提示语句
scanf("%s",str);//输入动态数组定义的字符串
while(*str)//字符串*str不为空,循环继续;
c=*str;//把从*str数组中提出的元素赋值给c,用于操作
for(i=0;i<10;i++)
if(i==(int)c-48)//把字符c转化为int数据与i比较'0'的ASCII编码为48,'1','2'……依次为49,50……
a[i]++;//数到某个字符,表示该字符的数组元素加1;
*str++;//原字符串数组元素向后一位;


for(i=0;i<10;i++)
printf("\n\t%d\t%d",i,a[i]);//打印
getch();


字符串就是字符数组,只是表达方式不太一样而已,给你改写一下:

#include<stdio.h>
#define N 100 //字符数组最长为100
main()
char c,str[N];
int i,j,a[10];
for(i=0;i<10;i++)a[i]=0;//静态数组初始化
printf("input a string please:");//提示语句
scanf("%s",str);//输入动态数组定义的字符串
j=0;
while(str[i]&&j<N)//字符数组元素str[i]不为空,循环继续;
c=str[i];//把从str[]数组中提出的元素赋值给c,用于操作
for(i=0;i<10;i++)
if(i==(int)c-48)//把字符c转化为int数据与i比较'0'的ASCII编码为48,'1','2'……依次为49,50……
a[i]++;//数到某个字符,表示该字符的数组元素加1;
j++;//原字符串数组元素向后一位;


for(i=0;i<10;i++)
printf("\n\t%d\t%d",i,a[i]);//打印
getch();

你的串号我已经记下,采纳后我会帮你制作本回答被提问者采纳
参考技术B //我写的 你看看对不对,我的是统计一个文件中的单词个数,统计的是总的个数
//字符数组中存放太麻烦了,放在一个文件中好一点

#include<stdio.h>
#include<stdlib.h>
#define IN 1
#define OUT 0
int main()

char szFilename[256];
FILE *fp;
printf("input the file:");
scanf("%s",szFilename);
if((fp=fopen(szFilename,"r"))==NULL)

printf("the file don't exist!");
exit(1);

int flag=OUT;
int c;
int nw=0;
while((c=fgetc(fp))!=EOF)

if(c==' ')

flag=OUT;

else if(OUT==flag)

flag=IN;
nw++;


printf("THe num is:%d\n",nw);

return 0;
参考技术C #include <stdio.h>
void main()

char a[11]="1234567890";
int b[10];
int i;
for (i = 0;i<10;i++)

b[i] = a[i]-48;


for (i = 0;i<10;i++)

printf("%d",b[i]);

参考技术D using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;

namespace baidu

class temp

public static void main()

new int[100].init(1, 200).ToStringArry().ToIntArray().Show();


public static class MyExtensions


public static string CharToString(this char[] temp)

string s = "";
for (int i = 0; i < temp.Length; i++)

s += temp[i].ToString();

return s;


#region//string
public static int[] ToIntArray(this string[] temp)

List<int> ls = new List<int>();
for (int i = 0; i < temp.Length; i++)

ls.Add(int.Parse(temp[i]));

return ls.ToArray();

public static string sort(this string temp)

return temp.Toint().sort().Tochararray().CharToString();


public static int[] ToIntArray(this string temp, string spliter)

string[] temp2 = temp.Split(spliter.ToCharArray());
List<int> ls = new List<int>();
for (int i = 0; i < temp2.Length; i++)

ls.Add(temp2[i].ToInt());

return ls.ToArray();


public static int ToInt(this string temp)

return int.Parse(temp);


public static int[] Toint(this string temp)


List<int> ls = new List<int>();
for (int i = 0; i < temp.Length; i++)

ls.Add((int)temp[i]);

return ls.ToArray();


public static byte ToTinyInt(this string temp)

return Convert.ToByte(temp);


public static int Count(this string temp, string temp2)

return (temp.Length - temp.Replace(temp2, "").Length) / temp2.Length;


public static int Count(this string temp, char[] sperater)

int count = 0;
for (int i = 0; i < temp.Length; i++)

for (int j = 0; j < sperater.Length; j++)

if (temp[i] == sperater[j])
count++;


return count;

public static int CountNum(this string temp)

int sum = 0;
for (int i = 0; i < temp.Length; i++)

if ((int)temp[i] >= 48 && (int)temp[i] <= 57)

sum++;


return sum;

public static int CountLetter(this string temp)

int sum = 0;
temp = temp.ToUpper();
for (int i = 0; i < temp.Length; i++)

if ((int)temp[i] >= 65 && (int)temp[i] <= 90)

sum++;


return sum;

public static int CountOther(this string temp)

return temp.Length - temp.CountLetter() - temp.CountNum();

public static string Md5Bit32(this string temp)

string strResult = "";
string strHashData = "";
byte[] arrbytHashValue;

System.Security.Cryptography.MD5CryptoServiceProvider oMD5Hasher = new System.Security.Cryptography.MD5CryptoServiceProvider();

try

arrbytHashValue = oMD5Hasher.ComputeHash(System.Text.Encoding.Default.GetBytes(temp));
//oMD5Hasher .ComputeHash (

//由以连字符分隔的十六进制对构成的String,其中每一对表示value 中对应的元素;例如“F-2C-4A”

strHashData = System.BitConverter.ToString(arrbytHashValue);

//替换-
strHashData = strHashData.Replace("-", "");

strResult = strHashData;


catch (System.Exception ex)

Console.WriteLine(ex.Message);

return strResult;

public static string Md5Bit16(this string temp)

return temp.Md5Bit32().Substring(8, 16);


public static string run(this string command)

string output = "";
try


Process cmd = new Process();
cmd.StartInfo.FileName = command;

cmd.StartInfo.UseShellExecute = false;

cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;

cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

cmd.Start();

output = cmd.StandardOutput.ReadToEnd();
Console.WriteLine(output);
cmd.WaitForExit();
cmd.Close();

catch (Exception e)

Console.WriteLine(e);

return output;

public static string run(this string command, string argument)

string output = "";
try

Process cmd = new Process();

cmd.StartInfo.FileName = command;
cmd.StartInfo.Arguments = argument;

cmd.StartInfo.UseShellExecute = false;

cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;

cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

cmd.Start();

output = cmd.StandardOutput.ReadToEnd();
Console.WriteLine(output);
cmd.WaitForExit();
cmd.Close();

catch (Exception e)

Console.WriteLine(e);

return output;

#endregion

#region//int.
public static int[] Perfect (this int max)

List<int> ls = new List<int>();

for (int i = 1; i < max; i++)

int temp = 0;
//Console.Write(i + "\t");
for (int j = 1; j < i; j++)

if (i % j == 0)

temp += j;


if (temp == i)

ls.Add(temp);


return ls.ToArray();

public static int[] sort(this int[] temp)

List<int> ls;
ls = temp.ToList();
ls.Sort();
return ls.ToArray();

public static char[] Tochararray(this int[] temp)

List<char> ls = new List<char>();
for (int i = 0; i < temp.Length; i++)

ls.Add((char)temp[i]);

return ls.ToArray();

public static int[] Remove(this int[] temp, int tmp)

List<int> ls = new List<int>();
ls = temp.ToList();
ls.Remove(tmp);
return ls.ToArray();

public static int[] RemoveAt(this int[] temp, int index)

List<int> ls = new List<int>();
ls = temp.ToList();
ls.RemoveAt(index);
return ls.ToArray();

public static int find(this int[] temp, int tmp)

return temp.ToList().IndexOf(tmp);

public static int[] insert(this int[] temp, int index, int tmp)

temp = temp.RemoveAt(index);
List<int> ls = new List<int>();
ls = temp.ToList();
ls.Insert(index, tmp);
return ls.ToArray();

#endregion

#region//init()
public static int[,] init(this int[,] temp)

Random rm = new Random();
int rank = temp.Rank;
int line = temp.GetLength(0);
int row = temp.Length / line;

for (int j = 0; j < line; j++)

for (int i = 0; i < row; i++)

temp[j, i] = rm.Next(9);


return temp;

public static string init(this string s, int lenght)

string temp = "";
Random rm = new Random();
for (int i = 0; i < lenght; i++)

temp += ((char)rm.Next(65, 90)).ToString();

return temp;

public static string[] ToStringArry(this int[] temp)

List <string > ls=new List<string> ();
for (int i = 0; i < temp.Length; i++)

ls.Add(temp[i].ToString());

return ls.ToArray();

public static int[] init(this int[] temp, int min, int max)

Random rm = new Random();
for (int i = 0; i < temp.Length; i++)

Rand:
int rm2 = rm.Next(min, max);
if (!temp.ToList().Contains(rm2))
temp[i] = rm2;
else
goto Rand;
//temp[i] = rm.Next(min,max);

return temp;

public static bool IsEven(int temp)

if (temp % 2 == 0 && temp != 0)
return true;
else
return false;

public static bool IsUneven(int temp)

if (temp % 2 != 0 && temp != 0)
return true;
else
return false;

public static bool Is0(int temp)

if (temp == 0)
return true;
else
return false;

public static int[] ReturnEven(this int[] temp)

return temp.ToList().FindAll(IsEven).ToArray().sort();

public static int[] ReturnUneven(this int[] temp)

return temp.ToList().FindAll(IsUneven).ToArray().sort();

public static int[] Return0(this int[] temp)

return temp.ToList().FindAll(Is0).ToArray().sort();

#endregion

#region//show
public static void Show(this byte temp)

Console.WriteLine(temp);
wline();

public static void Show(this string temp)

Console.WriteLine(temp);
wline();

public static void Show(this int temp)

Console.WriteLine(temp);
wline();

public static void Show(this int[,] temp)

int rank = temp.Rank;
int line = temp.GetLength(0);
int row = temp.Length / line;

for (int j = 0; j < line; j++)

for (int i = 0; i < row; i++)

Console.Write(temp[j, i] + " ");

Console.WriteLine();

wline();

public static int[] Show(this int[] temp)

for (int i = 0; i < temp.Length; i++)

Console.Write(temp[i] + " ");

Console.WriteLine();
wline();
return temp;

#endregion

public static void wline()

Console.WriteLine("-------------------------------------------------------------------");


C语言中整型数组的每个元素在内存中是如何存放的

整型数组每个元素在内存中连续存储,每个整型元素存储方式取决于机器硬件。
一、数组元素都是连续存储的,地址依次从低到高。
如字符数组 char a[10];
其元素有10个,为a[0]到a[9], 地址连续。 如果a的起始地址为0x1234,那么后续地址依次为0x1235, 0x1235...0x123D。
二、每个元素具体存储方式,取决于CPU。 有两种:
1、小端(Little Endian):
将低序字节存储在起始地址(低位编址), 地址低位存储值的低位,地址高位存储值的高位 。
目前大多数CPU是按照这种方式存储的,包括intel和移动端最常见的arm。
比如4字节整型值为0x12345678的情况,那么在内存中会存储为:

0x78 0x56 0x34 0x12
2、大端(Big Endian):
与小端相反, 将高序字节存储在起始地址(高位编址),地址低位存储值的高位,地址高位存储值的低位。
之前的例子在大端情况下存储为:
0x12 0x34 0x56 0x78
参考技术A 每个数占4字节,从低地址到高地址,先存放下标为0的元素,紧接着存放下标为1的元素……以此类推,没有间隔,直到整个数组结束。

以上是关于c语言中假设一个数组中已经存放若干个数字字符,编写程序,将每个数字字符转换成对应的数字后存放在另一个的主要内容,如果未能解决你的问题,请参考以下文章

C语言中整型数组的每个元素在内存中是如何存放的

编写一个C语言程序:将一个数组中的值按逆序重新存放

编写一个函数SORT将放到一位数组中的若干个数安从小到大的顺序排序

用C语言把一个数组中的值按逆序重新存放?

编写一个c语言程序,输入5个数,求它们中最大值和最小值并输出

C语言编程:任意输入10个整数放入数组中,然后求其中的最大值和最小值