⑴ 一個c語言數組輸出個數問題
樓上的說的很好,只是有點錯誤:
定義到main函數之外為全局變數,並不是存放在堆區,而是放在全局區。
一個由c/C++編譯的程序佔用的內存分為以下幾個部分
1、棧區(stack)—
由編譯器(Compiler)自動分配釋放,存放函數的參數值,局部變數的值等。其操作方式類似於數據結構中的棧。
2、堆區(heap)
—
一般由程序員分配釋放,若程序員不釋放,程序結束時可能由OS回收。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表,呵呵。
3、全局區(靜態區)(static)—,全局變數和靜態變數的存儲是放在一塊的,初始化的全局變數和靜態變數在一塊區域,
未初始化的全局變數和未初始化的靜態變數在相鄰的另一塊區域。
-
程序結束後有系統釋放
4、文字常量區
—
常量字元串就是放在這里的。程序結束後由系統釋放
5、程序代碼區—
存放函數體的二進制代碼。
定義到main函數之內為局部變數,存放在棧區;定義到main函數之外為全局變數,存放在全局區。對於一個程序而言,棧區大小是由系統分配的,如果變數佔用空間過大則會出現棧溢出的問題。
⑵ C語言,輸入20個數,相同的只輸出一個
循環比較了。。
最簡單的邏輯
就是
建立一個唯一的數組。
然後循環這20個數。發現這數字不存在數組中。則插入到數組。如果發現存在
則跳過。。以此類推~~~
當然
如果這個數組
有上W個的話。。這就需要進行優化排序了
⑶ 怎樣用C語言編寫程序產生20個100以內的隨機數,然後輸出數組各元素
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{ int i,number[20];
srand((unsigned) time(NULL)); //用時間做種,每次產生隨機數不一樣
for (i=0; i<20; i++)
{
number[i] = rand() % 100; //產生0-100的隨機數
printf("%d ", number[i]);
}
return 0;
}
⑷ C語言:生成20個隨機數,然後把它們排序,最後要把排序前和排序後的數都顯示出來。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[21],num[21]; /*你的角標從1開始,這里的20就不夠了*/
int i,j;
int index,temp;
srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[i] = rand(); /*這個應當是i*/
printf("%d\n",nums[i]);
num[i]=nums[i]; /*備份原始數據*/
}
/*選擇法,從小到大排序*/
for (i=1;i<=20;i++)
{
index=i; /*從i到20這幾個元素中最小值的序號*/
for (j=i+1;j<=20;j++)
if (nums[index]>nums[j])
index=j;
if (index!=i)/*交換i和index的元素的值*/
{
temp=nums[index];
nums[index]=nums[i];
nums[i]=temp;
}
}
for (i=1;i<=20;i++)
printf("%d\t%d\n",num[i],nums[i]);
getch();
return 0;
}
⑸ c語言中定義了數組a[10]為什麼可以輸出20個數,這樣一來a[10]有何意義
下標越界 編譯器不自動檢測
不檢測下標可以提升運行效率 越界之後 會造成BUG 只能編寫者自己注意
還有 你這個是輸出21個數 不是20
想了一下應該在補充一句
number[10] 的意義在於 聲明了一段合法的內存空間可供使用 超出部分雖然可以讀寫 但是屬於非法讀寫
⑹ C語言編寫輸出20個數,每行5個
#include "stdio.h"
void main()
{
int i;
for(i=20;i>=1;i--)
{
printf("%d,",i);
if((i-1)%5==0)
printf("\n");
}
}
這樣就可以了
⑺ 用C語言編寫:輸出前20個自然數,要求每五個數一行,共產生4列(看起來像排列成矩形形狀)
#include"stdio.h"
void main()
{
int a[20],i;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{ if(i%5==0)
printf("\n");
printf("%d",a[i]);
}
}
⑻ 怎麼輸出這20個數中的最大值C語言
設置一個最大值變數,遍歷數組,對於每個元素,判斷是否比當前最大值大,是的話講當前最大值更改為當前元素
⑼ C語言10-100隨機20個數字 輸出最大值
#include<math.h>
#include<stdio.h>
main()
{
intmax,n=0,num;
while(1)
{
num=rand()%100;//產生一個0~99的隨機數
if(num<10)continue;//若隨機數的值小於10則提前結束本次循環重新生成隨機數
printf("%5d",num);//否則就輸出隨機數
max=num;//將隨機數賦給max
n++;//將隨機數的計數器加1,即n=1
break;//退出循環
}//得到一個10~100以內的隨機數
while(n<=20)//若計數器的值小於20,表示隨機數不夠
{
num=rand()%100;//產生一個0~99的隨機數
if(num<10)//若隨機數的值小於10則提前結束本次循環重新生成隨機數
continue;
if(max<num)//若新隨機數num的值大於max
max=num;//則將num的值賦給max
printf("%5d",num);//輸出num
n++;//將隨機數的計數器加1
}
printf(" max=%d",max);//輸出最大的隨機數
}