又大又粗又硬又爽又黄毛片,国产精品亚洲第一区在线观看,国产男同GAYA片大全,一二三四视频社区5在线高清

當(dāng)前位置:網(wǎng)站首頁 >> 作文 >> 最新c語言基礎(chǔ)筆試題(十一篇)

最新c語言基礎(chǔ)筆試題(十一篇)

格式:DOC 上傳日期:2023-01-10 14:00:05
最新c語言基礎(chǔ)筆試題(十一篇)
時間:2023-01-10 14:00:05     小編:zdfb

范文為教學(xué)中作為模范的文章,也常常用來指寫作的模板。常常用于文秘寫作的參考,也可以作為演講材料編寫前的參考。那么我們該如何寫一篇較為完美的范文呢?接下來小編就給大家介紹一下優(yōu)秀的范文該怎么寫,我們一起來看一看吧。

c語言基礎(chǔ)筆試題篇一

a:本程序的main函數(shù)開始,到main函數(shù)結(jié)束

b:本程序文件的第一個函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束

c:本程序的main函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束

d:本程序文件的第一個函數(shù)開始,到本程序main函數(shù)結(jié)束

2.[單選題]在c語言中,要求運算數(shù)必須是整型的運算符是( d )

a:/

b:++

c:!=

d:%

3.[單選題]c語言中,邏輯“真”等價于( c )

a:大于零的數(shù)

b:大于零的整數(shù)

c:非零的數(shù)

d:非零的整數(shù)

4.[單選題]若希望當(dāng)a的值為奇數(shù)時,表達式的值為“真”,a的值為偶數(shù)時,表達式的值為“假”。則以下不能滿足要求的表達式為( c )

a:a%2 == 1

b:! (a%2==0)

c:! (a%2)

d:a%2

5.[單選題]以下程序的運行結(jié)果是( b )。

int main( void ){

int m = 5;

if ( m++ > 5) printf(“%d/n”, m);

else printf(“%d/n”, --m);

}

a:4

b:5

c:6

d:7

6.[單選題]以下對一維整型數(shù)組a的正確說明是( d )

a:int a(10)

b:int n = 10, a[n]

c:int n

scanf(“%d”, &n)

int a[n]

d:#define size 10

int a[size]

7.[單選題]若有說明:int a[3][4];則對a數(shù)組元素的非法引用是( d )

a:a[0][2*1]

b:a[1][3]

c:a[4-2][0]

d:a[0][4]

c語言基礎(chǔ)筆試題篇二

1.[單選題]下面程序的功能是將已按升序排好序的兩個字符串a(chǎn)和b中的字符,按升序歸并到字符串c中,請為程序中的空白處選擇適當(dāng)?shù)恼Z句。第二空答案( d )

#include

int main(void)

{

char a[ ] = “acegikm”;

char b[ ] = “bdfhjlnpq”;

char c[80], *p;

int i = 0, j= 0, k = 0;

while( a[i] != /0 && b[j] != ‘/0 )

{

if ( a[i] < b[j] ) { ( ① ) }

else { ( ② ) }

k++;

}

c[k] = ‘/0;

if ( ③ ) p = b + j;

else p = a + i;

strcat ( c , p );

puts ( c );

}

a:c[k] = a[i]; i++

b:c[k] = b[j]; i++

c:c[k] = a[i]; j++

d:c[k] = b[j]; j++

2.[單選題]在一個c源程序文件中,若要定義一個只允許本源文件中所有函數(shù)使用的全局變量,則該變量需要使用的存儲類別是( d )

a:extern

b:register

c:auto

d:static

3.[單選題]以下程序的正確運行結(jié)果是( d )。

#include

int f(int a);

int main(void)

{

int a = 2, i;

for( i = 0; i < 3; i++ ) printf(“%4d”,f(a));

}

int f(int a)

{

int b = 0;

static int c = 3;

b++; c++;

return(a+b+c);

}

a:7 7 7

b:7 10 13

c:7 9 11

d:7 8 9

4.[單選題]以下程序的運行結(jié)果為( b )。

void sub(int x, int y, int *z)

{ *z = y - x ; }

int main(void)

{

int a,b,c ;

sub(10, 5, &a) ;

sub(7, a, &b) ;

sub(a, b, &c) ;

printf( “%4d,%4d, %4d/n”,a,b,c);

}

a:5, 2, 3

b:-5, -12, -7

c:-5, -12, -17

d:5, -2, -7

5.[單選題]有如下語句int a = 10, b = 20, *p1, *p2; p1 = &a p2 = &b變量與指針的關(guān)系如圖1所示;若要實現(xiàn)圖2所示的存儲結(jié)構(gòu),可選用的賦值語句為( 沒圖 可能是 b或a )

a:*p1 = *p2

b:p1 = p2

c:p1 = *p2

d:*p1 = p2

6.[單選題]若已建立下面的鏈表結(jié)構(gòu),指針p、q分別指向圖中所示結(jié)點,則不能將q所指的結(jié)點插入到鏈表末尾的一組語句是( )

