范文為教學(xué)中作為模范的文章,,也常常用來(lái)指寫作的模板。常常用于文秘寫作的參考,,也可以作為演講材料編寫前的參考。那么我們?cè)撊绾螌懸黄^為完美的范文呢,?接下來(lái)小編就給大家介紹一下優(yōu)秀的范文該怎么寫,,我們一起來(lái)看一看吧,。
c語(yǔ)言基礎(chǔ)筆試題篇一
a:本程序的main函數(shù)開始,到main函數(shù)結(jié)束
b:本程序文件的第一個(gè)函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束
c:本程序的main函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束
d:本程序文件的第一個(gè)函數(shù)開始,到本程序main函數(shù)結(jié)束
2.[單選題]在c語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是( d )
a:/
b:++
c:!=
d:%
3.[單選題]c語(yǔ)言中,,邏輯“真”等價(jià)于( c )
a:大于零的數(shù)
b:大于零的整數(shù)
c:非零的數(shù)
d:非零的整數(shù)
4.[單選題]若希望當(dāng)a的值為奇數(shù)時(shí),,表達(dá)式的值為“真”,a的值為偶數(shù)時(shí),,表達(dá)式的值為“假”,。則以下不能滿足要求的表達(dá)式為( c )
a:a%2 == 1
b:! (a%2==0)
c:! (a%2)
d:a%2
5.[單選題]以下程序的運(yùn)行結(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.[單選題]以下對(duì)一維整型數(shù)組a的正確說(shuō)明是( 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.[單選題]若有說(shuō)明:int a[3][4];則對(duì)a數(shù)組元素的非法引用是( d )
a:a[0][2*1]
b:a[1][3]
c:a[4-2][0]
d:a[0][4]
c語(yǔ)言基礎(chǔ)筆試題篇二
1.[單選題]下面程序的功能是將已按升序排好序的兩個(gè)字符串a(chǎn)和b中的字符,,按升序歸并到字符串c中,,請(qǐng)為程序中的空白處選擇適當(dāng)?shù)恼Z(yǔ)句。第二空答案( 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.[單選題]在一個(gè)c源程序文件中,,若要定義一個(gè)只允許本源文件中所有函數(shù)使用的全局變量,,則該變量需要使用的存儲(chǔ)類別是( d )
a:extern
b:register
c:auto
d:static
3.[單選題]以下程序的正確運(yùn)行結(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.[單選題]以下程序的運(yùn)行結(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.[單選題]有如下語(yǔ)句int a = 10, b = 20, *p1, *p2; p1 = &a p2 = &b變量與指針的關(guān)系如圖1所示;若要實(shí)現(xiàn)圖2所示的存儲(chǔ)結(jié)構(gòu),,可選用的賦值語(yǔ)句為( 沒圖 可能是 b或a )
a:*p1 = *p2
b:p1 = p2
c:p1 = *p2
d:*p1 = p2
6.[單選題]若已建立下面的鏈表結(jié)構(gòu),指針p,、q分別指向圖中所示結(jié)點(diǎn),,則不能將q所指的結(jié)點(diǎn)插入到鏈表末尾的一組語(yǔ)句是( )
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),,按輸入時(shí)的逆序建立一個(gè)鏈接式的結(jié)點(diǎn)序列,即先輸入的位于鏈表尾(如下圖),,然后再按輸入的相反順序輸出,并釋放全部結(jié)點(diǎn),。請(qǐng)?jiān)诳瞻滋帪槌绦蜻x擇適當(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),按輸入時(shí)的逆序建立一個(gè)鏈接式的結(jié)點(diǎn)序列,,即先輸入的位于鏈表尾(如下圖),,然后再按輸入的相反順序輸出,并釋放全部結(jié)點(diǎn),。請(qǐng)?jiān)诳瞻滋帪槌绦蜻x擇適當(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),按輸入時(shí)的逆序建立一個(gè)鏈接式的結(jié)點(diǎn)序列,,即先輸入的位于鏈表尾(如下圖),,然后再按輸入的相反順序輸出,并釋放全部結(jié)點(diǎn),。請(qǐng)?jiān)诳瞻滋帪槌绦蜻x擇適當(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語(yǔ)言基礎(chǔ)筆試題篇三
1.[單選題]若二維數(shù)組a有m列,則計(jì)算任一元素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刪除,,那么空白處缺少的語(yǔ)句為:( 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.[單選題]下面程序的功能是將已按升序排好序的兩個(gè)字符串a(chǎn)和b中的字符,按升序歸并到字符串c中,,請(qǐng)為程序中的空白處選擇適當(dāng)?shù)恼Z(yǔ)句,。 第一空答案( 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語(yǔ)言基礎(chǔ)筆試題篇四
1.編寫my_strcpy函數(shù),實(shí)現(xiàn)與庫(kù)函數(shù)strcpy類似的功能,,不能使用任何庫(kù)函數(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)庫(kù)路徑開始搜索file.h,而后者編譯器從用戶的工作路徑開始搜索file.h,。
4. 在c++ 程序中調(diào)用被c 編譯器編譯后的函數(shù),,為什么要加extern“c”?
答:extern是c/c++語(yǔ)言中表明函數(shù)和全局變量作用范圍(可見性)的關(guān)鍵字,其聲明的函數(shù)和變量可以在本模塊或其它模塊中使用,。
通常,,在模塊的頭文件中對(duì)本模塊提供給其它模塊引用的函數(shù)和全局變量以關(guān)鍵字extern聲明,。
5. 面向?qū)ο蟮娜齻€(gè)基本特征,并簡(jiǎn)單敘述之?
答:1)封裝:將客觀事物抽象成類,,每個(gè)類對(duì)自身的數(shù)據(jù)和方法實(shí)行protection(private, protected,public)
2)繼承:實(shí)現(xiàn)繼承(指使用基類的屬性和方法而無(wú)需額外編碼的能力),、可視繼承(子窗體使用父窗體的外觀和實(shí)現(xiàn)代碼)、接口繼承(僅使用屬性和方法,,實(shí)現(xiàn)滯后到子類實(shí)現(xiàn)),。
3)多態(tài):允許將子類類型的指針賦值給父類類型的指針。
6. 重載(overload)和重寫(overried,,有的書也叫做“覆蓋”)的區(qū)別?
答:從定義上來(lái)說(shuō):
重載:是指允許存在多個(gè)同名函數(shù),,而這些函數(shù)的參數(shù)表不同(或許參數(shù)個(gè)數(shù)不同,或許參數(shù)類型不同,,或許兩者都不同),。
重寫:是指子類重新定義復(fù)類虛函數(shù)的方法。
從實(shí)現(xiàn)原理上來(lái)說(shuō):
重載:編譯器根據(jù)函數(shù)不同的參數(shù)表,,對(duì)同名函數(shù)的名稱做修飾,,然后這些同名函數(shù)就成了不同的函數(shù)。
重寫:當(dāng)子類重新定義了父類的虛函數(shù)后,,父類指針根據(jù)賦給它的不同的子類指針,,動(dòng)態(tài)的調(diào)用屬于子類的該函數(shù),這樣的函數(shù)調(diào)用在編譯期間是無(wú)法確定的(調(diào)用的子類的虛函數(shù)的地址無(wú)法給出),。
7. 多態(tài)的作用?
答:主要是兩個(gè):1)隱藏實(shí)現(xiàn)細(xì)節(jié),,使得代碼能夠模塊化;擴(kuò)展代碼模塊,實(shí)現(xiàn)代碼重用;2)接口重用,,為了類在繼承和派生的時(shí)候,,保證使用家族中任一類的實(shí)例的某一屬性時(shí)的正確調(diào)用。
8. 分別寫出bool,int,float,指針類型的變量a 與“零”的比較語(yǔ)句,。
答: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. 請(qǐng)說(shuō)出const與#define 相比,,有何優(yōu)點(diǎn)?
答案:1) const 常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型,。編譯器可以對(duì)前者進(jìn)行類型安全檢查,。而對(duì)后者只進(jìn)行字符替換,沒有類型安全檢查,,并且在字符替換可能會(huì)產(chǎn)生意料不到的錯(cuò)誤,。
2) 有些集成化的調(diào)試工具可以對(duì)const 常量進(jìn)行調(diào)試,但是不能對(duì)宏常量進(jìn)行調(diào)試,。
10.簡(jiǎn)述數(shù)組與指針的區(qū)別?
數(shù)組要么在靜態(tài)存儲(chǔ)區(qū)被創(chuàng)建(如全局?jǐn)?shù)組),,要么在棧上被創(chuàng)建。指針可以隨時(shí)指向任意類型的內(nèi)存塊,。
(1)修改內(nèi)容上的差別
char a = “hello”;
a[0] = ‘x’;
char *p = “world”; // 注意p 指向常量字符串
p[0] = ‘x’; // 編譯器不能發(fā)現(xiàn)該錯(cuò)誤,,運(yùn)行時(shí)錯(cuò)誤
(2) 用運(yùn)算符sizeof 可以計(jì)算出數(shù)組的容量(字節(jié)數(shù)),。sizeof(p),p 為指針得到的是一個(gè)指針變量的字節(jié)數(shù),而不是p 所指的內(nèi)存容量,。c++/c 語(yǔ)言沒有辦法知道指針?biāo)傅膬?nèi)存容量,,除非在申請(qǐng)內(nèi)存時(shí)記住它。注意當(dāng)數(shù)組作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí),,該數(shù)組自動(dòng)退化為同類型的指針,。
char a = “hello world”;
char *p = a;
cout< cout< 計(jì)算數(shù)組和指針的內(nèi)存容量
voidfunc(char a[100])
{
cout< }
c語(yǔ)言基礎(chǔ)筆試題篇五
1.變量的聲明和定義有什么區(qū)別?
答:聲明變量不分配空間,定義變量要分配空間,。聲明主要是告訴編譯器,后面的引用都按聲明的格式。定義其實(shí)包含了聲明的意思,同時(shí)要分配內(nèi)存空間,。
2. 解釋堆和棧的區(qū)別,。
答:堆(heap)——一般由程序員分配釋放,若程序員不釋放,,程序結(jié)束時(shí)可能由os回收,。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表,。速度比較慢,,而且容易產(chǎn)生內(nèi)存碎片,不過用起來(lái)最方便。
棧(stack)——由編譯器自動(dòng)分配釋放,,存放函數(shù)的參數(shù)值,,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧,。由系統(tǒng)自動(dòng)分配,,速度較快。但程序員是無(wú)法控制的,。
3. const的作用是什么?
答:(1)可以定義const常量
(2)const可以修飾函數(shù)的參數(shù),、返回值,甚至函數(shù)的定義體,。被const修飾的東西都受到強(qiáng)制保護(hù),,可以預(yù)防意外的變動(dòng),能提高程序的健壯性,。
4. 下列哪兩個(gè)是等同的
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. 完成程序,,實(shí)現(xiàn)對(duì)數(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. 請(qǐng)簡(jiǎn)述以下兩個(gè)for循環(huán)的優(yōu)缺點(diǎn)(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程序中的庫(kù)函數(shù)?
答:在該函數(shù)前添加extern “c”聲明。由于編譯后的名字不同,,c++程序不能直接調(diào)用c 函數(shù),。
9. 請(qǐng)寫出下面代碼在 32 位平臺(tái)上的運(yùn)行結(jié)果,并說(shuō)明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),,指針長(zhǎng)度為32位,。a是一個(gè)有30個(gè)元素的字符型數(shù)組;b是一個(gè)字符串指針;a[3]是字符型;b+3是指針;*(b+4)是字符型。
因此輸出: 30,、4,、1、4,、1
c語(yǔ)言基礎(chǔ)筆試題篇六
1. c++中,,關(guān)鍵字struct和class的區(qū)別僅僅在于:
struct定義的類的缺省成員為公有的,而class定義的類的缺省成員為私有的;
2. 頭文件的作用是什么?
答:1)通過頭文件來(lái)調(diào)用庫(kù)功能,。2)頭文件能加強(qiáng)類型安全檢查,。
3. c++函數(shù)中值的傳遞方式有哪幾種?
答:c++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞,。
4. 內(nèi)存的分配方式的分配方式有幾種?
答:1)從靜態(tài)存儲(chǔ)區(qū)域分配,。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在,。例如全局變量,。
2)在棧上創(chuàng)建。在執(zhí)行函數(shù)時(shí),,函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,,效率很高,,但是分配的內(nèi)存容量有限。
3)從堆上分配,,亦稱動(dòng)態(tài)內(nèi)存分配,。程序在運(yùn)行的時(shí)候用malloc或new申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用free或delete釋放內(nèi)存。動(dòng)態(tài)內(nèi)存的生存期由我們決定,,使用非常靈活,,但問題也最多。
5. 設(shè)計(jì)函數(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 的字符串庫(kù)函數(shù),,請(qǐng)編寫函數(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來(lái)轉(zhuǎn)換
8.函數(shù)模板與類模板有什么區(qū)別?
答:函數(shù)模板的實(shí)例化是由編譯程序在處理函數(shù)調(diào)用時(shí)自動(dòng)完成的,而類模板的實(shí)例化必須由程序員在程序中顯式地指定,。
9. 寫一個(gè)“標(biāo)準(zhǔn)”宏min,,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。
答:#define min(a,b) ((a) <= (b) ? (a) : (b)) 宏的副作用(與某些函數(shù)的混淆):least = min(*p++, b),。宏定義#define min(a,b) ((a) <= (b) ? (a) : (b))對(duì)min(*p++, b)的作用結(jié)果是:
((*p++) <= (b) ? (*p++) : (*p++))
10. 嵌入式系統(tǒng)中經(jīng)常要用到無(wú)限循環(huán),你怎么樣用c編寫死循環(huán)呢?
答:while(1)或者for(;;)
c語(yǔ)言基礎(chǔ)筆試題篇七
c筆試題
1) 的內(nèi)容(例如):
12
34
56
:
56
34
12
(逆序)
2)輸出和為一個(gè)給定整數(shù)的所有組合
例如n=5
5=1+4;5=2+3(相加的數(shù)不能重復(fù))
則輸出
1,,4;2,,3,
第一題,注意可增長(zhǎng)數(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);
}
兄弟,這樣的.題目若是做不出來(lái)實(shí)在是有些不應(yīng)該, 給你一個(gè)遞規(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;
}
在對(duì)齊為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é)對(duì)齊,,
sizeof(struct bbb) = sizeof(*p)
= 4 + 4 + 2 + 1 + 1/*補(bǔ)齊*/ + 2*5 + 2/*補(bǔ)齊*/ = 24 bytes (經(jīng)dev-c++驗(yàn)證)
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
你可以參考一下指針運(yùn)算的細(xì)節(jié)
c語(yǔ)言基礎(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;
}
請(qǐng)編寫一個(gè)c 函數(shù),,該函數(shù)在一個(gè)字符串中找到可能的最長(zhǎng)的子字符串,該字符串是由同一字符組成的,。
#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,求得長(zhǎng)stringlen
{
stringlen++;
q++;
}
while( i< stringlen)
{
if(*(p+i)==*(p+j)&&j< stringlen)
{
len++; //統(tǒng)計(jì)子串長(zhǎng)度
i++;
j++;
}
else
{
if(len>=maxlen) //統(tǒng)計(jì)最大子串長(zhǎ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語(yǔ)言基礎(chǔ)筆試題篇九
有一浮點(diǎn)型數(shù)組a,用c語(yǔ)言寫一函數(shù)實(shí)現(xiàn)對(duì)浮點(diǎn)數(shù)組a進(jìn)行降序排序,并輸出結(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語(yǔ)言基礎(chǔ)筆試題篇十
有兩個(gè)磁盤文件a和b,各存放一行字母,要求把這兩個(gè)文件中的信息合并(按字母順序排列),,輸出到一個(gè)新文件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++)/*一個(gè)字符一個(gè)字符讀*/
{
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);/*將字符一個(gè)個(gè)寫入文件中*/
putchar(c[i]);/*一個(gè)個(gè)輸出字符*/
}
fclose(fp);
return 1;
}
c語(yǔ)言基礎(chǔ)筆試題篇十一
c語(yǔ)言基礎(chǔ)筆試題
1,、c語(yǔ)言程序的基本單位是____ a) 程序行 b) 語(yǔ)句 c) 函數(shù) d) 字符、c、1
2,、c語(yǔ)言程序的三種基本結(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語(yǔ)言規(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語(yǔ)言中可處理的文件類型是( ) a) 文本文件和數(shù)據(jù)文件 b)文本文件和二進(jìn)制文件 c) 數(shù)據(jù)文件和二進(jìn)制文件 d)數(shù)據(jù)代碼文件、b,、1
5,、c語(yǔ)言可執(zhí)行程序的開始執(zhí)行點(diǎn)是( ) a) 程序中第一條可執(zhí)行語(yǔ)句 b) 程序中第一個(gè)函數(shù) c) 程序中的main函數(shù) d) 包含文件中的第一個(gè)函數(shù)、c,、1
6,、c語(yǔ)言提供的合法的數(shù)據(jù)類型關(guān)鍵字是 a)double b) short c) integer d) char、b,、1
7,、c語(yǔ)言中,運(yùn)算對(duì)象必須是整型數(shù)的運(yùn)算符是 a) % b) c) %和 d) * *、a,、1
8,、c語(yǔ)言中函數(shù)返回值的類型是由( )決定, a) return語(yǔ)句中的表達(dá)式類型 b) 調(diào)用函數(shù)的主調(diào)函數(shù)類型 c) 調(diào)用函數(shù)時(shí)臨時(shí) d) 定義函數(shù)時(shí)所指定的函數(shù)類型,、d,、1
9、c語(yǔ)言中數(shù)組名作為參數(shù)傳遞給函數(shù),,作為實(shí)在參數(shù)的數(shù)組名被處理為_____,。 a、 該數(shù)組的長(zhǎng)度。 b,、 該數(shù)組的元素個(gè)數(shù),。 c、 該數(shù)組中各元素的值,。 d,、 該數(shù)組的首地址。,、d,、1
10、c語(yǔ)言中數(shù)組下標(biāo)的下限是________,。 a,、1 b、0 c,、視具體情況 d,、無(wú)固定下限、b,、1
11,、c語(yǔ)言中提供的合法關(guān)鍵字是____ a、swith b,、cher c,、case d、default,、d、1
12,、c語(yǔ)言中文件的.存取方式是________,。 a、順序存取 b,、隨機(jī)存取 c,、順序存取、隨機(jī)存取均可 d,、順序存取,、隨機(jī)存取均不可、c,、1
13,、c語(yǔ)言中最簡(jiǎn)單的數(shù)據(jù)類型包括 a) 整型、實(shí)型,、邏輯型 b) 整型,、實(shí)型、字符型 c) 整型、字符型,、邏輯型 d) 整型,、實(shí)型、邏輯型,、字符型,、b、1
14,、sizeof(float)是( ) a) 一種函數(shù)調(diào)用 b) 一個(gè)不合法的表示形式 c) 一個(gè)整型表達(dá)式 d) 一個(gè)浮點(diǎn)表達(dá)式,、c、1
15,、x,、y、z被定義為int型變量,,若從鍵盤給x,、y、z輸入數(shù)據(jù),,正確的輸入語(yǔ)句是 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,、表達(dá)式:10!=9的值是 a) true b) 非零值 c) 0 d) 1,、d、1
17,、表示關(guān)系x<=y<=z的c語(yǔ)言表達(dá)式為 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) 有語(yǔ)法錯(cuò)誤,,無(wú)輸出結(jié)果 d) -1、b,、1
19,、當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,,則向函數(shù)傳送的是____ a) 數(shù)組的長(zhǎng)度 b) 數(shù)組的首地址 c) 數(shù)組每一個(gè)元素的地址 d) 數(shù)組每個(gè)元素中的值,、b、1
20,、對(duì)嵌套子程序調(diào)用說(shuō)法正確的是____,。 a、 外層子程序可以調(diào)用所有的內(nèi)層子程序 b,、 內(nèi)層了程序只可以調(diào)用包含本身的外層子程序,,不可以隔層調(diào)用 c,、 外分程序必須能完全套住內(nèi)分程序 d、 以上說(shuō)法均不正確,、c,、1
21、對(duì)于基類型相同的兩個(gè)指針變量之間,,不能進(jìn)行的運(yùn)算是 a) < b) = c) + d) -,、c、1
22,、合法的c語(yǔ)言中,,合法的長(zhǎng)整型常數(shù)是 a) t b) “a” c) 65 d) a、a,、1
23,、假定int類型變量占用兩個(gè)字節(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的表達(dá)式是 a x%=(k%=5) b x%=(k-k%5) c x%=k-k%5 d (x%=k)-(k%=5),、d、1
25,、請(qǐng)讀程序片段(字符串內(nèi)沒有空格): printf(“%d”,strlen(“ats0121”));的輸出結(jié)果是 a) 11 b) 10 c) 9 d) 8 ,、c、1
26,、請(qǐng)選出合法的c語(yǔ)言賦值語(yǔ)句 a) a=b=58 b) i++; c) a=58,b=58 d) k=int(a+b);,、b、1
27,、若a為int類型,,且其值為3,則執(zhí)行完表達(dá)式a+=a-=a*a后,,a的值是 a) -3 b) 9 c) -12 d) 6、c,、1
28,、若int類型占兩個(gè)字節(jié),則以下語(yǔ)句輸出為________,。 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í)行了語(yǔ)句:a=‘a(chǎn)+1、6;,,則正確的敘述是 a) a的值是字符c b) a的值是浮點(diǎn)型 c) 不允許字符型和浮點(diǎn)型相加 d) a的值是字符‘a(chǎn)’的ascii值加上1,,
、d,、1
30,、若變量已正確說(shuō)明為float類型,要通過語(yǔ)句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后一對(duì)圓括號(hào)中表示a不等于0的關(guān)系,則能正確表示這一關(guān)系的表達(dá)式為 a) a0 b) !a c) a=0 d) a,、b,、1
32、若已定義x和y為double類型,,則表達(dá)式: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í)行語(yǔ)句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> 代表?yè)Q行符,,/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、若有定義和語(yǔ)句: 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; 則表達(dá)式a*b+d-c值的類型為 a) float b) int c) char d) double,、d、1
38,、若有以下定義和語(yǔ)句 char c1=’b,c2=’e; printf(“%d,%c”,c2-c1,c2-’a+”a”); 則輸出結(jié)果是: a)2,m b)3,e c)2,e d)輸出項(xiàng)與對(duì)應(yīng)的格式控制不一致,,輸出結(jié)果不確定、b,、1
39,、若有以下函數(shù)調(diào)用語(yǔ)句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函數(shù)調(diào)用語(yǔ)句中實(shí)參的個(gè)數(shù)是 a)3 b)4 c)5 d)6,、a,、1
40,、若執(zhí)行下面的程序時(shí)從鍵盤上輸入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í)行下面的程序時(shí)從鍵盤上輸入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í)行以下程序時(shí)從鍵盤上輸入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,,則邏輯表達(dá)式 (m=a>b)&&(n=c>d)運(yùn)算后,,n的值為____ a) 0 b) 1 c) 2 d) 3,、c、1
44,、設(shè) int a=12,,則執(zhí)行完語(yǔ)句 a+=a-=a*a后,a的值是 a) 552 b) 264 c) 144 d) -264,、d、1
45,、設(shè) int b=2;表達(dá)式(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,則下列表達(dá)式中,,值為0的表達(dá)式是________ a)’a&&’b’ b)a<=b c)a||b+c&&b-c d)!((a
47,、設(shè)x、y,、z和k都是int型變量,則執(zhí)行表達(dá)式: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,寫出表達(dá)式的結(jié)果,。 !(x>y)+(y!=z)||(x+y)&&(y-z) a,、0 b、1 c,、-1 d,、6、b,、1
49,、設(shè)x和y均為int 型變量,則以下語(yǔ)句:x+=y;y=x-y;y=x-y;x-=y;的功能是 a、把x 和y按從大到小排列 b,、把x和y按從小到大排列 c,、無(wú)確定結(jié)果 d、交換x和y中的值,、d,、1
50、設(shè)有 int x=11; 則表達(dá)式 (x++ * 1/3) 的值是 a) 3 b) 4 c) 11 d) 12,、a,、1