華為c語言上機題
⑴ 9月計算機二級《C語言》上機考題及答案
1、以下選項中屬於C語言的數據類型是()。
A. 復合型
B. 雙精度型
C. 邏輯型
D. 集合型
2、以下說法中正確的是()。
A. C語言程序總是從第一個的函數開始執行
B. 在C語言程序中,要調用的函數必須在main()函數中定義
C. C語言程序總是從main()函數開始執行
D. C語言程序中的main()函數必須放在程序的開始部分
3、選出下列標識符中不是合法的標識符的是()。
A. hot_do
B. cat1
C. _pri
D. 2ab
4、下列描述中不正確的是()。
A、字元型數組中可能存放字元串。
B、可以對字元型數組進行整體輸入、輸出。
C、可以對整型數組進行整體輸入、輸出。
D、 不能在賦值語句中通過賦值運算符“=”對字元型數組進行整體賦值。
5、若已定義:int a[9], *p=a;並在以後的語句中未改變p的值,不能表示a[1]地址的表達式為()。
A. p+1
B. a+1
C. a++
D. ++p
6、設有如下定義: int x=10,y=3,z; 則語句printf("%d ",z=(x%y,x/y)); 的輸出結果是()。
A. 1
B. 0
C. 4
D. 3
7、定義如下變數和數組: int i, x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句for(i=0;i<3;i++) printf("%d",x[i][2-i]); 的輸出結果是()
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
8、讀出以下語句的輸出結果是()。
int x=10,y=10;
printf(“%d %d ”,x--,--y);
A. 10 10
B. 9 9
C. 9 10
D. 10 9
9、兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是()。
if(x++>5) printf("%d",x);
else printf("%d ",x - -);
A. 7和5
B. 6和3
C. 7和4
D. 6和4
10、設有如下定義:char *aa[2]={"abcd","ABCD"};則以下說法中正確的是()。
A)aa數組成元素的值分別是"abcd"和ABCD"
B)aa是指針變數,它指向含有兩個數組元素的字元型一維數組
C)aa數組的兩個元素分別存放的是含有4個字元的一維字元數組的`首地址
D)aa數組的兩個元素中各自存放了字元’a’和’A’的地址
11、以下語句的輸出結果是()。
int a=-1,b=4,k;
k=(+ +a<0)&&!(b - -<=0);
printf("%d,%d,%d ",k,a,b);
A. 1,0,4
B. 1,0,3
C. 0,0,3
D. 0,0,4
12、下列程序的輸出結果是()。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A. xyabcAB
B. abcABz
C. ABabcz
D. xycdBCD
13、執行下面的程序後,a的值是()。
#define SQR(X) X*X
main()
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d ",a); }
A. 10
B. 1
C. 9
D. 0
14、設A為存放(短)整型的一維數組,如果A的首地址為P,那麼A中第i 個元素的地址為()。
A.P+i*2
B. P+(i-1)*2
C. P+(i-1)
D. P+i
15、下列程序執行後輸出的結果是()。
int d=1;
fun (int p)
{ int d=5;
d + =p + +;
printf("%d,",d); }
main()
{ int a=3;
fun(a);
d + = a + +;
printf("%d ",d); }
A. 8, 4
B. 9, 6
C. 9, 4
D. 8, 5
16、表達式:10!=9的值是()。
A. true
B. 非零值
C. 0
D. 1
17、若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是()。
A. i= *p;
B. *p=*&j;
C. i=&j;
D. i=* *p;
18、不能把字元串:Hello!賦給數組b的語句是()。
A. char b[10]={’H’,’e’,’l’,’l’,’o’,’!’};
B. char b[10]; b="Hello!";
C. char b[10]; strcpy(b,"Hello!");
D.char b[10]="Hello!";
19、在C程序中有如下語句:char *func(int x,int y); 它是()。
A. 對函數func的定義。
B. 對函數func的調用。
C.對函數func的原型說明。
D. 不合法的。
20、以下程序的輸出結果是()。
char str[15]=”hello!”;
printf(“%d ”,strlen(str));
A. 15
B. 14
C. 7
D. 6
參考答案:
1、B 2、C 3、D 4、C 5、C 6、D 7、C 8、D 9、C 10、D
11、D 12、D 13、B 14、B 15、A 16、D 17、B 18、B 19、C 20、D
⑵ 華為機考試考什麼題型呢
華為南京地區校園招聘軟體類上機考試說明同學您好!歡迎您應聘華為公司。軟體研發類崗位(軟體研發、雲計算、操作系統開發、資料庫開發)需要提前進行上機考試。現將上機考試做如下說明。一、 題目類別本次上機考試題目設置C/C++、java兩個類別,根據個人情況選作一個類別。二、 題目數量每個考生有三道題,第一二道題必答,第三道題為附加題可以選作,附加題做出,成績會計入總分。三、 考試時間安排1、簡歷篩選後,從9月17日開始分批安排上機考試2、每個考生上機考試時間為2小時一、 上機考試步驟1、打開IE輸入伺服器的IP地址或者直接打開收藏夾中已經收藏好的地址;2、輸入姓名和手機號,選擇考試語言,提交登錄: 3、登錄後會進入試題說明頁面,考試閱讀完試題要求後,在頁面下方點擊 下載試題框架並解壓到D盤。如果是C/C++則用VC打開 工程進行編程,只在func.cpp文件中進行函數編寫,函數名已經定義好;如果是Java則用Eclips打開Java工程進行編程,只在SWTest.java文件中進行函數編寫,函數名已經定義好。注意,考生不要進行任何IO輸入輸出的處理(題目說明中已經有寫了),否則會得0分。4、編完代碼並編譯和調試通過後,點擊試題頁面下方的 按鈕,在彈出的窗口中,如果是C/C++則將test.exe和func.cpp拷貝到一個名為test的目錄中然後打包該目錄上傳,如果是Java則將工程仍然打包為SWTest.rar一次性上傳(這個過程非常重要,否則會因無法自動判卷而得0分)。上傳之後頁面會顯示「提交成功」,然後關閉所有IE窗口並清空客戶機中您所創建的所有內容後結束考試離開考場。二、 如何閱卷1、考生提交試卷後,我們在伺服器後台執行系統閱卷程序,進行自動判卷,不進行人工閱卷。2、系統設置了多個測試用例,根據用例執行的情況判斷考生所上機考試的分數。三、 樣題編寫一個函數,統計出具有n個元素的一維數組中大於等於所有元素平均值的元素的個數並返回。 預祝您上機考試順利! 華為南京校園招聘組2011年9月 華為南京校園招聘組
華為技術有限公司Huawei Technologies Co., Ltd.
Email: [email protected]
地址:南京雨花台軟體大道101號華為南京基地 郵編:210012
Huawei Technologies Co., Ltd.
⑶ C語言的初級上機題,閱讀下面的程序並分析其運行結果。
A:不管你輸入什麼數字,結果都是OK!
分析:對if中的條件表達式來看,他的格式是x=1.23,咋一看,好像是判斷輸入的值與1.23比較,但是,你要明白,C中一個=是賦值的意思,而兩個==是判斷的意思,完全是不同的運算符。所以,這個x=1.23就編程了賦值的意思了,可不是判斷哦。那麼,判斷在哪兒呢?這就要給你說了,對於用在判斷或者條件部分的表達式如果不是顯示表達式,那麼首先將這個表達式化簡,就是看他到底是用哪個量來參與運算的了。這兒明顯是x直接參與運算。這時候,系統默認是這個量與0進行比較。如果這個量正好為0,那麼好,算條件不成立,如果是非零值,那麼好,算條件成立,但是這個判斷是虛擬判斷,他可完全又不等價與寫成顯示表達方式的,這個要區別開。即,在條件部分 x 與 x==0,可不是一樣的哦 假設x正好為0,你算一下給你的這兩個表達式做條件時其條件結果各為多少。
2、那這時候,有可能是OK!,有可能就什麼也沒有輸出。
⑷ C語言數據結構上機題
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct LNode
{
char data;
struct LNode * next;
}LNode,* LinkList;
void CreateList(LinkList &L)//創建鏈表存放26個字母組成的線性表
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
char c='z';
for(int i=26;i>0;i--)
{
LNode *p;
p=(LinkList)malloc(sizeof(LNode));
p->data=c--;
p->next=L->next;
L->next=p;
}
}
bool ListInsert(LinkList &L,int i,char c)//在第i個位置插入字母c
{
LNode * p=L;int j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return false;
LinkList s=(LinkList)malloc(sizeof(LNode));
s->data=c;
s->next=p->next;
p->next=s;
return true;
}
void main()
{
LinkList L;
CreateList(L);//1.創建鏈表存放26個字母組成的線性表
char c;int i;
cout<<"輸入插入的字母"<<endl;
cin>>c;
cout<<"輸入插入的位置(整數)"<<endl;
cin>>i;
if(ListInsert(L,i,c))//在第i個位置插入字母c
{
while(L->next!=NULL)//將插入後的線性表輸出
{
cout<<L->next->data;
L=L->next;
}
}
}
//辛苦寫完...剛調試通過...加分啊..
調試是在C++環境下調試的,如果你要在C環境下..把
cout<<L->next->data; 改為:
printf("%d",L->next->data);
cin>>c;改為:scanf("%c",c);
就ok了......
ps: o_o一般上機都是C++吧......
⑸ 華為C語言上機試題
#include <stdio.h>
#include <assert.h>
void take_num(const char *strIn, int *n, unsigned int *outArray)
{
const char * p = strIn;
int next = 0;
*n = 0;
outArray[0] = 0;
assert(p && n && outArray);
for (p = strIn;*p;p++) {
if (('0'<=*p)&&(*p<='9')) {
outArray[*n] = (outArray[*n] * 10)+((*p) - '0');
next = 1; /*後面還有*/
} else {
if (next == 1) {
(*n)++;
}
next = 0;
}
}
}
void max_prefix_match(const char *ip_addr, const char *net_addr_array[], int *n)
{
int ip,tar_net,tar_mask;/*ip地址*/
int ip_it[4],net_it[4],mask_it[4];
char * p;
int index,max_index,cur_bits,max_bits = 0,bit;
*n = -1;
sscanf(ip_addr,"%d.%d.%d.%d",&ip_it[0],&ip_it[1],&ip_it[2],&ip_it[3]);
ip = ((ip_it[0]<<24)+(ip_it[1]<<16)+(ip_it[2]<< 8)+ip_it[3]);
for (index = 0;net_addr_array[index][0] != '\0';index++) {
/*獲取網路號和掩碼*/
p = net_addr_array[index];
sscanf(p,"%d.%d.%d.%d/%d.%d.%d.%d",
&net_it[0],&net_it[1],&net_it[2],&net_it[3],
&mask_it[0],&mask_it[1],&mask_it[2],&mask_it[3]);
tar_mask = ((mask_it[0]<<24)+(mask_it[1]<<16)+(mask_it[2]<< 8)+mask_it[3]);
tar_net = ((net_it[0]<<24)+(net_it[1]<<16)+(net_it[2]<< 8)+net_it[3]);
if (((tar_mask) & (ip)) == (tar_net)) {
cur_bits = 0;
/*計算1的個數*/
for (bit = 0;bit < sizeof(tar_mask) * 8;bit++) {
cur_bits += tar_mask&1;
tar_mask >>= 1;
}
if (cur_bits > max_bits) {
max_bits = cur_bits;
max_index = index;
}
}
}
if (max_bits != 0) {
*n = max_index;
}
}
int main()
{
int i, n,arrayOut[100] = {0};
char *strIn = "ab00cd+123fght456-25 3.005fgh";
char *ip_addr = "192.168.1.100 ";
char *net_addr_array[1024] = {
"192.168.1.128/255.255.255.192",
"192.168.1.0/255.255.255.0",
"192.168.1.64/255.255.255.192",
"0.0.0.0/0.0.0.0",
""
};
take_num(strIn,&n,arrayOut);
printf("<1>:input:%s\noutput: [%d]\n",strIn,n);
for (i = 0;i < n;i++) {
printf("%d\n",arrayOut[i]);
}
max_prefix_match(ip_addr,net_addr_array,&n);
if (n != -1) {
printf("<2>max:[%d] %s",n,net_addr_array[n]);
}
return 0;
}