a:q -> next = null; p = p -> next; p -> next = q

b:p = p -> next; q -> next = p -> next; p -> next = q

c:p = p -> next; q -> next = p; p -> next = q

d:p = (*p).next; (*q).next = (*p).next; (*p).next = q

7.[單選題]以下程序的功能是:讀入一行字符(如:a,b,... y,z),按輸入時的逆序建立一個鏈接式的結(jié)點序列,即先輸入的位于鏈表尾(如下圖),然后再按輸入的相反順序輸出,并釋放全部結(jié)點。請在空白處為程序選擇適當(dāng)?shù)拇a。 第一空答案( b )

#include

#define getnode(type) ① malloc(sizeof(type))

int main(void)

{

struct node{

char info;

struct node *link;

}*top,*p;

char c;

top = null;

while( ( c = getchar( ) ② )

{

p = getnode ( struct node );

p -> info = c;

p -> link = top;

top = p;

}

while ( top )

{

③ ;

top = top -> link;

putchar ( p -> info );

free ( p );

}

}

a:(type)

b:(type *)

c:type

d:type *

8.[單選題]以下程序的功能是:讀入一行字符(如:a,b,... y,z),按輸入時的逆序建立一個鏈接式的結(jié)點序列,即先輸入的位于鏈表尾(如下圖),然后再按輸入的相反順序輸出,并釋放全部結(jié)點。請在空白處為程序選擇適當(dāng)?shù)拇a。第二空答案(d )

#include

#define getnode(type) ① malloc(sizeof(type))

int main(void)

{

struct node{

char info;

struct node *link;

}*top,*p;

char c;

top = null;

while( ( c = getchar( ) ② )

{

p = getnode ( struct node );

p -> info = c;

p -> link = top;

top = p;

}

while ( top )

{

③ ;

top = top -> link;

putchar ( p -> info );

free ( p );

}

}

a:==/0

b:!=/0

c:==/n

d:!=/n

9.[單選題]以下程序的功能是:讀入一行字符(如:a,b,... y,z),按輸入時的逆序建立一個鏈接式的結(jié)點序列,即先輸入的位于鏈表尾(如下圖),然后再按輸入的相反順序輸出,并釋放全部結(jié)點。請在空白處為程序選擇適當(dāng)?shù)拇a。第三空答案( b)

#include

#define getnode(type) ① malloc(sizeof(type))

int main(void)

{

struct node{

char info;

struct node *link;

}*top,*p;

char c;

top = null;

while( ( c = getchar( ) ② )

{

p = getnode ( struct node );

p -> info = c;

p -> link = top;

top = p;

}

while ( top )

{

③ ;

top = top -> link;

putchar ( p -> info );

free ( p );

}

}

a:top = p

b:p = top

c:p == top

d:top == p

10.[單選題]以下程序的輸出結(jié)果是( c )

#include

#define m 5

#define n m+m

main

{

int k;

k=n*n*5; printf(“%d/n”,k);

}

a:500

b:125

c:55

d:100

c語言基礎(chǔ)筆試題篇三

1.[單選題]若二維數(shù)組a有m列,則計算任一元素a[i][j]在數(shù)組中位置的公式為( a )

a:i * m + j

b:j * m + i

c:i * m + j - 1

d:i * m + j + 1

2.[單選題]以下程序的功能是將字符串s中所有的字符c刪除,那么空白處缺少的語句為:( a )。

#include

int main(void)

{

char s[80] ;

int i, j ;

gets(s) ;

for ( i = j = 0 ; s [i] != ‘/0 ; i++ )

if ( s [i] != ‘c )

;

s [ j ] = ‘/0 ;

puts ( s ) ;

return 0 ;

}

a: s [ j++] = s [ i ]

b:s [ ++j ] = s [ i ]

c:s [ j ] = s [ i ]; j++

d:s [ j ] = s [ i ]

3.[單選題]下面程序的功能是將已按升序排好序的兩個字符串a(chǎn)和b中的字符,按升序歸并到字符串c中,請為程序中的空白處選擇適當(dāng)?shù)恼Z句。 第一空答案( a )

#include

int main(void)

{

char a[ ] = “acegikm”;

char b[ ] = “bdfhjlnpq”;

char c[80], *p;

int i = 0, j= 0, k = 0;

while( a[i] != /0 && b[j] != ‘/0 )

{

if ( a[i] < b[j] ) { ( ① ) }

else { ( ② ) }

k++;

}

c[k] = ‘/0;

if ( ③ ) p = b + j;

else p = a + i;

strcat ( c , p );

puts ( c );

}

a:c[k] = a[i]; i++

b:c[k] = b[j]; i++

c:c[k] = a[i]; j++

d:c[k] = a[j]; j++

c語言基礎(chǔ)筆試題篇四

1.編寫my_strcpy函數(shù),實現(xiàn)與庫函數(shù)strcpy類似的功能,不能使用任何庫函數(shù);

答:char *strcpy(char *strdest, const char *strsrc)

