當前位置:首頁 » 編程語言 » c語言面試字元串
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言面試字元串

發布時間: 2023-06-10 11:01:42

㈠ 經典c語言面試演算法題

經典C語言面試演算法題

1.寫一個函數,它的原形是int continumax(char *outputstr,char *intputstr)

功能:

在字元串中找出連續最長的數字串,並把這個串的長度返回,並把這個最長數字串付給其中一個函數參數outputstr所指內存。例如:"abcd12345ed125ss123456789"的首地址傳給intputstr後,函數將返回

9,outputstr所指的值為123456789。

#include

#include

#include

int FindMax_NumStr(char *outputstr,char *inputstr)

{

char *in = inputstr,*out = outputstr,*temp;

char *final;

int count = 0;

int maxlen = 0;

int i;

while(*in!='')

{

if(*in > 47 && *in < 58)

{

for(temp = in;*in> 47 && *in <58;in++)

count++;

}

else

in++;

if(maxlen < count)

{

maxlen = count;

count = 0;

final = temp;

}

}

for(i =0;i

{

*out = *final;

out++;

final++;

}

*out = '';

return maxlen;

}

void main(void)

{

char input[]="abc123def123456eec123456789dd";

char output[50] = {0};

int maxlen;

maxlen = FindMax_NumStr(output,input);

printf("the str %s ",output);

printf("the maxlen is %d ",maxlen);

}

2.求1000!的未尾有幾個0;

求出1->1000里,能被5整除的數的個數n1,能被25整除的數的個數n2,能被125整除的'數的個數n3,能被625整除的數的個數n4.1000!末尾的零的個數=n1+n2+n3+n4;

只要是末尾是5的數它乘以一個偶數就會出現一個0,而末尾是0的數乘以任何數也都會出現0

而末尾是0的如果是一個0肯定能被5整除,兩個0肯定能被25整數,以此類推3個0就能被5的三次方整除,也就是125

1000!就是1-1000數的相乘,能被5整除的所有數分別乘以一個偶數就會出現這些個的0,而例如100,既能被5整除,也能被25整除,所以就是兩個0

1000,既能被5,25,也能被125整除,所以算三個0

例如是10!=1*2*3*4*5*6*7*8*9*10,裡面有兩個數能被5整除,就是10和5,而

5隨便乘以一個偶數就出現一個0,而10乘以其它數也會出現一個0,所以10!會有兩個0

#include

#define NUM 1000

int find5(int num)

{

int ret = 0;

while(num%5==0)

{

num/=5;

ret++;

}

return ret;

}

int main(void)

{

int result = 0;

int i;

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

result +=find5(i);

printf("the total zero number is %d ",result);

return 0;

}

3。編寫一個 C 函數,該函數在一個字元串中找到可能的最長的子字元串,且該字元串是由同一字元組成的。

char * search(char *cpSource, char ch)

{

char *cpTemp=NULL, *cpDest=NULL;

int iTemp, iCount=0;

while(*cpSource)

{

if(*cpSource == ch)

{

iTemp = 0;

cpTemp = cpSource;

while(*cpSource == ch)

++iTemp, ++cpSource;

if(iTemp > iCount)

iCount = iTemp, cpDest = cpTemp;

if(!*cpSource)

break;

}

++cpSource;

}

return cpDest;

}

;

㈡ c語言指針面試常見問題

c語言指針面試常見問題

指針的使用,一直是c語言面試題中必考的部分,因為指針本身使用的復雜性與普適性,所以考點非常多,而且也可以與其他知識相互結合,因此我們將會使用五篇專題的篇幅來介紹指針。

分析下面的程序,指出程序中的錯誤:

本題解析

沒有正確為str分配內存空間,將會發生異常。問題出在將一個字元串復制進一個字元變數指針所指地址。雖然編譯的時候沒有報錯,但是在運行過程中,因為越界訪問了未被分配的內存,而導致段錯誤。

相關知識點

在處理與指針相關的問題時,首先需要搞明白的就是內存,因為指針操作的就是內存。

第一個,就是內存的分區。這也是經常會被考察的一個考點。

寫出內存分為幾大區域

對於這個問題,有幾種不同的說法,有的說內存分為五大分區,有的說分為四大分區,我們先來看五大分區的說法:

認為內存分為五大分區的人,通常會這樣劃分:

1、BSS段( bss segment )

通常是指用來存放程序中未初始化的'全局變數和靜態變數 (這里注意一個問題:一般的書上都會說全局變數和靜態變數是會自動初始化的,那麼哪來的未初始化的變數呢?變數的初始化可以分為顯示初始化和隱式初始化,全局變數和靜態變數如果程序員自己不初始化的話的確也會被初始化,那就是不管什麼類型都初始化為0,這種沒有顯示初始化的就 是我們這里所說的未初始化。既然都是0那麼就沒必要把每個0都存儲起來,從而節省磁碟空間,這是BSS的主要作用)的一塊內存區域。BSS是英文Block Started by Symbol的簡稱。BSS段屬於靜態內存分配。 BSS節不包含任何數據,只是簡單的維護開始和結束的地址,即總大小。以便內存區能在運行時分配並被有效地清零。BSS節在應用程序的二進制映象文件中並不存在,即不佔用 磁碟空間 而只在運行的時候佔用內存空間 ,所以如果全局變數和靜態變數未初始化那麼其可執行文件要小很多。

2、數據段(data segment)

通常是指用來存放程序中已經初始化的全局變數和靜態變數的一塊內存區域。數據段屬於靜態內存分配,可以分為只讀數據段和讀寫數據段。字元串常量等,但一般都是放在只讀數據段中。

3、代碼段(code segment/text segment)

通常是指用來存放程序執行代碼的一塊內存區域。這部分區域的大小在程序運行前就已經確定,並且內存區域通常屬於只讀, 某些架構也允許代碼段為可寫,即允許修改程序。在代碼段中,也有可能包含一些只讀的常數變數,例如字元串常量等,但一般都是放在只讀數據段中 。

4、堆(heap)

堆是用於存放進程運行中被動態分配的內存段,它的大小並不固定,可動態擴張或 縮減。當進程調用malloc等函數分配內存時,新分配的內存就被動態添加到堆上(堆被擴張); 當利用free等函數釋放內存時,被釋放的內存從堆中被剔除(堆被縮減)

5、棧 (stack)

棧又稱堆棧, 是用戶存放程序臨時創建的局部變數,也就是說我們函數括弧「{}」 中定義的變數(但不包括static聲明的變數,static意味著在數據段中存放變 量)。除此以外, 在函數被調用時,其參數也會被壓入發起調用的進程棧中,並且待到調用結束後,函數的返回值 也會被存放回棧中。由於棧的先進先出特點,所以 棧特別方便用來保存/恢復調用現場。從這個意義上講,我們可以把堆棧看成一個寄存、交換臨時數據的內存區。

而四大分區的說法,則這么認為:

1、堆區:

由程序員手動申請,手動釋放,若不手動釋放,程序結束後由系統回收,生命周期是整個程序運行期間。使用malloc或者new進行堆的申請,堆的總大小為機器的虛擬內存的大小。

說明:new操作符本質上是使用了malloc進行內存的申請,new和malloc的區別如下:

(1)malloc是C語言中的函數,而new是C++中的操作符。

(2)malloc申請之後返回的類型是void*,而new返回的指針帶有類型。

(3)malloc只負責內存的分配而不會調用類的構造函數,而new不僅會分配內存,而且會自動調用類的構造函數。

2、棧區:

由系統進行內存的管理。主要存放函數的參數以及局部變數。在函數完成執行,系統自行釋放棧區內存,不需要用戶管理。整個程序的棧區的大小可以在編譯器中由用戶自行設定,VS中默認的棧區大小為1M,可通過VS手動更改棧的大小。64bits的Linux默認棧大小為10MB,可通過ulimit -s臨時修改。

3、靜態存儲區:

靜態存儲區內的變數在程序編譯階段已經分配好內存空間並初始化。這塊內存在程序的整個運行期間都存在,它主要存放靜態變數、全局變數和常量。

注意:

(1)這里不區分初始化和未初始化的數據區,是因為靜態存儲區內的變數若不顯示初始化,則編譯器會自動以默認的方式進行初始化,即靜態存儲區內不存在未初始化的變數。

(2)靜態存儲區內的常量分為常變數和字元串常量,一經初始化,不可修改。靜態存儲內的常變數是全局變數,與局部常變數不同,區別在於局部常變數存放於棧,實際可間接通過指針或者引用進行修改,而全局常變數存放於靜態常量區則不可以間接修改。

(3)字元串常量存儲在靜態存儲區的常量區,字元串常量的名稱即為它本身,屬於常變數。

(4)數據區的具體劃分,有利於我們對於變數類型的理解。不同類型的變數存放的區域不同。後面將以實例代碼說明這四種數據區中具體對應的變數。

4、代碼區:

存放程序體的二進制代碼。比如我們寫的函數,都是在代碼區的。

通過上面的不同說法,我們也可以看出,這兩種說法本身沒有優劣之分,具體的內存劃分也跟編譯器有很大的關系,因此這兩種說法都是可以接受的,搞明白內存的分區之後,指針的使用才能夠更加的靈活。

;

㈢ 面試題:C語言用十種方法實現hello world程序,怎麼做

1 最經典的「Hello world!」,直接用 printf 輸出 「Hello world!」
#include <stdio.h>
#include <iostream>

int main(){

printf("Hello world! "); // 教科書的寫法

puts("Hello world!"); // 我最喜歡的

puts("Hello" " " "world!"); // 拼接字元串

std::cout << "Hello world!" << std::endl; // C++風格的教科書寫法

return 0;}

2、用宏寫的「Hello world!」

「#」可以「提取」參數的名 字,把它變成字元串。

#include <stdio.h>

#define Say(sth) puts (#sth)

int main(){

return Say(Hello world!);

}

3. 斷章取義的「Hello world!」

#include <stdio.h>

int main(){
return puts ("Do not say: Hello world! "[12]);

}

4. 退出時運行的「Hello world!」

atexit()注冊回調函數。這個函數可以調用多次,最後注冊的函數最先執行。
#include <stdio.h>

#include <stdlib.h>
void say(){printf("world! ");}
void sth(){printf("Hello ");}
int main(){
return atexit(say), atexit (sth);
}
5. 讀取自己的「Hello world!」
// Hello world!
#include <iostream>

#include <fstream>
#include <string>
int main(){
std::ifstream ifs(__FILE__);
std::string say, some, word;
ifs >> say >> some >> word;
std::cout << some << " " << word;
return 0;
}
6. 話分兩頭的「Hello world!」
聲明一個全局的類的實例,在 main 函數執行之前會調用這個類的構造函數,結束之後則會調用析構函數。
#include <iostream>

class say{
public:say(){std::cout << "Hell";}
~say(){std::cout << "world!";}
}hello;
int main(){
std::cout << "o ";
return 0;
}
7. 傳入模板的「Hello world!」
#include <iostream>

template <char * words>
class say{
public:
void operator () (){std::cout << words;}
};
char hello[] = "Hello world!";
int main(){
return say<hello>()(), 0;
}
8. 調用私有函數的「Hello world!」

#include <iostream>

#include <cstddef>

class secret{

private:

virtual void say(){std::cout << "Hello world!";}

};

int main(){

secret word;

(reinterpret_cast<void (*)()>(**(intptr_t**)(&word)))();

return 0;

}

9. 直接修改函數的返回地址
#include <stdio.h>

#include <stdlib.h>
#include <stddef.h>
void say(){
puts("Hello world!");
exit(0);
}
int main()
{
volatile intptr_t a = 0;
volatile intptr_t * p = &a;
*(p + 2) = (intptr_t)say;
*(p + 3) = (intptr_t)say;
return 0;
}
10. 外星人說的「Hello world!」
#include <stdio.h>

void alien_say (char * p){
while (putchar (*(p += *(p + 1) - *p)));
}
int main(){
return alien_say ("BETHO! Altec oh liryom(a loadjudas!) dowd."), 0;
}

㈣ 幾個常見的C語言面試題分析

一次去一個小公司面試,沒有太重視,當時由於工作甚忙,也沒作準備。他們給我的試卷有大量的題,規定一個小時必須做完,一看題量,嚇了一大跳,題有鏈表,有多維數組,有大量的程序閱讀,幸虧基本功還算扎實,未辱使命,差強完成。等到做到編程題時,才發現自己太長時間沒有寫過程序了,讓一些瑣碎的改BUG工作和代碼維護浪費了太多的精力。一直做下去,心裡暗暗吃驚,一個小時,這個題量如果是在剛畢業時,還是有可能完成的,工作幾年後,壓力漸小,寫程序基本都是拿來主義,對標准庫函數的原理把握和編程能力越來越退化。由於當時時間緊迫,所寫程序也不夠完善,過後又思考了一下,回到家後趕緊又對這些問題總結了一下。下面對面試中遇到的編程問題分析了一下。真是人在社會如江湖呀,學習是一刻也不能放鬆的事。稍一不慎,晚節不保不說,反而會陰溝里翻船。
1.獲取路徑下的文件名
char * FindFileName(char * s)
{
int len;
char *tmp=NULL;
ASSERT(s != NULL);
for (len=strlen(s); len>0;len--)
{
if((s[len]=='/') ||(s[len]=='//'))
{
tmp = &s[len+1];
break;
}
}
return tmp;
}
2.把整型轉化為字元型
char * i2a(int n, char *s)
{
int i, sign;
ASSERT(s != NULL);
if ((sign = n) < 0)
{
n = -n; //轉為正數,利於取位
}

do
{
s[i++] = n % 10 + '0';
}
while ((n /= 10) > 0)
if (sign < 0)
{
s[i++] = '-';
}
s[i] = '/0';
reverse(s);
}
3.把字元型轉為整型
int a2i(char * s)
{
int i, n, sign;
ASSERT(s != NULL);
for (i = 0; s[i] == ' '; i++)
{
NULL; //如果字串前有空格,跳過所有空格
}
sign = (s[i] == '-') ?: -1 : 1;
if (s[i] == '+' || s[i] == '-')
{
i++; //判斷是正整數串還是負整數串
}
for (n = 0; s[i] > = '0' && s[i] <= '9'; i++)
{
n = 10 * n + (s[i] - '0');
}
return sign*n;
}
4.輸出字元串倒文,不能動態分配內存
char * reverse(char * s)
{
int c, i, j;
ASSERT(s != NULL);
for (i = 0, j = strlen(s) - 1; i < j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
return s;
}
5.查找子串是否存在
int strindex(char *str,char *searchstr)
{
int end, i, j;
ASSERT((str != NULL) && (searchstr != NULL));
//計算結束位置
end = strlen(str) - strlen(searchstr);
if ( end > 0 )
{
for ( i = 0; i <= end; i++ )
{
for ( j = i; str[j] == searchstr[j-i]; j++ )
{
if ( searchstr[j-i+1] == '/0' ) /* 子字元串字結束 */
{
return i + 1; /* 找到了子字元串 */
}
}
}
}
return -1;
}

㈤ c語言面試常考的關鍵字

double :聲明雙精度變數或函數
int: 聲明整型變數或函數
struct:聲明結構體變數或函數
break:跳出當前循環
else :條件語句否定分支(與 if 連用)
long :聲明長整型變數或函數
switch :用於開關語句
case:開關語句分支
enum :聲明枚舉類型
typedef:用以給數據類型取別名(當然還有其他作用)
char :聲明字元型變數或函數
extern:聲明變數是在其他文件正聲明(也可以看做是引用變數)
return :子程序返回語句(可以帶參數,也看不帶參數)
union:聲明聯合數據類型
const :聲明只讀變數
float:聲明浮點型變數或函數
short :聲明短整型變數或函數

㈥ 求C語言面試筆試題:與C語言相關的字元輸入輸出筆試題

一份曾經的考卷+答案~~//後面的編程題是以前做過的實驗~~

《程序設計基礎-C》試卷
一、單項選擇題
1. C 語言程序中可以對程序進行注釋,注釋部分必須用符號_____括起來。
A、『』 B、『[『和』]』 C、「/*」和」*/」 D、「*/」和」/*」
2. 下列運算符中,優先順序最低的是_____。
A、* B、!= C、+ D、=
3. 若變數已正確定義,表達式 (j=3, j++) 的值是_____ 。
A、3 B、 4 C、5 D、0
4. 已知字元 『a』 的ASCII碼為 97 ,執行下列語句的輸出是_____。
printf ("%d, %c", 』b』, 』b』+1 ) ;
A、98, b B、語句不合法 C、98, 99 D、 98, c
5. 表達式strcmp(「box」, 「boss」) 的值是一個_______。
A、 正數 B、 負數 C、 0 D、 不確定的數
6. 數組定義為 int a[3][2]=,數組元素_____的值為6。
A、a[3][2] B、a[2][1] C、a[1][2] D、a[2][3]
7. 要調用數學函數時,在#include命令行中應包含_____。
A、 」stdio.h」 B、 」string.h」 C、 」math.h」 D、 」ctype.h」
8. 判斷i和j至少有一個值為非0的表達式是_____。
A、 i!=0 && j!=0 B、i*j!=0 C、!(i==0 || j==0) D、i&&j
9. 若a是基本整型變數,c是單精度實型變數,輸入語句______是錯誤的。
A、scanf(」%d,%f」, &a, &c); B、scanf(」d=%d, c=%f」, &a, &c);
C、scanf(」%d%f」, &a, &c); D、scanf(」%d%f」, a, c);
10. 若變數已正確定義並且指針p已經指向某個變數x,則(*p)++相當於_____。
A、p++ B、x++ C、*(p++) D、&x++
11. 若p1、p2都是整型指針,p1已經指向變數x,要使p2也指向x, _____是正確的。
A、p2=p1; B、p2=**p1; C、p2=&p1; D、p2=*p1;
12. 下列程序段的輸出是_____。
int c[]=;
int *k=c+1;
printf("%d", *++k);
A、 3 B、 5 C、 4 D、6
13. 不正確的賦值或賦初值的方式是______。
A、char str[]="string";
B、char str[7]=;
C、char str[10];str="string";
D、char str[7]=;
14. 對於以下結構定義,++p->str中的++加在_____。
struct {
int len;
char *str;
} *p;
A、指針str上 B、指針p上 C、str指的內容上 D、以上均不是
15. 對於如下說明,語法和語義都正確的賦值是_____。
int c, *s, a[]=;
A、c=*s; B、 s[0]=a[0]; C、s=&a[1]; D、 c=a;

二、填空題
1. 寫出下列程序段的輸出結果。
float x1, x2;
x1=3/2;
x2=x1/2;
printf("%d, %.1f", (int)x1, x2) ;
2. 表達式 (7<<1>>2^2 ) 的值是_______。
3. 寫出下列程序段的輸出結果。
#define A 10
#define B (A<A+2)-2
printf("%d", B*2);
4. 寫出判斷字元變數c是英文字母的表達式 。
5. 寫出下列程序段的輸出結果。
int k, x;
for (k=0, x=0; k<=9&&x!=10; k++)
x+=2;
printf ("%d, %d", k, x) ;
6. 寫出下列程序段的輸出結果。
printf(「%d, %d」, NULL, EOF);
7. 對於以下遞歸函數f,調用 f (3) 的返回值是_____。
f (int n)

8. 寫出下列程序段的輸出結果。
char str[]="hello\tworld\n";
printf("%d, %c\n", sizeof(str), *(str+10));
9. 輸入12345#後,寫出下列程序的輸出結果。
void main()
{ char c;
for(c=getchar(); getchar()!=』#』; c=getchar())
putchar(c);
}
10. 執行程序find –nx ould text.txt時,*++argv[1]的值是_______。
三、程序閱讀題
1. 若輸入 3 1 2 3 <回車> , 則以下程序的輸出結果是_______。
#include "stdio.h"
void main()
{ int i, j, n, a[10];
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%d",&a[i]);
for (i=0; i<n; i++)
for (j=0; j<n; j++)
printf("%d, ", a[(i+j)%n]);
}
2. 若輸入89 76 24 25 9 8 11 16 35 4 <回車> , 則以下程序的輸出結果是_______。
#include "stdio.h"
#define N 10
main()
{
int x[N], y1[N], y2[N];
int i, j, n1, n2, t, p;
n1=n2=0;
for(i=0;i<N;i++){
scanf(「%d」, &x[i]);
if(x[i] % 2==0) y1[n1++]=x[i];
else y2[n2++]=x[i];
}
for(i=1; i<n1; i++)
for(j=0; j<n1-1; j++)
if(y1[j]>y1[j+1]){
t=y1[j]; y1[j]=y1[j+1]; y1[j+1]=t;
}
for(i=0; i<n2-1; i++){
p=i;
for(j=i+1; j<n2; j++)
if(y2[p]<y2[j]) p=j;
if(p!=i){
t=y2[i]; y2[i]=y2[p]; y2[p]=t;
}
}
for(i=0; i<n1; i++) printf("%d, ", y1[i]);
for(i=0; i<n2; i++) printf("%d, ", y2[i]);
}
3. 以下程序的輸出結果是_______。
#include <stdio.h>
int z;
void p(int *x, int y)
{ ++*x;
y--;
z=*x+y+z;
printf("%d, %d, %d#", *x, y, z);
}
void main()
{ int x=1, y=5, z=9;
p(&x, y);
printf("%d, %d, %d#", x, y, z);
}
4. 若輸入 -6+15*3/5=<回車> , 則以下程序的輸出結果是_______。
#include <stdio.h>
void main()
{
int m=0, sum=0;
char c, oldc='+';
do {
c=getchar();
if(c<='9'&&c>='0') m=10*m+c - '0';
else {
if(oldc=='+') sum += m;
else sum -= m;
m=0;
oldc=c;
printf("%d, ", sum);
}
} while(c!='=');
}

四、程序填空題
下列程序的功能是創建單向鏈表。
#include <stdio.h>
#include <alloc.h>
struct link {
char name[10];
int mark;
struct link * next;
};
void insert(char *, int);
struct link * head = NULL;
main()
{
char name[10];
int mark;
struct link * t;
while ( 1 ) {
scanf("%s %d", name, &mark);
if ( strcmp(name, "#") == 0 ) break;
______(1)_______;
}
for (t=head; ______(2)_______)
printf("<%s>: %d\n", t->name, t->mark);
}
void insert(char * name, int mark)
{
struct link * p;
p = ______(3)_______ ;
strcpy(p->name, name);
p->mark = mark;
______(4)_______;
if ( head != NULL ) ______(5)_______;
head = p;
}

答案
2000~2001學年《程序設計基礎C》參考答案

一、單項選擇題
C D A D A B C B D B A B C A C
二、填空題
1 1, 0.5
2 1
3 -3
4 c>=』a』&&c<=』z』|| c>=』A』&&c<=』Z』
5 5, 10
6 0, -1
7 -17
8 13, d
9 13
10 『n』
三、程序閱讀題
1 1, 2, 3, 2, 3, 1, 3, 1, 2,
2 4, 8, 16, 24, 76, 89, 35, 25, 11, 9,
3 2, 4, 6#2, 5, 9#
4 0, -6, 9, 6, 1,
四、程序填空題
(1) insert(name, mark)
(2) t!=NULL; t=t->next
(3) (struct link *)malloc(sizeof(struct link))
(4) p->next = NULL
(5) p->next = head

編程
程序填空,不要改變與輸入輸出有關的語句。
輸入一個正整數repeat (0<repeat<10),做repeat次下列運算:
給定平面任意兩點坐標 (x1, y1) 和 (x2, y2),求這兩點之間的距離(保留2位小數)。
要求定義和調用函數 dist(x1, y1, x2, y2)計算兩點間的距離,函數形參x1、y1、x2和y2的類型都是double,函數類型是double。
輸入輸出示例:括弧內是說明
輸入
1 (repeat=1)
10 10 (x1=10, y1=10)
200 100 (x2=200, y2=100)
輸出
Distance = 210.24

#include <stdio.h>
#include <math.h>
double dist(double x1, double y1, double x2, double y2);
int main(void)
{
int repeat, ri;
double distance, x1, y1, x2, y2;

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
/*---------*/
printf("Distance = %.2f\n", distance);
}
}

