在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语言编程题:从键盘输入一串字符,统计其中的数字与字母个数并输出