{

if ( strdest == null || strsrc == null)

return null ;

if ( strdest == strsrc)

returnstrdest ;

char *tempptr = strdest ;

while( (*strdest++ = *strsrc++) != ‘’);

returntempptr ;

}

2. 頭文件中的ifndef/define/endif的作用?

答:防止該頭文件被重復(fù)引用。

3. #i nclude與#i nclude “file.h”的區(qū)別?

答:前者編譯器從標(biāo)準(zhǔn)庫路徑開始搜索file.h,而后者編譯器從用戶的工作路徑開始搜索file.h。

4. 在c++ 程序中調(diào)用被c 編譯器編譯后的函數(shù),為什么要加extern“c”?

答:extern是c/c++語言中表明函數(shù)和全局變量作用范圍(可見性)的關(guān)鍵字,其聲明的函數(shù)和變量可以在本模塊或其它模塊中使用。

通常,在模塊的頭文件中對本模塊提供給其它模塊引用的函數(shù)和全局變量以關(guān)鍵字extern聲明。

5. 面向?qū)ο蟮娜齻€基本特征,并簡單敘述之?

答:1)封裝:將客觀事物抽象成類,每個類對自身的數(shù)據(jù)和方法實行protection(private, protected,public)

2)繼承:實現(xiàn)繼承(指使用基類的屬性和方法而無需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實現(xiàn)代碼)、接口繼承(僅使用屬性和方法,實現(xiàn)滯后到子類實現(xiàn))。

3)多態(tài):允許將子類類型的指針賦值給父類類型的指針。

6. 重載(overload)和重寫(overried,有的書也叫做“覆蓋”)的區(qū)別?

答:從定義上來說:

重載:是指允許存在多個同名函數(shù),而這些函數(shù)的參數(shù)表不同(或許參數(shù)個數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。

重寫:是指子類重新定義復(fù)類虛函數(shù)的方法。

從實現(xiàn)原理上來說:

重載:編譯器根據(jù)函數(shù)不同的參數(shù)表,對同名函數(shù)的名稱做修飾,然后這些同名函數(shù)就成了不同的函數(shù)。

重寫:當(dāng)子類重新定義了父類的虛函數(shù)后,父類指針根據(jù)賦給它的不同的子類指針,動態(tài)的調(diào)用屬于子類的該函數(shù),這樣的函數(shù)調(diào)用在編譯期間是無法確定的(調(diào)用的子類的虛函數(shù)的地址無法給出)。

7. 多態(tài)的作用?

答:主要是兩個:1)隱藏實現(xiàn)細節(jié),使得代碼能夠模塊化;擴展代碼模塊,實現(xiàn)代碼重用;2)接口重用,為了類在繼承和派生的時候,保證使用家族中任一類的實例的某一屬性時的正確調(diào)用。

8. 分別寫出bool,int,float,指針類型的變量a 與“零”的比較語句。

答:bool :if ( !a ) or if(a)

int :if ( a ==0)

float :const expression exp = 0.000001

if ( a < exp && a >-exp)

pointer : if ( a != null) or if(a == null)

9. 請說出const與#define 相比,有何優(yōu)點?

答案:1) const 常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進行類型安全檢查。而對后者只進行字符替換,沒有類型安全檢查,并且在字符替換可能會產(chǎn)生意料不到的錯誤。

2) 有些集成化的調(diào)試工具可以對const 常量進行調(diào)試,但是不能對宏常量進行調(diào)試。

10.簡述數(shù)組與指針的區(qū)別?

數(shù)組要么在靜態(tài)存儲區(qū)被創(chuàng)建(如全局數(shù)組),要么在棧上被創(chuàng)建。指針可以隨時指向任意類型的內(nèi)存塊。

(1)修改內(nèi)容上的差別

char a = “hello”;

a[0] = ‘x’;

char *p = “world”; // 注意p 指向常量字符串

p[0] = ‘x’; // 編譯器不能發(fā)現(xiàn)該錯誤,運行時錯誤

(2) 用運算符sizeof 可以計算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p 為指針得到的是一個指針變量的字節(jié)數(shù),而不是p 所指的內(nèi)存容量。c++/c 語言沒有辦法知道指針?biāo)傅膬?nèi)存容量,除非在申請內(nèi)存時記住它。注意當(dāng)數(shù)組作為函數(shù)的參數(shù)進行傳遞時,該數(shù)組自動退化為同類型的指針。

char a = “hello world”;

char *p = a;

cout< cout< 計算數(shù)組和指針的內(nèi)存容量

voidfunc(char a[100])

{

cout< }

c語言基礎(chǔ)筆試題篇五

1.變量的聲明和定義有什么區(qū)別?

答:聲明變量不分配空間,定義變量要分配空間。聲明主要是告訴編譯器,后面的引用都按聲明的格式。定義其實包含了聲明的意思,同時要分配內(nèi)存空間。

2. 解釋堆和棧的區(qū)別。

