㈠ c語言,這道題怎麼做,不確定元素個數我沒法定義數組啊
/* C99標准增加的變長數組(VLA) */
int N; /* 首先聲明一個變數作為數組大小 */
scanf ("%d", &N); /* 程序運行時,在聲明數組前設置N的值 */
int arr[N]; /* 聲明大小為N的數組 */
/* 注意:N的值必須在聲明數組前指定。聲明變長數組時不可以初始化。N只能被賦值1次,一旦確定,不可改變。*/
㈡ C語言裡面要定義一個字元串數組,數組元素個數不確定,每個元素的長度也不確定,求動態定義的方法
你可以用動態分配內存的方法,
比如你要建立一個字元串數組:
char *str;
str=(char *)malloc(n);
n是變數,可以在確定了變數的值後再用以上代碼分配內存,
而str字元串可以以一般數組的用法使用,比如
*str="hello";的話
str[1]='l';
最後別忘了釋放內存
free(str);
㈢ 在c語言不知道數組有多少個元素怎麼用FOR循環輸出
假如不知道數組的元素個數,一般為int數組,或char數組,下面看代碼實現要求:
#include<stdio.h>
voidmain()
{
intnum[]={1,2,3};
charstr[]={'4','5','6'};
for(inti=0;i<sizeof(num)/sizeof(int);i++)//sizeof(num)/sizeof(int)計算長度
{
printf("%d",num[i]);
}
puts("");
for(i=0;i<sizeof(str)/sizeof(char);i++)
{
printf("%c",str[i]);
}
puts("");
}
假如是字元串數組的話,就可以用str[i]!=0來判斷是否到達尾部,這個就不存在元素個數之說
㈣ C語音如果數組個數不確定應該怎樣定義數組
第一種方法:最大值法。
申請的數組可能需要30個左右,於是申請數組大小固定為40;
第二種方法:動態分配,即指針。
需要大小為n的整型數組,int *pn = (int*)malloc(n*sizeof(int));
㈤ C語言中如何實現一個排列,但是需要排列的個數是不確定的,也就是說輸進去多少就排多少
這個很好實現,你可以使用malloc函數進行內存申請,給你舉個例子吧,哈哈,
例如需要5個int型的數排列,你就可以這樣定義
int* a=(int)malloc(sizeof(int)*5);
這樣就申請了5個int型的內存單元,而且使用起來很靈活方便。直接可以按照數組的操作方式來操作,例如你可以直接這樣做, a[0]=100;a[1]=200;也可以進行數組操作。不過這個需要實現由用戶輸入要排序元素的個數。在這個基礎上進行改進就可實現你要的。如下。
首先和上邊一樣,當用戶每輸入一個,你就用malloc申請一個int單元。當用戶輸入第二個時你可以使用realloc函數,這個函數是在malloc的內存上追加內存單元,使用如下;
int* a=(int)malloc(sizeof(int)*1);
int* a=(int*)realloc(a,sizeof(int)*1);追加一個
這樣就可以了,使用還是一樣,可以使用數組方式和指針方式。哈哈,給分吧。!!~~應該會幫到你。
㈥ 用C語言實現從鍵盤上輸入不確定個數的數字,將數字從小到大排序後輸出
對於輸入的數據的個數不確定的情況,一般會預設一個特殊的非法值(這個值是屬於論域之外的一個值)作為終止值,例如如果論域是正整數,則通常會將0作為終止值,即當輸入0時結束,且0不作為有效數據。
因此如果你要輸入的都是正整數,則程序可如下(對於其它情況可採用類似方法)
#include <stdio.h>
void Sort(int *s, int left, int right)
{
int i, j, min, tmp;
for(i = left; i < right; i++)
{
for(min = i, j = i + 1; j <= right; j++)
if(s[j] < s[min]) min = j;
if(min != i) tmp = s[i], s[i] = s[min], s[min] = tmp;
}
}
void main( )
{
int i, s[1000], length = 0, data;
scanf("%d", &data);
while(data > 0)
{
s[length++] = data;
scanf("%d", &data);
}
Sort(s, 0, length - 1);
for(i = 0; i < length; i++)
printf("%-4d", s[i]);
}
運行結果:
㈦ C語言 怎樣實現不確定元素個數的數組的數據輸入
intn,i;
int*a,*b,*c;
printf("請輸入數組大小:");
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
b=(int*)malloc(sizeof(int)*n);
c=(int*)malloc(sizeof(int)*n);
printf("請輸入數組a的數據:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("請輸入數組b的數據:");
fflush(stdin);
for(i=0;i<n;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<n;i++)
{
c[i]=a[i]+b[i];
}
printf(" 數組c:");
for(i=0;i<n;i++)
{
printf(" %d",c[i]);
}
㈧ C語言中關於數組元素不定個數的問題
C語言的話,升級編譯器就可以了,最新的編譯器都支持variable length array