在C语言中,如果要输入一串数字,其中每个数字用逗号隔开,且不知道总共输入了多少数字。要怎样输入呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C语言中,如果要输入一串数字,其中每个数字用逗号隔开,且不知道总共输入了多少数字。要怎样输入呢?相关的知识,希望对你有一定的参考价值。

例如:输入“14,24,32,23,2345,10”怎样把各个数字赋值到数组中,或者是变量中

先读1个整型数。
然后循环:读1个字符,如果字符是逗号则读1个整型数,如果不是逗号,循环就结束。
如果读整型数有错,循环也结束。
#include<stdio.h>
#include<stdlib.h>
main() int x[100],n=0,i;
int c;
if ( scanf("%d",&x[n])==1) n++;
while(1)
scanf("%c",&c);
if (c != ',') break;
if ( scanf("%d",&x[n])==1) n++;else break;

printf("\nI read: ");
for (i=0;i<n;i++) printf("%d ",x[i]);
return 0;
参考技术A 比较麻烦。
可以每次malloc int
可以规定以一个特定的字符结束,比如当输入#号的时候代表输入结束
参考技术B #include <stdio.h>
#define MAX_SIZE 10000 //输入数的上限
#define END_NUM -1 //作为输入结束符,这个数要保证不跟正常要处理的数冲突
int main(void)

int count, num[MAX_SIZE];

count = 0; //保存输入数的个数
while (scanf("%d%*c", &num[count]) && (num[count] != END_NUM)) //输入-1表示输入结束
++count;

return 0;

c#中如何使用split方法

在问题框中输入一串数字(10个),数字间用逗号隔开,用split方法把各个数字分离出来,并保存到数组中,然后对数字进行排序。带上注释。

.Net 3.5里面用LINQ直接摆平:

string value="1,2,3,4,5";
int[] ids= value.split(',') //用逗号进行分割
.Select(s=>int.Parse(s)) //遍历每个字符串并转换为数字
.OrderBy(s=>s) //排序
.ToArray(); //转换为数组。

如果不会LINQ或不是.Net 3.5,可以用传统方法做:
string[] list=value.split(',');//分割
int[] id=new int[list.Length];//声明目标数组
for(int i=0;i<list.Length;i++)id[i]=int.Parse(list[i]);//转换文本到数组中
Array.Sort(id); //直接排序

我就是比较惊奇上面为啥有同学直接写了一个冒泡排序…….Net内部的排序是快速排序,比冒泡排序快多了。
上面代码是手打的,没经过编译,不保证完全正确,大概演示一下。
参考技术A 两句话搞定
List<int> noList = this.textBox1.Text //取文本框的输入文字
.Split(new char[]',', StringSplitOptions.RemoveEmptyEntries) //按‘,’隔开字符串成为string[]数组,忽略掉空字符串
.ToList() //string[]数组转换成 List<string>
.ConvertAll<int>(item => int.Parse(item.Trim())); //List<string>转换成 List<int>

noList.Sort(); //排序,默认为升序
参考技术B using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2

public class Program

static void Main(string[] args)


string str = "1,7,0,5,3,6,4,3,8";//您的字符串

string[] a = str.Split(',');//将字符串保存在数组中

int[] b = new int[a.Length];

for (int count = 0; count < a.Length; count++)//将字符串数组转换为整数数组


b[count] = Convert.ToInt32(a[count]);


BubbleSort(b);//排序并显示


public static void BubbleSort(int[] array) //进行冒泡排序



int length = array.Length;

for (int i = 0; i <= length - 1; i++)



for (int j = length - 1; j > i; j--)

if (array[j] < array[j - 1] )



int temp = array[j];

array[j] = array[j - 1];

array[j - 1] = temp;




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

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





测试过的没问题!希望对你有用!谢谢!
参考技术C int[]array = Question.Text.Split(','); //将数字放入array数组
public void BubbleSort(int[] array) //进行冒泡排序

int length = array.Length;
for (int i = 0; i <= length - 1; i++)

for (int j = length - 1; j > i; j--)

if (array[j] < array[j - 1] )

int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;



本回答被提问者采纳
参考技术D string s = "2,1,3,4,9,6,7,8,5,0"; //需要分割的字符串
string[] arr = s.Split(','); //分割,用'号表示char值
Array.Sort(arr); //排序,默认按顺序排序
// Array.Reverse(arr); //如果需要倒序则开启这句即可
//输出
foreach (string a in arr)
Console.WriteLine(a);

以上是关于在C语言中,如果要输入一串数字,其中每个数字用逗号隔开,且不知道总共输入了多少数字。要怎样输入呢?的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程题:从键盘输入一串字符,统计其中的数字与字母个数并输出

#输入三个数字,以逗号隔开,输出其中最大的数 这题用pycharm怎么写啊

C 输入一串数字,去掉当中含7的和能被7整除的数

C语言编程输入一串数字输出英语表达

读取以逗号分隔的一串数字

C语言,目的:输入一串数字,用空格隔开,然后赋值给数组