/*---------*/

程序填空。
求1~100中能被6整除的所有整數的和

#include <stdio.h>
int main(void)
{
int i, sum = 0;
/*---------*/
printf("%d", sum);
}

程序填空,不要改變與輸入輸出有關的語句。
輸入一個正整數repeat (0<repeat<10),做repeat次下列運算:
讀入1 個實數x和正整數 n(n<=50),計算並輸出 x 的 n 次冪(保留2位小數),不允許調用pow函數求冪。
輸入輸出示例:括弧內是說明
輸入
2 (repeat=2)
1.5 2 (x=1.5,n=2)
2 7 (x=2,n=7)
輸出
2.25
128.00

#include <stdio.h>
int main(void)
{
int i, n;
int repeat, ri;
double mypow, x;

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%lf%d", &x, &n);
/*---------*/
printf("%.2f\n", mypow);
}
}

……編程題還有好多~~需要的話可以發給你~

㈦ 計算機程序c語言面試常見問題

計算機程序c語言面試常見問題

c語言作為計算機程序設計語言,是考察軟體工程師應聘者技術能力的關鍵。計算機程序c語言面試常見問題,我們來看看。

c語言 面試題 精選(筆試)

單選題部分

1、C語言程序的基本單位是____

A.語句

B.函數

C.程序行