答:堆(heap)——一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時可能由os回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表。速度比較慢,而且容易產(chǎn)生內(nèi)存碎片,不過用起來最方便。

棧(stack)——由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。由系統(tǒng)自動分配,速度較快。但程序員是無法控制的。

3. const的作用是什么?

答:(1)可以定義const常量

(2)const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const修飾的東西都受到強制保護,可以預(yù)防意外的變動,能提高程序的健壯性。

4. 下列哪兩個是等同的

int b;

a constint* a = &b //指向常量的指針,不能通過指針改變b,但指針的地址可以改變。

b const* int a = &b// 指針的地址不可以改變,但可以通過指針改變b的值

c constint* const a = &b //指針指向的值,和指針本身的地址都不能改變

d intconst* const a = &b//與c相同

5. 完成程序,實現(xiàn)對數(shù)組的降序排序

#include

void sort(int array );

int main

{

int array={45,56,76,234,1,34,23,2,3}; //數(shù)字任//意給出

sort( array );

return 0;

}

void sort( int array )

{____________________________________

inti,j,k;

for(i=1;i<=7;i++) { if(array[i]>array[i-1])

{

k=array[i];

j=i-1;

do

{

array[j+1]=array[j];

j– ;

}

while(k>array[j]&&j>=0);

array[j+1]=k;

}

}

—————————————————–

}

6. int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 輸出是多少?

答:相當(dāng)于 i=j=4;i=k=8;i=l=16;i=m=32; 故最后i=32;

7. 請簡述以下兩個for循環(huán)的優(yōu)缺點(5分)

1)for (i=0; i {

if (condition)

dosomething;

else

dootherthing;

}

2)if (condition)

{

for (i=0; i dosomething;

}

else

{

for (i=0; i 0)

{

*psto++ = *psfrom++;

}

returnpvto;

}

8 .c++里面如何聲明const void f(void)函數(shù)為c程序中的庫函數(shù)?

答:在該函數(shù)前添加extern “c”聲明。由于編譯后的名字不同,c++程序不能直接調(diào)用c 函數(shù)。

9. 請寫出下面代碼在 32 位平臺上的運行結(jié)果,并說明sizeof的性質(zhì):

#include

#include

int main(void)

{

char a[30];

char *b = (char *)malloc(20 * sizeof(char));

printf(“%dn”, sizeof(a));

printf(“%dn”, sizeof(b));

printf(“%dn”, sizeof(a[3]));

printf(“%dn”, sizeof(b+3));

printf(“%dn”, sizeof(*(b+4)));

return 0 ;

}

答:在32位系統(tǒng)下(如win32),指針長度為32位。a是一個有30個元素的字符型數(shù)組;b是一個字符串指針;a[3]是字符型;b+3是指針;*(b+4)是字符型。

因此輸出: 30、4、1、4、1

c語言基礎(chǔ)筆試題篇六

1. c++中,關(guān)鍵字struct和class的區(qū)別僅僅在于:

struct定義的類的缺省成員為公有的,而class定義的類的缺省成員為私有的;

2. 頭文件的作用是什么?

答:1)通過頭文件來調(diào)用庫功能。2)頭文件能加強類型安全檢查。

3. c++函數(shù)中值的傳遞方式有哪幾種?

答:c++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。

4. 內(nèi)存的分配方式的分配方式有幾種?

答:1)從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在。例如全局變量。

2)在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。棧內(nèi)存分配運算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。

3)從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運行的時候用malloc或new申請任意多少的內(nèi)存,程序員自己負責(zé)在何時用free或delete釋放內(nèi)存。動態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問題也最多。

5. 設(shè)計函數(shù)intatoi(char *s)。

答:intatoi (char *s)

{

int i = 0,sum = 0,sign; //輸入的數(shù)前面可能還有空格或制表符應(yīng)加判斷

while(*s==”||*s==’t’)

{

i++;

}

sign = (*s==’-)?-1:1;

if(*s==’-|| *s==’+)

{

i++;

}

while(*s!=’′)

{

sum = *s-’0′+sum*10;

i++;

}

return sign*sum;

}

6. 編寫strcat函數(shù)(6分)

已知strcat函數(shù)的原型是char *strcat (char *strdest, const char *strsrc);

其中strdest是目的字符串,strsrc是源字符串。

(1)不調(diào)用c++/c 的字符串庫函數(shù),請編寫函數(shù)strcat

答:

char * __cdeclstrcat(char * dst, const char * src)

{

char * cp = dst;

while( *cp )

cp++; /* find end of dst */

while( *cp++ = *src++ ) ; /* copy src to end of dst */

return(dst ); /* return dst */

}

(2)strcat能把strsrc的內(nèi)容連接到strdest,為什么還要char * 類型的返回值?

答:方便賦值給其他變量。

7. mfc中cstring是類型安全類么?

答:不是,其它數(shù)據(jù)類型轉(zhuǎn)換到cstring可以使用cstring的成員函數(shù)format來轉(zhuǎn)換

8.函數(shù)模板與類模板有什么區(qū)別?

