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语言中假设一个数组中已经存放若干个数字字符,编写程序,将每个数字字符转换成对应的数字后存放在另一个的主要内容,如果未能解决你的问题,请参考以下文章
编写一个函数SORT将放到一位数组中的若干个数安从小到大的顺序排序