當前位置:首頁 » 編程語言 » c語言筆試題指針數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言筆試題指針數組

發布時間: 2022-06-29 09:39:09

A. c語言關於指針和數組的題

懶得開程序寫

提供點思路吧
先設定兩個整形變數分別用來儲存最大的元素以及其下標
然後用循環語句進行逐一判別大小
使的其中表示元素的大小的變數的值保持最大 同時使下標為對應下標

B. C語言關於指針指向數組的題,拜託詳細講解

應選B,p1+3相當於把p1往後移動三個整型元素的位置,即a[1][3],再用*輸出對應元素的值。

C. C語言選擇題,關於指針數組。求詳解

int a[2][3]; 定義了一個二維函數,每一維數組有三個元素。
int (*pt)[3]; 定義了一個數組指針,也就是定義了一個指向有三個元素的指針,即該指針,每次自加1,地址跳過三個int
pt=a; 就是讓pt指向a[0],注意a[0]是一個數組地址,裡面有三個元素
對於A選項,pt[0][0]是正確的,pt[0][0]等價於a[0][0]
對於B選項,不正確,因為pt+1就是a[1], *(pt+1)[2]相當於a[3][0]不對。
因為運算符優先順序,[]大於*,因此*(pt+1)[2]就是*pt[1+2] 也就是*a[1+2]。而*a[3]就等價於a[3][0]。越界了
改成(*(pt+1))[2]就對了,相當於a[1][2]
對於C選項,正確,*(pt[1]+2) 相當於a[1][2]
對於D選項,正確,*(a[0]+2)相當於a[0][2]

D. c語言指針數組相關的題

選D)編譯出錯。 s="abcd"; 錯了,s是數組名,不能為其整體賦值,只能整體初始化,寫成char s[6]="abcd";才可以。若不初始化,就只能一個一個賦值,如s[0]='a';s[1]='b';s[2]='c';s[3]='d';這樣或用一個循環來完成。

E. c語言指針數組題

A)int *b[ ]={1,3,5,7,9};//錯,指針必須是指向一 個可控的已知內存地址

B)int a[5], *num[5]={&a[0], &a[1], &a[2], &a[3], &a[4]};//正確

C)int a[ ]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]};//錯,和A一樣

D)int a[3][4], (*num)[4]; num[1]=&a[1][3];錯,num[1]步長為4,代表整行地址,而&a[1][3]是獲取a的每一行第四列的地址,是單一元素的地址

F. C語言指針與數組的題

#include<stdio.h>
#define n 3
#define m 5
void main()
{ int i=0,j=0,k;
char *str;
scanf("%s",str);
j=n+m-2;
for(i=n-1;i<n-1+m/2;i++) //第n個 字元開始,數組、指針第一個地址是從0開始,所以要n-1
{
k=*(str+i);
*(str+i)=*(str+j);
*(str+j)=k;
j--;
}
printf("%s\n",str);
}

G. 求助幾道c語言有關指針數組的題目

答案如下:第二題沒有給出矩陣C的取值方程,所以免答了……

  1. (a)The sky is the limit.

    (b) The sky is //前面是25個空

    (c) //運行將出錯

    (d) //編譯不會過.若"."是'.'的話輸出The sky is the limit

    (e)//編譯不會過.若""是''的話一行一個地輸出The sky is the limit.對應的ASCII十進制數

    (f) //有四處錯誤:1.strlen(string]應是strlen(string);2.=I應是='I';3.<=應是=,不然會產生溢出錯誤;4.printf(「%s 」,string[i]);似乎應為printf(「%s 」,string+i);。若無這些錯誤,則一行一行地、每一行從前面少一個字元地輸出The sky is the limit.,直到最後一行只輸出一個"."。

    (g) x

  2. 免答

  3. 代碼如下

//#include "stdafx.h"//vc++6.0加上這一行.

#include "stdio.h"

void main(void){

int a[11]={0},i,j;

for(a[1]=i=1;i<=10;i++){

for(j=i;j>=1;j--)

printf("%d ",a[j]=a[j-1]+a[j]);

printf(" ");

}

}

H. 關於C語言中指針數組的選擇題!

int k[2][3],*pk[3],k是一個2行3列的2維數組,pk是一個長度為3的數組指針,也就是有三個指針
關鍵就是pk數組元素是指針,那麼pk[0]=&k[1][2]把元素k[1][2]的地址給指針pk[0]賦值是正確的。
樓主可以參考下下面的意義
pk:長度為3的指針數組的地址
pk[i]:指針數組的元素,也就是一個指針
k:2行3列的2維數組的地址
k[i]:長度為3的數組的地址
k[i][j]:一個整形變數

I. 有趣的筆試題(關於C語言字元數組和字元指針)

這兩個都存在錯誤
先說不報錯的情況:第1個程序開設了長度為12的數組,並且在進入函數時初始化成了那個字元串。這時修改這個數組是ok的,但返回的指針的前提是被廢棄的p數組內容還沒被別的函數沖掉。一般不要返回函數自己定義的變數地址、數組,可以返回它們的值(只能一個),否則這個數組會在函數結束運行時被舍棄,普通這個數組可以從調用者那裡申請並將指針傳進來。
程序2錯誤的原因是,p只是一個指針變數,它沒有空間來存儲字元串,p被賦值成字元串首地址,但這個字元串是位於整個程序的常量區(例1在函數初始化時有個將常量區字元串復制到數組p的過程),而常量區是受保護的,只讀,試圖改變p指針指向的內容時會報錯,這個錯就是試圖修改常量類型的數據。而這個程序返回的p值,因為是指向常量區的,調用者是可以使用的,這個區域不存在失效問題。