答:函數(shù)模板的實例化是由編譯程序在處理函數(shù)調(diào)用時自動完成的,而類模板的實例化必須由程序員在程序中顯式地指定。

9. 寫一個“標(biāo)準(zhǔn)”宏min,這個宏輸入兩個參數(shù)并返回較小的一個。

答:#define min(a,b) ((a) <= (b) ? (a) : (b)) 宏的副作用(與某些函數(shù)的混淆):least = min(*p++, b)。宏定義#define min(a,b) ((a) <= (b) ? (a) : (b))對min(*p++, b)的作用結(jié)果是:

((*p++) <= (b) ? (*p++) : (*p++))

10. 嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么樣用c編寫死循環(huán)呢?

答:while(1)或者for(;;)

c語言基礎(chǔ)筆試題篇七

c筆試題

1) 的內(nèi)容(例如):

12

34

56

56

34

12

(逆序)

2)輸出和為一個給定整數(shù)的所有組合

例如n=5

5=1+4;5=2+3(相加的數(shù)不能重復(fù))

則輸出

1,4;2,3,

第一題,注意可增長數(shù)組的應(yīng)用.

#include

#include

int main(void)

{ int max = 10;

int *a = (int *)malloc(max * sizeof(int));

int *b;

file *fp1;

file *fp2;

fp1 = fopen(“”,”r”);

if(fp1 == null)

{printf(“error1″);

exit(-1);

}

fp2 = fopen(“”,”w”);

if(fp2 == null)

{printf(“error2″);

exit(-1);

}

int i = 0;

int j = 0;

while(fscanf(fp1,”%d”,&a[i]) != eof)

{i++;

j++;

if(i >= max)

{

max = 2 * max;

b = (int*)realloc(a,max * sizeof(int));

if(b == null)

{printf(“error3″);

exit(-1);

}a = b;

}}

for(;–j >= 0;)

fprintf(fp2,”%dn”,a[j]);

fclose(fp1);

fclose(fp2);

return 0;

}

第二題.

#include

int main(void)

{unsigned long int i,j,k;

printf(“please input the numbern”);

scanf(“%d”,&i);

if( i % 2 == 0)

j = i / 2;

else

j = i / 2 + 1;

printf(“the result is n”);

for(k = 0; k < j; k++)

printf(“%d = %d + %dn”,i,k,i – k);

return 0;

}

#include

void main()