D.字元

答案:B

2、C語言程序由()組成

A.子程序

B.過程

C.函數

D.主程序段程序

答案:C

3、演算法的表示方法有______

A.自然語言,傳統流程圖,N-S流程圖,偽代碼,計算機語言

B.高級語言,匯編語言,機器語言

C.C語言,QBASIC語言,InterDev

D.圖形圖像法,描述法,編程法

E.計算機語言

答案:A

4、下列變數定義中合法的是

A.short_a=1-.le-1;

B.doubleb=1+5e2.5;

C.longdo=0xfdaL;

D.float2_and=1-e-3;

答案:A

5、下面說法中正確的是()

A.int型和long型運算先將int型轉換成unsigned型,再轉換

B.兩個float型運算結果為double型

C.只要表達式中存在double型,所有其他類型數據都必須轉

D.表達式中的'類型轉換與運算順序有關

答案:C

6、以下不正確的敘述是

A.在C程序中,逗號運算符的優先順序最低

B.在C程序中,APH和aph是兩個不同的變數

C.若a和b類型相同,在計算了賦值表達式a=b後b中的值將放入a中,而b中的值不變

D.當從鍵盤輸入數據時,對於整型變數只能輸入整型數值,對於實型變數只能輸入實型數值

答案:D

7、以下說法中正確的是

