A. 關於c語言數組的傳遞
main()
{
int a[10];
read(a, 10);
wr(a, 10);
}
B. C語言函數間傳輸二維數組的問題。
# include <stdio.h>
int score[30][2],p,sum=0;
void Append();
void Toave(int score[]);
void SortScore(int number[],int score[]);
void SortNumber(int number[],int score[]);
void Sear(int number[],int score[]);
void Analysis(int number[],int score[]);
void List(int number[],int score[]);
int main()
{
int a;
while(1){
printf("1. Append record\n");
printf("2. Caculate total and average score of course\n");
printf("3. Sort in descending order by score\n");
printf("4. Sort in ascending order by number\n");
printf("5. Search by number\n");
printf("6. Statistic analysis\n");
printf("7. List record\n");
printf("0. Exit\n");
printf("Please enter your choice:");
scanf("%d",&a);
if(a==1)
{
Append();
}
if(a==2)
{
Toave(score);
}
if(a==3)
{
SortScore(score);
}
if(a==4)
{
SortNumber(score);
}
if(a==5)
{
Sear(score);
}
if(a==6)
{
Analysis(score);
}
if(a==7)
{
List(score);
}
if(a==0)
{
break;
}
}
return 0;
}
void Append()
{
int i;
printf("Please input the number of the students:");
scanf("%d",&p);
printf("Please input the ID and score of the students:\n");
for(i=0;i<p;i++)
{
scanf("%d %d",&score[i][i/2+1]; //i/2+1是什麼意思
}
}
void Toave() //這里不要參數,因為score[30][2]是全局變數。
{
int i;
for(i=0;i<p;i++)
{
sum=sum+score[i][2]; //這個錯誤,第二維數組是0,1,沒有2哦
}
printf("Total score is %d.\n",sum);
printf("Average score is %d.\n",sum/p);
}
C. C語言傳字元串數組
題目不夠詳細啊。給你解釋下什麼叫字元串數組吧
字元串數組就是一個數組,他的每一個元素都是一個字元串。
在c語言中字元串是以\0結尾的一串字元,如「abcd1234\0」
字元串數組str[2]={"abc\0","123\0"}
\0是結束符。字元串數組里的字元長度都為3
列印的時候只顯示abc,\0不顯示
D. 單片機C語言數組傳送,
加按鍵抬起檢測就可以了
if(temp!=0xf0)
{
temp=P3;
while(temp!=0x0f)//按鍵不抬起,一直讀P3
{
temp=P3;
temp=temp&0x0f;
}
switch(temp)
{
case 0xee:..........
我覺得還可以更簡單 while(P3!=0xfe);
E. c語言一維數組傳遞
輸入具體分數的那個函數裡面scanf裡面有\n,你在測試的時候,輸入一個份數後回車,它還要繼續執行for循環來判斷,所以不會立即產生結果,你在測試的時候,先輸入一個份數後回車換行,你再回車一下,看能不能輸出結果。這是我個人的理解,沒有實際操作,可能理解錯誤
F. 單片機里的C語言函數間的數組傳遞
sizeof(Logo) 計算出來的數值是字元數組Logo的長度加一(包括了字元串的結束字元'\0')之後減一就好理解了,即是計算字元數組Logo的長度。
另在這程序里sizeof(Logo) - 1 可以用函數strlen(Logo)代替 (需提示的是函數strlen是遇到'\0'結束的,因為這里你的Logo是加上code修飾的不用擔心會修改數組的某一內容為'\0'的情況,如在其他的地方用的需留意,免得會出現bug)
再提醒下sizeof(Logo) - 1 和 strlen(Logo)的一個重要的區別就是sizeof(Logo)是在編譯時就計算出數值;而strlen(Logo)是在運行時才調用函數來計算長度的,每用到一次都要調用一次函數,用sizeof(Logo)相對於strlen(Logo)可以節省程序執行的時間
G. c語言中數組參數傳遞
在vs2010中樓主的程序傳參沒有出現問題,注意輸出如果用printf的話,格式應為printf("%f",a[1][1]);
附測試代碼如下:
#define N 3
double Determinant(double a[][N],int n)
{
int i,j;
int R = 0;
printf("size a is %d\n",sizeof(a));//你會發現傳過來的只是其中一個一維數組a[][3],但是由於C的靈活性,可以通過指針訪問的方式來訪問其他內容。
for(i = 0;i<3;i++){
for(j = 0;j<3;j++){
printf("i is %d,j is %d,a is %f\n",i,j,a[i][j]);
}
}
return R;
}
int main(int argc, _TCHAR* argv[])
{
double a[3][3];
int i,j,k;
for(i = 0;i<3;i++){
for(j = 0;j<3;j++){
a[i][j] = (i+1)*j;
}
}
k = Determinant(a,3);
getchar();
return 0;
}
H. c語言數組如何在函數中傳遞不要指針傳遞
數組只能通過指針傳遞,不能通過值傳遞。
數組參數屬於指針參數,指針參數即時傳址參數(或叫引用參數), 如果想在函數中修改參數的值, 這是唯一的途徑.
如果把數組當作參數, 不管願意與否, 它就是指針, 指向第一個值的指針.
1. 數組參數就是指向第一個元素的指針: #include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
2. 乾脆直接聲明為指針: #include <stdio.h>
void getArr(int *p, int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int *p, int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
3. 即使你在形參中指定維數也不起作用: #include <stdio.h>
void getArr(int p[2], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[2], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
4. 既然是指針, 其值就有被修改的可能: #include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;
getArr(ns, sizeof(ns)/sizeof(ns[0]));
for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
p[i]++;
}
}
5. 如果是字元數組, 它自己能判斷數組尾界: #include <stdio.h>
void getArr(char p[]);
int main(void)
{
char ns[] = "ABCDEFG";
getArr(ns);
getchar();
return 0;
}
void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
}
}
I. 請問在C語言中,函數傳參時怎樣利用指針傳遞數組
數組名就是指針,例如:
#include <stdio.h>
voidpr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
(9)c語言傳輸協議數組擴展閱讀:
注意事項
非數組類的聲明盡量以指針的方式進行比較好。倘若一個指針指向的內存並不是一個數組,那麼採用數組名的聲明方式或許就會給人產生錯誤的引導。類似的,如果指向的是一個數組區域,則會給人以更加豐富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
與
int main(int argc,char** argv)
{
/* code here */
}
兩種方式完全等價,但是前面一種能夠更清晰地看出:這個參數是指向某個元素起始地址的指針,而後面的這種方式則不能夠直觀地看出這種含義。
J. c語言數組傳遞
char *s1,*s2;這里的s1,s2就是上面的substr(s1,s2)里的s1,s2啊,就是定義它的類型,即定義為指向char型的指針變數!
substr(*str1,*str2));這里函數調用不對吧,傳過去數組名就可以了,即substr(str1,str2));試試看吧