{unsigned long int a,i=1;

scanf(“%d”,&a);

if(a%2==0)

{ for(i=1;i printf(“%d”,a,a-i);

}

else

for(i=1;i<=a/2;i++)

printf(” %d, %d”,i,a-i);

}

兄弟,這樣的.題目若是做不出來實在是有些不應(yīng)該, 給你一個遞規(guī)反向輸出字符串的例子,可謂是反序的經(jīng)典例程.

void inverse(char *p)

{ if( *p = = ‘′ )

return;

inverse( p+1 );

printf( “%c”, *p );

}

int main(int argc, char *argv[])

{

inverse(“abc″);

return 0;

}

借簽了樓上的“遞規(guī)反向輸出”

#include

void test(file *fread, file *fwrite)

{ char buf[1024] = {0};

if (!fgets(buf, sizeof(buf), fread))

return;

test( fread, fwrite );

fputs(buf, fwrite);

}

int main(int argc, char *argv[])

{ file *fr = null;

file *fw = null;

fr = fopen(“data”, “rb”);

fw = fopen(“dataout”, “wb”);

test(fr, fw);

fclose(fr);

fclose(fw);

return 0;

}

在對齊為4的情況下

struct bbb

{ long num;

char *name;

short int data;

char ha;

short ba[5];

}*p;

p=0×1000000;

p+0×200=____;

(ulong)p+0×200=____;

(char*)p+0×200=____;

解答:假設(shè)在32位cpu上,

sizeof(long) = 4 bytes

sizeof(char *) = 4 bytes

sizeof(short int) = sizeof(short) = 2 bytes

sizeof(char) = 1 bytes

由于是4字節(jié)對齊,

sizeof(struct bbb) = sizeof(*p)

= 4 + 4 + 2 + 1 + 1/*補齊*/ + 2*5 + 2/*補齊*/ = 24 bytes (經(jīng)dev-c++驗證)

p=0×1000000;

p+0×200=____;

= 0×1000000 + 0×200*24

(ulong)p+0×200=____;

= 0×1000000 + 0×200

(char*)p+0×200=____;

= 0×1000000 + 0×200*4

你可以參考一下指針運算的細節(jié)

c語言基礎(chǔ)筆試題篇八

寫出二分查找的代碼:

int binary_search(int* arr,int key,int size)

{

intmid;

intlow=0;

int high=size-1;

while(low<=high)

{

mid=(low+high)/2;

if(arr[mid]>key)

high=mid-1;

elseif(arr[mid]

low=mid+1;

else

return mid;

}

return -1;

}

請編寫一個c 函數(shù),該函數(shù)在一個字符串中找到可能的最長的子字符串,該字符串是由同一字符組成的。

#include

#include

#include

int childstring(char*p)

{

char* q=p;

int stringlen=0, i=0,j=1,len=0,maxlen=1;

//stringlen=strlen(p);

while(*q!=) //不能用strlen,求得長stringlen

{

stringlen++;

q++;

}

while( i< stringlen)

{

if(*(p+i)==*(p+j)&&j< stringlen)

{

len++; //統(tǒng)計子串長度

i++;

j++;

}

else

{

if(len>=maxlen) //統(tǒng)計最大子串長度

{

maxlen=len+1;

len=0;

}

else

len=0;

i++;

j++;

}

}

return maxlen;

}

int main(int argc,char* argv)

{

char arr[11];

int len;

printf(“please input chararr(10):n”);

scanf(“%s”,arr);

len=childstring(arr);

printf(“the len of childarr is:%dn”,len);

return 1;

}

c語言基礎(chǔ)筆試題篇九

有一浮點型數(shù)組a,用c語言寫一函數(shù)實現(xiàn)對浮點數(shù)組a進行降序排序,并輸出結(jié)果,要求要以數(shù)組a作為函數(shù)的入口.(建議用冒泡排序法)

#include

#include

void bubblesort(int arr, int n)

{

int i,j;

int exchange = 1;//交換標(biāo)志,提高算法效率;

int temp;

for(i=0;i

{

exchange=0;//本趟排序開始前,交換標(biāo)志應(yīng)為假

for(j=0;j

{

if(arr[j+1] > arr[j])

{

temp=arr[j+1];

arr[j+1]=arr[j];

arr[j]=temp;

exchange=1; //發(fā)生了交換,故將交換標(biāo)志置為真

}

}

if(!exchange) //本趟排序未發(fā)生交換,提前終止算法

return;

}

}

int main(int argc,char* argv)

{

int arr[5]={1,4,2,6,5};

int i;

bubblesort(arr, 5);

printf(“after sort,arr is :n”);

for(i=0;i<5;i++)

{

printf(“%3d”,arr[i]);

}

return 1;

}

c語言基礎(chǔ)筆試題篇十

有兩個磁盤文件a和b,各存放一行字母,要求把這兩個文件中的信息合并(按字母順序排列),輸出到一個新文件c中.

#include

#include

int main(int argc,char* argv)

{

file* fp;

int i,j,k,num,num;

char c[50],t,ch;

if((fp=fopen(“a”,“r”))==null)

/*can be replaced by open

* int fd=open(“a”,o_rdonly|o_creat);*/

{

printf(“filea cannot be openedn”);

exit(0);

}

printf(“na contents are:n”);

for(i=0;(ch=fgetc(fp))!=eof;i++)/*一個字符一個字符讀*/

{

c[i]=ch;

putchar(c[i]);

}

num=i+1;

fclose(fp);

if((fp=fopen(“b”,“r”))==null)

{

printf(“fileb cannot be openedn”);

exit(0);

}

printf(“nb contents are :n”);

for(i=0;(ch=fgetc(fp))!=eof;i++)

{

c[num+i]=ch;

putchar(c[num+i]);

}

fclose(fp);

num=num+i+1;

for(k=0;k

{

for(j=0;j

{

if(c[j]>c[j+1])

{

t=c[j];

c[j]=c[j+1];

c[j+1]=t;

}

}

}

printf(“nc fileis:n”);

fp=fopen(“c”,“w”);

for(i=0;i

{

putc(c[i],fp);/*將字符一個個寫入文件中*/

putchar(c[i]);/*一個個輸出字符*/

}

fclose(fp);

return 1;

}

c語言基礎(chǔ)筆試題篇十一

c語言基礎(chǔ)筆試題

1、c語言程序的基本單位是____ a) 程序行 b) 語句 c) 函數(shù) d) 字符、c、1

2、c語言程序的三種基本結(jié)構(gòu)是____ a、順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu) b、遞歸結(jié)構(gòu),循環(huán)結(jié)構(gòu),轉(zhuǎn)移結(jié)構(gòu) c、嵌套結(jié)構(gòu),遞歸結(jié)構(gòu),順序結(jié)構(gòu) d、循環(huán)結(jié)構(gòu),轉(zhuǎn)移結(jié)構(gòu),順序結(jié)構(gòu)、a、1

3、c語言規(guī)定,程序中各函數(shù)之間 a) 既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用 b) 不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用 c) 允許直接遞歸調(diào)用不允許間接遞歸調(diào)用 d) 不允許直接遞歸調(diào)用允許間接遞歸調(diào)用、a、1

4、c語言中可處理的文件類型是( ) a) 文本文件和數(shù)據(jù)文件 b)文本文件和二進制文件 c) 數(shù)據(jù)文件和二進制文件 d)數(shù)據(jù)代碼文件、b、1

