⑴ c語言怎麼定義一個數組並隨機賦值
用隨機數
srand( (unsigned)time( NULL ) );
for(i=0;i<=5;i++)//假設數組是5
{
a[i]=( rand()%100+1);
}
可以實現,記得包含頭文件
time.h和stdlib.h
⑵ C語言裡面有定義隨機數組的函數嗎
沒有,只有隨機數的函數 rand(),要定義,能用鏈表進行寫
中國物聯網校企聯盟技術部
⑶ 求c語言編程:1~聲明有n個元素的一維數組,隨機輸入n個元素的值,輸出n個元素 2~對數組進行排序(
呵呵,時間不早了,謝謝都睡了,就給樓主送點福利吧。我就一碼農,不為分數而來!
想起了8年前我苦心學C語言的艱難,沒有電腦,沒有師傅,代碼都寫在草稿紙上的。
希望你能好好學習編程,代碼寫的很詳細了。
多讀,多看,多寫,多調試。
先貼效果:
1---------隨機數組初始化為:
28 95 15 42 43 25 5 10 76 35
2---------數組排序後的結果為:
5 10 15 25 28 35 42 43 76 95
3---------請輸入X值,查找是否存在
25
存在第 4 個位置
4---------輸入X值,插入數組中。
35
插入後的數組為
5 10 15 25 28 35 35 42 43 76
5---------輸入您要刪除的元素X
35
5 10 15 25 28 42 43 76 -1 -1
請按任意鍵繼續. . .
再貼源代碼:
#include "stdio.h"
#include "conio.h"
#include <time.h>
#include <math.h>
#include<stdlib.h>
//給定數組,列印出來
void printArray(int a[],int n)
{
for(int i=0;i<n;i++)
{
printf("%4d",a[i]);
}
printf("\n");
}
//給定數組 冒泡排序
void bubblesort(int a[],int n)
{
int i,j,temp=0;
for(i=0;i<n;i++)
{
for(j=n-1;j>i;j--)
{
if(a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
//給定數組和要查找的元素,查找是否存在
int isExist(int a[],int key,int n)
{
int pos=-1;
for(int i=0;i<n;i++)
{
if(a[i]==key)
{
pos=i;
break;
}
}
return pos;
}
//給定數組和要插入的元素
void insertArray(int a[],int key ,int n)
{
int pos=-1;//記錄要插入的位置
for(int i=0;i<n;i++)
{
if(a[i]>key)
{
pos=i;
break;
}
}
//從最後一個開始,元素後移動,數組長度不夠,最後一個會丟失的
if(pos>=0&&pos<n)
{
for(int i=n;i>pos;i--)
{
a[i]=a[i-1];
}
a[pos]=key;
}
}
//給定數組和要刪除的值key 刪除所有和key相等的值
void deleteArray(int a[],int key,int n)
{
int k=-1;
for(int i=0;i<n;i++)
{
if(a[i]==key)
{
//找到要刪除的元素 從後往前覆蓋
for(k=i;k<n-1;k++)
{
a[k]=a[k+1];
}
a[k]=-1;//最後用-1 替換掉
i=i-1;//推回一格,重復的元素也要刪除掉
}
}
}
main()
{
int a[10]={0};
int x=0,pos=-1;
time_t t;
srand((unsigned)time(&t));
//隨機初始化數組
for(int i=0;i<10;i++)
{
a[i]=rand()%100+1;
}
printf("\n1---------隨機數組初始化為:\n");
printArray(a,10);
printf("\n2---------數組排序後的結果為:\n");
bubblesort(a,10);
printArray(a,10);
printf("\n3---------請輸入X值,查找是否存在\n");
scanf("%d",&x);
pos=isExist(a,x,10);
if(pos==-1)
printf("不存在!\n");
else
printf("存在第 %d 個位置\n",pos+1);
printf("\n4---------輸入X值,插入數組中。\n");
scanf("%d",&x);
insertArray(a,x,10);
printf("插入後的數組為\n");
printArray(a,10);
printf("\n5---------輸入您要刪除的元素X\n");
scanf("%d",&x);
deleteArray(a,x,10);
printArray(a,10);
system("pause");
}
⑷ C語言 如何隨機生成數組
使用rand()函數+循環語句可生成一組隨機數組。
1、C語言提供了一些庫函數來實現隨機數的產生。C語言中有三個通用的隨機數發生器,分別為 rand函數, random函數, randomize 函數。rand函數產生的並不是真意正義上的隨機數,是一個偽隨機數,是根據一個數,稱之為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。但這不是真正的隨機數,C提供了srand()函數,它的原形是void srand( int a),用來設置一個種子數。在調用rand函數產生隨機數前,應該先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。
2、常式:
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
voidmain(){
srand((unsigned)time(NULL));//用當前系統時間設置種子
inta[100];
printf("隨即初始化數組的100個數(范圍是0~100). ");
for(inti=0;i<100;i++){
a[i]=rand()%101;//用rand函數生成0-100的隨機數,並賦值給數組a[i]
printf("%4d",a[i]);
if(i%10==0&&i!=0)
printf(" ");
}
getchar();
}
⑸ c語言:我想定義一個行數為n的數組,為什麼還是告訴我不確定數組的大小怎麼改急求!!!
你這么寫的話,那個n還是一個變數,c語言首先需要編譯才能執行,而編譯的時候編譯器就認為這個n是不確定的,所以他不知道要給你分配多大的存儲空間,我建議你可以定義一個指針來做,下面是一個例子。
假設數組存的是int型
那麼 你先申請10個元素
int* a = (int*)malloc(sizeof(int)*10);
如果又來了個元素,那麼你就可以
a=(int *)realloc(a,11*sizeof(int));
求元素個數int i,n=1;
for(i = 0;(a+i)!=NULL;i++)
{
;
}
n=i+1;//n就是元素個數
⑹ C語言中如何生成一個隨機數組
代碼: #include<time.h>
#include<stdlib.h>
#include<stdio.h>void main()
{
srand( (unsigned)time( NULL ) );
int a[100];
printf("隨即初始化數組的100個數(范圍是0~100).\n");
for(int i=0;i<100;i++)
{
a[i]=rand()%101;
printf("%4d",a[i]);
if(i%10==0 && i!=0)
printf("\n");
}
getchar();
}
圖:
⑺ c語言 隨機函數 隨機生成一個一維數組
#include<stdio.h>
intmain()
{inti,n;
scanf("%d",&n);
inta[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("已輸入的數據是: ");
for(i=0;i<n;i++)
printf("%d",a[i]);
printf(" ");
return0;
}
⑻ C語言如何定義一個N行N列的二維數組任意輸入數據
1、一般情況下,題目會給出N不大於M,m不大於幾的限制條件,此時只需這樣定義即可
int
a[N]M],其中N和M作為常數進行宏定義,比如
#define
N
5
#define
M
6
2、學到動態內存分配後,就不會有這樣的擔憂,需要時,可用malloc()函數在「堆」空間申請內存,該函數的原型是:
void
*malloc(
size_t
size
);,功能是要求系統分配大小為size個位元組的堆空間,注意到該函數的分會類型是void,通過強制類型轉換即可獲得需要的數據類型,比如
int
*p;
p
=
(int
*)malloc(30);
如果申請成功,則返回該區域的首址,失敗則返回NULL。
⑼ c語言:在main函數中,定義一個含N個元素的數組,其中N是符號常量,然後編寫下列各子函數完成相應的功能
你看看是這個吧,常量N定義的是10
#define N 10
#include<stdio.h>
void main()
{
void sr(int a[]);
void sc(int a[],int m);
void js(int a[],int *max,int *min);
void px(int a[]);
int a[N],m,max,min;
/***************************/
printf("輸入一個數m ");
scanf("%d",&m);
sr(a);
sc(a,m);
js(a,&max,&min);
printf("最大值max=%d,最小值min=%d\n",max,min);
px(a);
sc(a,m);
}
/***********************/
void sr(int a[])
{
int i;
printf("初始化數組,輸入 %d 個數 :\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
}
/************************/
void sc(int a[],int m)
{
int i;
printf("輸出數組a,每行%d 個數:\n",m);
for(i=0;i<N;i++)
printf("%5d",a[i])&&((i+1)%m==0)&&printf("\n");
printf("\n");
}
/*************************/
void js(int a[],int *max,int *min)
{
int i;
printf("求最大最小值\n");
*max=*min=a[0];
for(i=1;i<N;i++)
{
if(*max<a[i])*max=a[i];
if(*min>a[i])*min=a[i];
}
}
void px(int a[])
{
int i,j,tmp;
printf("數組排序\n");
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
⑽ 在c語言中如何做到輸入一個數字,就定義了n(為輸入的數字)個數組
這個是沒辦法做到的。
數組定義在編譯鏈接階段就需要確定下來,在系統啟動時需要在數據段分配指定空間。所以是不能在代碼運行過程中動態定義數組的。
你可以用動態申請內存的方法為數組分配空間,但需要用一個統一的指針的偏移動作來實現訪問不同數組的功能。