⑴ c語言數組題
#include<stdio.h>
#include<algorithm> //rand()要用到該頭文件
int main()
{
int i,j;
int a[5][6];
for(i=0;i<5;i++)
for(j=0;j<6;j++)
a[i][j]=rand()%100; //隨機數生成
int max=-1;
int row=0;
int col=0;
printf("二維數組為:\n");
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
printf("%d ",a[i][j]);
if(max<a[i][j])
{
max=a[i][j]; //找最大
row=i;
col=j;
}
}
printf("\n");
}
printf("最大數為: %d 行號:%d 列號:%d\n",max,row+1,col+1);
system("pause"); //讓屏幕停下來
return 1;
}
⑵ C語言數組問題
char *p[2]是一個指針數組,*p[0], *p[1]兩個元素,編譯之後是兩個地址值。
p[i]=ch[i]中,是指針操作,也就是地址操作。ch[i]是一個多位元組的首地址,編譯後值為數組元素的地址ch[i][0]。
而這里p[i][j]這樣的引用,會被編譯器檢查的,因為有p[i]=ch[i]這樣的賦值,所以,p[0],p[1]兩個指針被初始化指向了ch[0]和ch[1]兩個數組,引用p[i][j]就不會出現問題。
如果是p[0] = &intA,即把指針初始化成某個變數的地址,那麼編譯器就不會容許p[i][j]的訪問方式。
你可以嘗試p[0]=ch[0][0],這樣的表達是否可以呢。
如果是p[0] = &ch[0][0]這樣呢,
而((char *)p[0])[0]這樣的引用方式呢?
C語言可以將任何值作為地址值,也可以將任何地址(指針)轉換成任何類型(包括結構體和對象)而加以引用,這是為了更加靈活地操作從某個地址開始的N個位元組的數據,而怎樣解釋這些數據(數據類型)完全取決於程序的需要。
⑶ C語言數組問題,書中說,數組初始化,不能給跳過每行前面的元素而給後面的元素賦值什麼意思
舉個例子吧,比如說申請並初始化一個數組num[10]={1,2},這是數組有10個元素,但是你初始化的時候只給了兩個數值,那麼默認就是前兩個元素的值,不能跳過前面的給後面的賦值
⑷ C語言數組的編程!!很簡單的!!
#include<stdio.h>
#include<math.h>
void Calculation()
{
int a[10];
int i,j,num,sum,t,k;
t=1;
sum=0;
printf("Please enter an integer:\n");
scanf("%d",&num);
j=(int)(log10(num)+1);
k=j;
while(k>1)
{
t=t*10;
k--;
}
for(i=j;i>0;i--)
{
a[i-1]=num/t;
num=num-a[i-1]*t;
t/=10;
sum+=a[i-1];
}
printf("sum is:%d\n",sum);
}
void main()
{
int i;
for(i=0;i<2;i++)
Calculation();
}
⑸ C語言: 如何實現從數組A裡面,過濾掉任意數量的元素,然後將剩餘的元素,復制到數組B 詳細點
這個比較容易。
首先你數組的大小你自己知道,就假設容量A、B為100吧;
其次你需要一個指向A的指針;
再次假設你需要過濾A中50個元素,你得知道從什麼位置開始過濾吧;
的判斷過濾的位置加上過濾的數量超過總量沒有吧。
指針不斷++;復制值到B中,知道遇到過濾的開始的位置。指針繼續++,將要過濾的數量的值一一跳過,不復制進入B.
⑹ C語言數組問題
開始 是 1 2 3 4 5 6 7 8 9 10 輸出 a[9-0] 即 10、 (i = 0)
然後 a[0] 和 a[9-0]交換
交換後是 10 2 3 4 5 6 7 8 9 1 輸出 a[9-1]即 9 (i=1)
然後 a[1] 和 a[9-1]交換
交換後是 10 9 3 4 5 6 7 8 2 1 輸出 a[9-2]即 8 (i=2)
然後 a[2] 和 a[9-2]交換
交換後是 10 9 8 4 5 6 7 3 2 1 輸出 a[9-3]即 7 (i=3)
然後 a[3] 和 a[9-3]交換
交換後是 10 9 8 7 5 6 4 3 2 1 輸出 a[9-4]即 6 (i=4)
然後 a[4] 和 a[9-4]交換
交換後是 10 9 8 7 6 5 4 3 2 1 輸出 a[9-5]即 6 (i=5)
然後 a[5] 和 a[9-5]交換
交換後是 10 9 8 7 5 6 4 3 2 1 輸出 a[9-6]即 7 (i=6)
然後 a[6] 和 a[9-6]交換
交換後是 10 9 8 4 5 6 7 3 2 1 輸出 a[9-7]即 8 (i=7)
然後 a[7] 和 a[9-7]交換
交換後是 10 9 3 4 5 6 7 8 2 1 輸出 a[9-8]即 9 (i=8)
然後 a[8] 和 a[9-8]交換
交換後是 10 2 3 4 5 6 7 8 9 1 輸出 a[9-9]即 10 (i=9)
然後 a[9] 和 a[9-9]交換
交換後是 1 2 3 4 5 6 7 8 9 10
退出 完畢。
不知道是否能幫助到你
要輸出10到一
把
for(i=0;i<10;i++)
{
printf("%d\n",a[9-i]);
temp=a[9-i]; // 把這里去掉
a[9-i]=a[i];//把這里去掉
a[i]=temp;//把這里去掉
}
⑺ C語言數組問題
數組a[5],意思是數組名為:a,數組中一共有5個元素。每個元素是從下標0開始,依次為:a[0]、a[1]、a[2]、a[3]、a[4],記住如果你聲明了數組,比如:int a[5],那麼你就不能操作a[5]=5 或者a[6]=12等等之類的。因為數組一共有5個元素,那麼它的下標最多到a[4]=xx。如果你寫:a[5]=xx,編譯器就會告訴你下標越界了。
⑻ 簡單的c語言數組問題
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta[10];//需要定義數組a[]
inti,n;
printf("Inputn(n<=10):");
scanf("%d",&n);
printf("Input%dNumbers: ",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
intmax,min,ma,mi;
max=a[0];min=a[0];
ma=0;
mi=0;//下標mi和ma要初始化
for(i=0;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
ma=i;
}
if(a[i]<min)
{
min=a[i];
mi=i;
}
}
a[ma]=a[mi];
a[mi]=max;
printf("AfterMaxMinExchange: ");
for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
printf(" ");
return0;//函數intmain()需要返回值
}
⑼ C語言 二維數組初始化 可以跳過一整行嗎
1.親測VC++6.0不能通過:見圖片
3.也就是說:不可以VC++6.0不能跳過一行初始化,但可以對想跳過的一行用{0}全部賦0值。
4.建議:編譯器和實踐哦是最好的老師,其實絕大部分的問題可以直接通過實踐和編譯器找出錯誤,而且這比請教別人更有幫助,並且印象也更深。