5、c語言可執(zhí)行程序的開始執(zhí)行點是( ) a) 程序中第一條可執(zhí)行語句 b) 程序中第一個函數(shù) c) 程序中的main函數(shù) d) 包含文件中的第一個函數(shù)、c、1

6、c語言提供的合法的數(shù)據(jù)類型關(guān)鍵字是 a)double b) short c) integer d) char、b、1

7、c語言中,運算對象必須是整型數(shù)的運算符是 a) % b) c) %和 d) * *、a、1

8、c語言中函數(shù)返回值的類型是由( )決定, a) return語句中的表達式類型 b) 調(diào)用函數(shù)的主調(diào)函數(shù)類型 c) 調(diào)用函數(shù)時臨時 d) 定義函數(shù)時所指定的函數(shù)類型、d、1

9、c語言中數(shù)組名作為參數(shù)傳遞給函數(shù),作為實在參數(shù)的數(shù)組名被處理為_____。 a、 該數(shù)組的長度。 b、 該數(shù)組的元素個數(shù)。 c、 該數(shù)組中各元素的值。 d、 該數(shù)組的首地址。、d、1

10、c語言中數(shù)組下標(biāo)的下限是________。 a、1 b、0 c、視具體情況 d、無固定下限、b、1

11、c語言中提供的合法關(guān)鍵字是____ a、swith b、cher c、case d、default、d、1

12、c語言中文件的.存取方式是________。 a、順序存取 b、隨機存取 c、順序存取、隨機存取均可 d、順序存取、隨機存取均不可、c、1

13、c語言中最簡單的數(shù)據(jù)類型包括 a) 整型、實型、邏輯型 b) 整型、實型、字符型 c) 整型、字符型、邏輯型 d) 整型、實型、邏輯型、字符型、b、1

14、sizeof(float)是( ) a) 一種函數(shù)調(diào)用 b) 一個不合法的表示形式 c) 一個整型表達式 d) 一個浮點表達式、c、1

15、x、y、z被定義為int型變量,若從鍵盤給x、y、z輸入數(shù)據(jù),正確的輸入語句是 a) input x,y,z; b) scanf(“%d%d%d”,&x,&y,&z); c) scanf(“%d%d%d”,x,y,z); d) read(“%d%d%d”,&x,&y,&z);、b、1

16、表達式:10!=9的值是 a) true b) 非零值 c) 0 d) 1、d、1

17、表示關(guān)系x<=y<=z的c語言表達式為 a) (x<=y)&&(y<=z) b) (x<=y)and(y<=z) c) (x<=y<=z) d) (x<=y)&(y<=z)、a、1

18、程序片段:在tc20中, int i=65536; printf(“%d”,i);的輸出結(jié)果是____ a) 65536 b) 0 c) 有語法錯誤,無輸出結(jié)果 d) -1、b、1

19、當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是____ a) 數(shù)組的長度 b) 數(shù)組的首地址 c) 數(shù)組每一個元素的地址 d) 數(shù)組每個元素中的值、b、1

20、對嵌套子程序調(diào)用說法正確的是____。 a、 外層子程序可以調(diào)用所有的內(nèi)層子程序 b、 內(nèi)層了程序只可以調(diào)用包含本身的外層子程序,不可以隔層調(diào)用 c、 外分程序必須能完全套住內(nèi)分程序 d、 以上說法均不正確、c、1

21、對于基類型相同的兩個指針變量之間,不能進行的運算是 a) < b) = c) + d) -、c、1

22、合法的c語言中,合法的長整型常數(shù)是 a) t b) “a” c) 65 d) a、a、1

23、假定int類型變量占用兩個字節(jié),其有定義:int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是 a) 3 b) 6 c) 10 d) 20、d、1

24、假定有以下變量定義: int k=7 ,x=12; 則能使值為3的表達式是 a x%=(k%=5) b x%=(k-k%5) c x%=k-k%5 d (x%=k)-(k%=5)、d、1

25、請讀程序片段(字符串內(nèi)沒有空格): printf(“%d”,strlen(“ats0121”));的輸出結(jié)果是 a) 11 b) 10 c) 9 d) 8 、c、1

26、請選出合法的c語言賦值語句 a) a=b=58 b) i++; c) a=58,b=58 d) k=int(a+b);、b、1

27、若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是 a) -3 b) 9 c) -12 d) 6、c、1

28、若int類型占兩個字節(jié),則以下語句輸出為________。 int k=-1; printf(“%d,u%”,k,k); a、-1,-1 b、-1,65536 c、-1,32768 d、-1,65535、d、1

29、若變量a是int類型,并執(zhí)行了語句:a=‘a(chǎn)+1、6;,則正確的敘述是 a) a的值是字符c b) a的值是浮點型 c) 不允許字符型和浮點型相加 d) a的值是字符‘a(chǎn)’的ascii值加上1,

、d、1

30、若變量已正確說明為float類型,要通過語句scanf(“%f %f %f ”,&a,&b,&c);給a賦于10、0,b賦予22、0,c賦予33、0,不正確的輸入形式是: a) 10 b) 10、0,22、0,33、0 22 33 c) 10、0 d) 10 22 22、0 33、0 33、b、1

