本文目錄一覽:
C語言筆試題!求答案!另送100積分!
我看你前面帶答案了。我就做了最後兩個。我把整體的再給你發一遍!
1. 說說下列聲明的不同之處
char *a = “abc”;
char b[] = “abc”;
char c[3] = “abc”;
a是一個字元型指針變數,起內容為字元串」abc」的首地址,字元串」abc」存放在常量區。
b[ ]佔4個位元組,b[0]=』a』 ,b[1]= 『b』,b[2]=』 c』,[3]=』\0』
c[3]佔3個位元組,c[0]=』a』 ,c[1]= 『b』,c[2]= 『c』
2.以下為Windows NT下的32位C程序,請填空 。
例如:int i; long int j; char k; sizeof(i) = 4; sizeof(j) = 8; sizeof(k) = 1;
在32位系統下,整形所佔的位元組數是4。長整形所佔的位元組數是8,字元型所佔的位元組數是1。
(1)
typedef struct
{
int iPara1;
union
{
char iPara2[5];
int iPara3;
char iPara4;
} Params;
char cPara5;
char cPara6[12];
} TEST_INFO_T;
TEST_INFO_T stTestInfo;
請計算
sizeof (stTestInfo ) = 28
(這個答案我沒驗證,但是我感覺結構體的大小得看對齊位數是多少。正常對齊位數是4,可能不一樣的系統默認的設置不一樣。我記得我原來用的Solaris默認是8,你也可以自己改。)
(2)
void Func ( char str[3])
請計算
sizeof( str ) =4
(3)
void *p = malloc( strlen(「hello world」) );
請計算
sizeof ( p ) =4
(4)
char str[] = 「Hello」 ;
char *p = str ;
int n = 10;
請計算
sizeof (str ) =6
sizeof ( p ) =4
sizeof ( n ) =4
3. 請問運行此程序後,在終端上輸出的結果是什麼?
char acFileName_p[2][50]; /*全局變數,在整個程序運行期間有效*/
int FileExists(char* name)
{
int i;
for(i = 0; i 2; i++)
{
if( strcmp (( char*) name, (char*)acFileName_p [i] ) = = 0)
{
return 1;
}
}
return 0;
}
void CheckFileName(char *name)
{
static char suffix[3] = “_1”;
if( FileExists(name) )
{
if(suffix[1] != ‘1’)
{
name[strlen(name) – 2] = ‘\0’;
}
strcat(name, suffix);
suffix[1]++;
CheckFileName(name);
}
else
{
suffix[1] = ‘1’;
}
}
main
{
char cString1[50];
char cString2[50];
strcpy(acFileName_p[0], “test1”);
strcpy(cString1, “test1”);
strcpy(cString2, “test2”);
CheckFileName(cString1);
printf(“Output1 = %s\n”, cString1);
CheckFileName(cString2);
printf(“Output1 = %s\n”, cString2);
strcpy(acFileName_p[1], cString1);
CheckFileName(cString1);
printf(“Output1 = %s\n”, cString1);
}
答:
Output1 = test1_1
Output1 = test2
Output1 = test1_1_1
你的代碼有錯誤,最明顯的main函數你得加對小括弧啊!!!
4、請找出下面代碼中的所有錯誤
說明:以下代碼是把一個字元串倒序,如「abcd」倒序後變為「dcba」
(1)#include”string.h”
(2)main()
(3){
(4) char*src=”hello,world”;
(5) char* dest=NULL;
(6) int len=strlen(src);
(7) dest=(char*)malloc(len);
(8) char* d=dest;
(9) char* s=src[len];
(10) while(len–!=0)
(11) d++=s–;
(12) printf(“%s”,dest);
(13) return 0;
(14)}
我把改過的重新寫了一遍,
#include string.h
#include stdlib.h
#include stdio.h
int main()
{
char *src = “hello,world”;
char* dest =NULL;
int len = strlen(src);
dest = (char*)malloc(len);
char* d = dest;
char* s= src[len-1];
printf(“%s\n”,s);
printf(“%d\n”,len);
while(len–!=0){
*(d++) = *(s–);
}
printf(“%s\n”,dest);
free(dest);
dest=NULL;
return 0;
}
C語言筆試題一道
整形數字去減字元2, 等於 c 的 ASCII 值 減 字元2 的ASCII 值。
2743回車:
c = ‘2’, c-‘2’ 等於 0。進case 0: case 1:
打 ASCII 值 等於 c+4 的符號 ,就是符號6,
沒有 break; 進case 2:
打 ASCII 值 等於 c+4 的符號 ,就是 符號6,
break 了。
c = ‘7’, c-‘2’ 等於 5。沒case。退出開關。
c = ‘4’,c-‘2’ 等於 2。進case 2:
打 ASCII 值 等於 c+4 的符號 ,就是 符號8,
break 了。
c = ‘3’,c-‘2’ 等於 1。進case 1:
打 ASCII 值 等於 c+4 的符號,就是 符號7,
沒有 break; 進case 2:
打 ASCII 值 等於 c+4 的符號 ,就是 符號7,
break 了。
回車,滿足 while 跳出條件,做最後的printf(“\n”)
結果是:
66877
關於C語言筆試的幾道題
printf(….. B*2)
而B是什麼?是(AA+2)-2
那麼也就是(AA+2)-2*2 而你的2*((AA+2)-2) 人家又沒有破號,你自己給他加一個上去,這能沒問題嗎?這沒什麼原理,是規定,是邏輯,想不通沒關係,這種樣的宏初級編程用不上,等你到達高級程度了也就自己會理解的了。
展開後是(AA+2)-2*2 並不是2*((AA+2)-2)
乘法當然比減法優先了,先乘後減。。。。。。。
第一題
首先定義了宏 A 他的值是10 實際上可以當成int a=10;
然後#define B (AA+2)-2
實際上也就是#define B (1010+2)-2
首先算術運算符比關係運演算法優先高就變成了 (1012)-2,然後1012條件是真,為1,變成了 1-2 由於printf(“%d”,B*2); 又變成了 1-2*2 結果1-4=-3;
第二題
這個二維數組分解開來就是 a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4,a[2][0]=5,a[2][1]=6, 這個二維數組是三行,二列,行的下標有0,1,2,列的下標有0,1 你的a[1][2]越界了。
第三題並不是單純的用box 的長度去和boss比較,而是acsii表裡的值去減,首先 b和b比,相等,會自動看下一個,o和o比,任然相等,然後x和s比,在acsii里x是120而s是115,所以box大,至於boss最後多出的s就不管了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236094.html