1樓:匿名使用者
結果肯定是0了,首先a宣告為static,因此初始化為0a[8][8] = ,,
,,,,
,};迴圈後得到
a[8][8] = ,,
,,,,
,};但這些都不重要,因為for迴圈後,j的值為3,因此最後一個for迴圈是
x = a[0][3] + a[1][3] + a[2][3] + a[3][3] + a[4][3] + a[5][3] + a[6][3] + a[7][3]
= 0+0+0+0+0+0+0+0= 0
2樓:
int i,jx=0;
static int a[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j; //將矩陣左上角的9個元素賦值012,234,456,其餘元素為0
for(i=0;i<8;i++) //這裡計算第0-7行的第j個單元的累加(即第j列的累加)
x+=a[i][j]; //因為之前的賦值迴圈結束後j = 3,所以第累加的是第3列,但第3列沒有賦值,全部為0,最終累加結果為0;
printf("%d",x);
如果要計算
012234
456這個矩陣的某列累加,應在計算前先賦值j(j = 0、1、2)。
3樓:只為你解決
給出習題的題目,不明白你這段**要用來完成什麼樣的計算。
4樓:匿名使用者
x+=a[i][j]; 這裡的j 是3 a[3] 沒有賦值一直為0
c語言程式設計題,幫忙解決一下思考題,急!!!!
5樓:不願相離
1、在定義二維陣列時就已經給陣列分配好了地址,不需要初始化也可以顯示地址
2、根據顯示地址可以看出每個元素佔4位元組
6樓:愛
不對陣列初始化也可以達到目的,定義一個二維陣列只不過也是在系統記憶體中開內闢一系容列連續的記憶體空間而已,初始化的作用僅僅是給這些記憶體空間賦值(即將資料儲存在這些記憶體空間中)。
根據顯示的地址可以判斷元素所佔的記憶體單元。隨便找出兩個相鄰的輸出的地址,後面的地址減去前面的地址(注意地址是用16進位制記錄的)後,所得結果就是每個元素記憶體所佔有的位元組數了(題目是int 型,所以計算結果應該是4)。
(by the way:比如題目已經說了是int 型的陣列,那麼每一個int 型的空間所佔有的記憶體都是4個位元組(int b[n1][n2]的每一個元素都是int 型),你只需要用最後一個元素地址減去第一個元素地址後除以每一個元素記憶體空間的所佔位元組數(這裡int 是4)即可得到(n1+n2)-1的值。)
再說一下,二維陣列可以理解為陣列的陣列,就是一個一維陣列的每一個元素都是一個陣列。
c語言誰能幫我寫個for迴圈給二維陣列賦值
7樓:弈軒
如圖註釋非常完整,**請在網頁端檢視(哪有用手機看**的,不好看)
8樓:匿名使用者
直接寫不就好了,別用迴圈了。
9樓:聽不清啊
#include
int a[25][25];
int main()
{int i,j,k,k1;
for(i=0;i<25;i++)
{for(j=0;j<25;j++)
{k=i<12?i:24-i;
k1=j<12?j:24-j;
if(k1
c語言陣列的定義
10樓:打孃胎裡喜歡你
c語言支援一維陣列和多維陣列。如果一個陣列的所有元素都不是陣列,那麼該陣列稱為一維陣列。
在c語言中使用陣列必須先進行定義,一維陣列的定義方式為:型別說明符; 陣列名 ;[常量表示式]。
其中,型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號,方括號中的常量表示式表示資料元素的個數,也稱為陣列的長度。例如:
int a[10]; /* 說明整型陣列a,有10個元素 */
float b[10], c[20]; /* 說明實型陣列b,有10個元素,實型陣列c,有20個元素 */
char ch[20]; /* 說明字元陣列ch,有20個元素 */
對於陣列型別說明應注意以下幾點:
1、陣列的型別實際上是指陣列元素的取值型別。對於同一個陣列,其所有元素的資料型別都是相同的。
2、陣列名的書寫規則應符合識別符號的書寫規定。
3、陣列名不能與其它變數名相同。例如:
int a;
float a[10];
是錯誤的。
4、方括號中常量表示式表示陣列元素的個數,如a[5]表示陣列a有5個元素。但是其下標從0開始計算。因此5個元素分別為a[0], a[1], a[2], a[3], a[4]。
5、不能在方括號中用變數來表示元素的個數,但是可以是符號常數或常量表示式。例如:
#define fd 5
// ...
int a[3+2],b[7+fd];
是合法的。但是下述說明方式是錯誤的。
int n=5;
int a[n];
6、允許在同一個型別說明中,說明多個陣列和多個變數。例如:
int a,b,c,d,k1[10],k2[20];
11樓:文化廚子
一般有四種陣列定義方式,以一維陣列為例:
//定義指定維數的陣列
int arr[10];
//定義不指定維數的陣列,陣列維數有初化列表元素個數決定。
int arr = ;
//定義指定維數的陣列,初始化不完全時,系統將未初始化元素初始化為0int arr[10] = ;
//動態分配一個陣列。下面分配了一個有10個元素的陣列。
int *arr =(int *) malloc(10 * sizeof(int));
12樓:帆帆
元素型別名 陣列名[元素個數] 定義一個包含十個int型元素的陣列,陣列名為arr:int arr[10];//int為元素的型別,不是陣列的型別,陣列是int[10]型別的。
動態陣列與靜態陣列的對比對於靜態陣列,其建立非常方便,使用完也無需釋放,要引用也簡單,但是建立後無法改變其大小是其致命弱點!
對於動態陣列,其建立麻煩,使用完必須由程式設計師自己釋放,否則嚴重會引起記憶體洩露。但其使用非常靈活,能根據程式需要動態分配大小。
如何構建動態陣列遵循原則
申請的時候從外層往裡層,逐層申請;
釋放的時候從裡層往外層,逐層釋放。
構建所需指標對於構建一維動態陣列,需要一維指標;
對於二維,則需要一維,二維指標;
三維需要一,二,三維指標;
依此類推。
c語言程式設計:求二維陣列中第一個最大元素值及其行列號 說明:先輸入n,n為行數和列數。
13樓:風若遠去何人留
比如用max_i max_j
來儲存最大行列號
在比較替換的時候 不要用》= 而用大於。
比如if(a[i][j]>a[max_i][max_j]) i=max_i, j=max_j;
如果這裡用》= 那就是最後一個
用》就是第一個。
14樓:愛你飛天夢
什麼叫第一個最大值????
第一個空為什麼是m?c語言程式設計。順便解答一下對於二維陣列,陣列名跟著一箇中括號,表示的是什麼?
15樓:匿名使用者
這裡用到的是陣列指標
二維陣列為x[n][m]
每行m個元素
定義指向這個陣列的數內組指標就需要 char (*ss)[m];
呼叫容後 x和ss等效
迴圈按行迴圈 所以第二個空是n
陣列名跟著一箇中括號
對於二維陣列來說, 是對應行的首地址。 比如 x[1]就是第二行的首地址
c語言程式設計考題
16樓:匿名使用者
第五題應該是對的,字元陣列的值是用單引號引起來的,而字串是用雙引號的,還有,假如定義a[3],如果當字元陣列來用,可以存放3個值,例如a[0]='1',a[1]='2',a[2]='3',如果當字串來用,則只能存放2個字元,因為還有個結束標誌,如:a="ds";
第六題應該是錯的,應該用file來表示,c語言是區分大小寫的!
17樓:匿名使用者
嗯.答案是這樣的:
1.對 2.錯 3.錯 4.錯 5.錯 6.對 7.對 8.錯 9.對 10.錯
要是有那道題不明白..可以求助問我.我幫你解釋..
18樓:匿名使用者
第十題能不能不能講一下 剛學習c語言
c語言程式設計(12)
19樓:匿名使用者
第一處填空,是個三重迴圈:
for(i=0;ia[i][k])
表示,如果i%2==1(即i是奇數行標),則採用a[i][j]a[i][k]這個判斷條件
這樣就能實現偶行從小到大排序,奇行從大到小排序咯
*********************************************
1 outarr(aa);
這樣是把陣列的地址當作實參傳遞過去,而,形參是這樣
void outarr(int a[n][n])
這說明白形參是接受的陣列的值啊???
這是怎麼回事?
這裡不是按地址傳遞,定義void outarr(int a[n][n])表示的是按陣列整個傳遞,並且陣列做為引數傳遞有個特點,就是一定是按引用傳遞
知道什麼是按引用傳遞嗎?簡單理解,就是在函式裡面,對該引數的修改,會影響主函式中該引數的值
2 在主函式中
陣列的定義是這樣的
int aa[n][n]
表示未知行和列
但初始化又是這樣
int aa[n][n]=,,,};
這樣能算對嗎?
這裡陣列的定義不是未知行和列
我們語庋規則規定,陣列定義,必須用明確定義行列的數目
其實這裡的n不是一個變數,而已經變成一個數字了,看上面的定義:
#define n 4
這一句定義,等於告訴編譯器,每逢碰到n,就把它換成4的意思
那麼其實陣列定義就是int aa[4][4]
3 第一個被調函式
void sort(int a[n])
它裡面省略的行,我知道,二維陣列可以這麼寫,但,在這個被調函式中,要使用到行數啊,它不給出,後面,怎麼計算呢?
這個程式中,行數n在前面已經定義了
在整個程式的過程中,n不是一個變數,而是表示數字4!!
20樓:匿名使用者
for(k=_0_________;ka[i][k])#define n 4
#include "stdio.h"
void sort(int a[n]) }void outarr(int a[n][n])} main()
,,,};
outarr(aa);/* 以矩陣的形式輸出二維資料 */sort(aa);
outarr(aa);
} 這是完全修改可用的程式 我自己試過了原來的錯誤也改了 你自己體會吧
21樓:
傳遞的是陣列的地址.
一開始你就用語句(#define n 4)說明了n的值.因此int aa[n][n]=,,,}; 沒錯.
被調函式中,要使用到行數,程式中已用for語句來控制.for語句中的i就是用來控制行數的.
22樓:萌噠牛
1 outarr(aa);
這樣是把陣列的地址當作實參傳遞過去,而,形參是這樣void outarr(int a[n][n])這接受的是形參的地址,可明白!
2 在主函式中
陣列的定義是這樣的
int aa[n][n]
表示未知行和列
但初始化又是這樣
int aa[n][n]=,,,};
這樣能算對嗎?
不對,因為n要是數字常量,你上面用巨集定義了 #define n 4 才正確,你又可明白
3 第一個被調函式
void sort(int a[n])
它裡面省略的行,我知道,二維陣列可以這麼寫,但,在這個被調函式中,要使用到行數啊,它不給出,後面,怎麼計算呢?
你上面用巨集定義了 #define n 4 ,你又可明白??
上面源程式如下必後完全正確:
#define n 4
void sort (int a[n])
}void outarr (int a[n][n])}main()
幫我下C語言 程式設計答案寫下,幫我下 ,C語言 程式設計 答案寫下
愛夜 formalue 中綴表示式 desc 目標 void convert char formalue,char desc 模擬棧 unsigned int stack p 0 棧指標while formalue if formalue if formalue stack p 丟棄 formalu...
從C語言到程式設計,從C語言到程式設計
你所學的c語言只是一些基礎的語法,離真正的程式設計還差很多,在學校裡學的都只是語法而已,要想繼續從事程式設計,就應該往深度上發展,你可以看一些計算機程式設計方面的書,給你介紹幾本,visual c 專案開發例項自學手冊 1cd visual c 從入門到精通 我就是看這兩本書學習的,他們還提供技術支...
C語言程式設計,C語言程式設計
很多程式都是非常簡單的 1.輸入2個正整數m和n,求其最大公約數和最小公倍數 include include int main 3.程式設計計算從1到10各數階乘的和,即1 2 3 9 10 的和 include int main void printf 1到10各數階乘的和 d n sum ret...