31、若要求在if后一對圓括號中表示a不等于0的關(guān)系,則能正確表示這一關(guān)系的表達式為 a) a0 b) !a c) a=0 d) a、b、1

32、若已定義x和y為double類型,則表達式:x=1,y=x+3/2的值是 a)1 b)2 c)2、0 d)2、5、c、1

33、若有定義:int a=8,b=5,c;,執(zhí)行語句c=a/b+0、4;后,c的值為 a) 1、4 b) 1 c) 2、0 d) 2、b、1

34、若有定義:int x,y;char a,b,c;并有以下輸入數(shù)據(jù)(此處< cr> 代表換行符,/u代表空格): 1u2 aubuc 則能給x賦整數(shù)1,給y賦整數(shù)2,給a賦字符a,給b賦字符b,給c賦字符c 的正確程序段是 a) scanf(“x=%d y+%d”,&x,&y);a=getchar;b=getchar();c=getchar(); b) scanf(“%d %d”,&x,&y);a=getchar();b=getchar();c=getchar(); c) scanf(“%d%d%c%c%c,&x,&y,&a,&b,&c); d) scanf(“%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);、 d、1

35、若有定義和語句: char s[10]:s=”abcd”;printf(“%s”,s); 則結(jié)果是(以下u代表空格) a) 輸出abcd b) 輸出a c) 輸出abcduuuuu d) 編譯不通過、d、1

36、若有以下程序段, int c1=1,c2=2,c3; c3=1、0/c2*c1; 則執(zhí)行后,c3中的值是 a) 0 b) 0、5 c) 1 d) 2、a、1

37、若有以下定義: char a; int b; float c; double d; 則表達式a*b+d-c值的類型為 a) float b) int c) char d) double、d、1

38、若有以下定義和語句 char c1=’b,c2=’e; printf(“%d,%c”,c2-c1,c2-’a+”a”); 則輸出結(jié)果是: a)2,m b)3,e c)2,e d)輸出項與對應(yīng)的格式控制不一致,輸出結(jié)果不確定、b、1

39、若有以下函數(shù)調(diào)用語句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函數(shù)調(diào)用語句中實參的個數(shù)是 a)3 b)4 c)5 d)6、a、1

40、若執(zhí)行下面的程序時從鍵盤上輸入3和4,則輸出是____ a) 14 b) 16 c) 18 d) 20 main( ) { int a,b,s; scanf(“%d %d”,&a,&b); s=a; if(a、b、1

41、若執(zhí)行下面的程序時從鍵盤上輸入5,則輸出是 a) 7 b) 6 c) 5 d) 4 main() { int x; scanf(“%d”,&x); if(x++>5) printf(“%d”,x); else printf(“%d”,x–);}、b、1

42、若執(zhí)行以下程序時從鍵盤上輸入9,則輸出結(jié)果是 a) 11 b) 10 c) 9 d) 8 main( ) { int n; scanf(“%d”,&n); if(n++、b、1

43、設(shè) a、b、c、d、m、n均為 int型變量,且 a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式 (m=a>b)&&(n=c>d)運算后,n的值為____ a) 0 b) 1 c) 2 d) 3、c、1

44、設(shè) int a=12,則執(zhí)行完語句 a+=a-=a*a后,a的值是 a) 552 b) 264 c) 144 d) -264、d、1

45、設(shè) int b=2;表達式(b>>2)/(b>>1)的值是 a) 0 b) 2 c) 4 d) 8、a、1

46、設(shè)a,b和c都是int型變量,且a=3,b=4,c=5,則下列表達式中,值為0的表達式是________ a)’a&&’b’ b)a<=b c)a||b+c&&b-c d)!((a

47、設(shè)x、y、z和k都是int型變量,則執(zhí)行表達式:x=(y=4,z=16,k=32)后,x的值為 a 4 b 16 c 32 d 52、c、1

48、設(shè)x=3,y=-4,z=6,寫出表達式的結(jié)果。 !(x>y)+(y!=z)||(x+y)&&(y-z) a、0 b、1 c、-1 d、6、b、1

49、設(shè)x和y均為int 型變量,則以下語句:x+=y;y=x-y;y=x-y;x-=y;的功能是 a、把x 和y按從大到小排列 b、把x和y按從小到大排列 c、無確定結(jié)果 d、交換x和y中的值、d、1

50、設(shè)有 int x=11; 則表達式 (x++ * 1/3) 的值是 a) 3 b) 4 c) 11 d) 12、a、1

全文閱讀已結(jié)束,如果需要下載本文請點擊

下載此文檔
你可能感興趣的文章
a.付費復(fù)制
付費獲得該文章復(fù)制權(quán)限
特價:5.99元 10元
微信掃碼支付
已付款請點這里
b.包月復(fù)制
付費后30天內(nèi)不限量復(fù)制
特價:9.99元 10元
微信掃碼支付
已付款請點這里 聯(lián)系客服