A.#define和printf都是C語句

B.#define是C語句,而printf不是

C.printf是C語句,但#define不是

D.#define和printf都不是C語句

答案:D

8、若有條件表達式(exp)?a++:b–,則以下表達式中能完全等價於表達式(exp)的是

A.(exp==0

B.(exp!=0)

C.(exp==1)

D.(exp!=1)

答案:B

9、若有說明:inta[3][4]={0};則下面正確的敘述是

A.只有元素a[0][0]可得到初值0

B.此說明語句不正確

C.數組a中各元素都可得到初值,但其值不一定為0

D.數組a中每個元素均可得到初值0

答案:D

c語言面試問答題

1、局部變數能否和全局變數重名?

答:能,局部會屏蔽全局。要用全局變數,需要使用"::"

局部變數可以與全局變數同名,在函數內引用這個變數時,會用到同名的局部變數,而不會用到全局變數。對於有些編譯器而言,在同一個函數內可以定義多個同名的局部變數,比如在兩個循環體內都定義一個同名的局部變數,而那個局部變數的作用域就在那個循環體內。

2、如何引用一個已經定義過的全局變數?

答:extern

可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那麼在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連接期間報錯

3、全局變數可不可以定義在可被多個.C文件包含的頭文件中?為什麼?

答:可以,在不同的C文件中以static形式來聲明同名全局變數。

可以在不同的C文件中聲明同名的全局變數,前提是其中只能有一個C文件中對此變數賦初值,此時連接不會出錯。

;