Intel笔试面试题目

有如下程序: include using namespace std; int strle(char a[],char b[]) {int num=

有如下程序:

include <iostream>

using namespace std;

int strle(char a[],char b[])

{

int num=O,n=O;

while (* (a+num) !='\0')

num++;

while (b [n] )

{

* (a+num)=b [n];

num++;

n++;

}

return(num);

}

int main ()

{

char strl[80],str2[80],*p1=str1,*p2=str2;

cin>>p1;

cin>>p2;

cout<<strle(p1,p2)<<end1;

return 0;

}

运行上述程序,如果从键盘输入字符串qwerty和字符串abcd,则程序的输出结果是【 】。


正确答案:10
10 解析:函数strle()的功能是求出两字符串长度的总和。


有如下程序: include using namespace std; int main() { char st

有如下程序: #include <iostream> using namespace std; int main() { char str[100], *p; cout<<"Please input a string:"; cin>>str; p=str; for (int i=0; *p!='\0'; p++,i++); cout<<i<<endl; return 0; }运行这个程序时,若输入字符串为 abcdefgabcd则输出结果是

A.7

B.12

C.13

D.100


正确答案:A
解析:本题考查的知识点是:默认的输入格式。C++流所识别的输入数据的类型及其默认的输入格式包括:
short、int、long(signed、unsigned).与整型常量同
float、double、long double:与浮点数常量同
char(signed、unsigned):第一个非空白字符
char*(signed、unsigned):从第一个非空白字符开始到下一个空白字符结束
void*:无前缀的16进制数
bool:VC6.0中把0识别为false,其他的值均识别为true
注意其中空白字符和非空白字符的概念。空白字符是指空格、Tab符、回车换行等无显示的字符,否则就是非空白字符。本题的输入数据类型为char*,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefg abcd,其中abcdefg后有一个空格(空白字符)。所以输入后str中为字符串"abcdefg”,主函数中接下来for语句的作用是计算字符串p的长度。故最终输出的结果是"abcdefg”的长度7,本题应该选择A。


C数组名称是指针变量吗?

看这段程序,可是执行。#include <stdio.h>int main(int argc, char *argv[]){ struct info { char name[33]; int age; }; struct info aa[3]={"meng",20,"juan",29,"an",59}; struct info *p=aa; for(int i=0;i<3;i++,p++) printf("%-6s %d\n",p->name,p->age);}将其改成这样:#include <stdio.h>int main(int argc, char *argv[]){ struct info { char name[33]; int age; }; struct info aa[3]={"meng",20,"juan",29,"an",59}; //struct info *p=aa; for(int i=0;i<3;i++,aa++) printf("%-6s %d\n",aa->name,aa->age);}为什么就执行不了呢


C数组名称是指针变量吗 C数组名是个指针常量指向数组首元素的地址,常量是 不能自加或者自减的,所以 不能 aa++


有以下程序:includeincludeusingnameSpacestd;classperson{ intage; Char*nam

有以下程序:

include <iostream>

include <string>

using nameSpace std;

class person

{

int age;

Char * name;

public:

person ( int i, Char * str )

{

int j;

j = strlen( str ) + 1;

name = new char[ j ];

strcpy( name, str );

age = i;

}

~person()

{

delete name;

cout<<"D";

}

void display()

{

cout<<name<<":"<<age;

}

};

int main()

{

person demo( 30,"Smith" );

demo.display();

return 0;

}

则该程序的输出结果为:【 】。


正确答案:Smith:30 D
Smith:30 D 解析:本题考核类与对象的操作。主函数中定义类person的对象 demo,并赋初值(30,"smith")。然后调用成员函数display()输出赋值结果,即Smitch:30。程序结束时demo对象的析构函数被调用,再输出“D”。


请编写一个函数char *fun(char *s,int n)。函数fun()的功能是将字符串s中的字符“循环左移”n位。例如,输入“ABCDE”,则循环左移2位应输出“CDEAB”,输入“1234567”,循环左移3位应输出“4567123”。

注意:部分源程序已存在文件PROC13.cpp中。

请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。

文件PROC13.cpp的内容如下:

//PROC13.cpp

include <iostream>

include <string>

using namespace std;

char *fun(char *s,int n);

int main()

{

char str[81];

int n;

cout<<"Enter a string(less than 80 char)\n”;

cin>>str;

cout<<"\n Enter n:";

cin>>n;

if(n>strlen(str))

{

cout<<"\n Data overflow";

return 0;

}

cout<<"The result is: "<<fun(str,n)<<end1;

return 0;

}

char *fun(char*s,int n)

{

//* * * * * *

}


正确答案:


智力题 1每天中午从法国塞纳河畔的勒阿佛有一艘轮船驶往美国纽约,在同一时刻纽约也有一艘轮船驶往勒阿佛。已知横渡一次的时间是 7 天 7 夜,轮船匀速航行,在同一航线,轮船近距离可见。 请问今天中午从勒阿佛开出的船会遇到几艘从纽约来的船? 2巴拿赫病故于 1945 年 8 月 31 日。他的出生年份恰好是他在世时某年年龄的平方,问:他是哪年出生的? 答案: 设他在世时某年年龄为 x,则 x 的平方 struct bit int a:3; int b:2; int c:3; ; int main(int argc, char* argv) bit s; char *c = (char*) *c = 0x99; cout char *reverse(char* str) int len=0, i=0; char *pstr=str, *ptemp,*pd; while(*+pstr) len+; pstr-; /ptemp=(char*)malloc(len+1); ptemp=(char*)malloc(len+1); pd=ptemp; while(len-) *ptemp=*pstr; ptemp+; pstr-; i+; *ptemp=*pstr; ptemp+; *ptemp=0; return pd; main() char string40= “Hello World!”; char *pstr=string; printf(“%s”, pstr); printf(“%s”, reverse(pstr); 实验室笔试题 1写出下列信号的奈亏斯特频率 (1 )f (t )=1+cos(2000pait )+sin(4000pait) (2 )f (t )=sin (4000pait)/pait (3 )f (t )= (sin(4000pait)的平方)/pait 2有两个线程 void producer() while(1) GeneratePacket(); PutPacketIntoBuffer(); Signal(customer); void customer() while(1) WaitForSignal(); if(PacketInBuffer10) ReadAllPackets(); ProcessPackets(); (1 )有没有其他方法可以提高程序的性能 (2 )可不可以不使用信号之类的机制来实现上述的功能 3优化下面的程序 (0 )sum=0 (1 )I=1 (2 )T1=4*I (3 )T2=address(A)-4 (4 )T3=T2T1 (5 )T4=address(B)-4 (6 )T5=4*I (7 )T6=T4T5 (8 )T7=T3*T5 (9 )sum=sum+T6 (10 )I=I+1 (11 )IF I20 GOTO (2)

不合法的main函数命令行参数表示形式是______。

A.main(int a,char*c[])

B.main(int arc, char **arv)

C.main(int argc,char*argv)

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


正确答案:C


不合法的main函数命令行参数表示形式是( )。

A.main (int a,char*c[1])

B.main (int arc, char**arv)

C.main (int argc, char*argv)

D.main (int argy, char*argc[])


正确答案:C


下列属于不合法的main函数命令行参数表示形式的是( )。

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

B.main(int argv,char*argc)

C.main(int argv,char**arc)

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


正确答案:B
解析:main函数通常可用两个参数,参数名可由用户自定,但类型是固定的,第一个参数必须是整型,第二个参数是一个指向字符型的指针数组的指针,可以表示为**arc或*argc[]。4个选项中只有选项B不符合。


以下程序运行后输入:3,abcde<回车>,则输出结果是【 】include move(char *str,

以下程序运行后输入:3,abcde<回车>,则输出结果是【 】

include <string.h>

move(char *str, int n)

{ char temp; int i;

temp=str[n-1];

for(i=n-1;i>0;i--) str[i]=str[i-1];

str[0]=temp;

}

main( )

{ char s[50]; int n, i, z;

scanf("%d,%s",&n,s);

z=strlen(s);

for(i=1; i<=n; i++) move(s, z);

printf("%s\n",s);

}


正确答案:cdeab
cdeab 解析:本题主要考查函数move()的功能。经过分析可知,每次调用该函数时,都是把最后一个字符移到串的最前端,而原先的第一个字符至倒数第二个字符顺次后移。


下列程序的输出结果是______。 char*fun(char*str,int n) { int i; char*p=str; for(i=0;i<10;i++,str++) *str='a'+i; return++p; } main() { char a[10]; printf("%s\n",fun(a,10)); }

A.ABCDEFGHIJ

B.abcdefghij

C.bcdefghij

D.不确定的值


正确答案:C
解析:调用函数fun使字符数组中的内容是"abcdefghij",函数的返回值是字符数据的地址,该地址指向数组的第二个字符,因此,主函数的输出结果是字符串 "bcdefghij"。

更多 “Intel笔试面试题目” 相关考题
考题 有以下程序includemain(int argc,char*argv[]){int i,len=0;for(i=1;i有以下程序 #include<string.h> main(int argc,char *argv[]) { int i,len=0; for(i=1;i<argc;i++)len+=strlen(argv[i]); printf("%d\n",len); } 程序编译连接后生成的可执行文件是exl.exe,若运行时输入带参数的命令行是: exl abcd efg 10<回车> 则运行的结果是:A.22B.17C.12D.9正确答案:D解析:main()函数可以带参数,并且参数只能有两个,第一个参数(argc)类型为整型用来记下命令行的参数个数,第二个参数(argv)为一个字符型指针数组,其各个元素用来记下命令行各参数字符串的首地址。本题执行时,argc的值为4,在循环中依次求出argv[1]、argv[2]和argv[3]指向的字符串("abcd"、"efg"和"10")的长度,并把它们加到变量len中,得到len的值9。所以最后输出的len值为9,所以4个选项中D正确。

考题 函数首部int main(int argc, char *argv[ ])中argc表示的是()正确答案:命令行参数的个数

考题 下列不合法的main函数命令行参数的表示形式是______。A.main(int a,char *c[]);B.main(ac,av)int arc;char**av;C.main(c,v)int c;char*v[];D.main(argc,argv)int argc;char argv[];正确答案:D解析:main函数的参数通常有两个,前者为整型,后者为字符型指针数组。参数的名字可以是任意合法的标识符。而且,形如**av与*av[]等价,所以选项A、B、C均正确,选项D是错误的。

考题 下列程序的输出结果是______。 include int CalcDigital(char*str) { if(str= =NULL)下列程序的输出结果是______。include<iostream.h>int CalcDigital(char*str){if(str= =NULL)return 0;int num_of_digital=0;for(int i=0;str{i]!=0x0;i++)if(str[i]<='9'&& str[i]>='0')num_of_digital++;return num_of_digital;}void main( ){char a[]="Beijing20080lympic";cout<<CalcDigital(a)<<endl;}正确答案:44 解析:分析本题可知函数功能为计算一个字符串中包含的数字个数。字符串中包含的数字有2008,故输出为4。

考题 有以下程序: include main(int argc,char *argv[]){int i,len-0;for(i=l;i有以下程序: #include <string.h> main(int argc, char *argv[ ]) { int i,len-0; for(i=l;i<argc;i+=2) len+=strlen(argv[i]); printf("%d\n",len); } 经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行 ex abcd efg h3 k44 执行后输出的结果是A.14B.12C.8D.6正确答案:D解析:本题考核的知识点是带寥数的主函数的应用。主函数的第一个参数argc为整形参数,记下从命令行输入的参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输入的参数字符数。在本例中argc的值为5,argv[0]指向字符串"ex",argv[1]指向参数字符串“abed”,argv[2]指向字符串“efg”,argv[3]指向参数字符串“h3”,argv[4]指向参数字符串“K44”。在main()函数中,for循环执行了2次,当i-1时,len=0+strlen(argv[1]),而其中argv[1]=“abcd”,故此时len的值为4;当i=3时,len=4+strlen(argv[3]),而其中argv[3]=“h3”,故此时len的值为6;当i=5时,退出循环,故最后输出的len的住为6。所以,4个选项中选项D符合题意。

考题 有以下程序includemain(int argc,char *argv[]){ int i,len=0;fot(i=1;i有以下程序 #include <stringh> main(int argc,char *argv[]) { int i,len=0; fot(i=1;i<argc;i+=2)len+=strlen(argv[i]); printf("%d\n",len); } 经编译连接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行 ex abcd efg h3 k44 执行后输出结果是A.14B.12C.8D.6正确答案:D解析:主函数的第一个参数argc为整型参数,记下从命令行输入的参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输入的参数字符数。在本例中argc的值为5,argv[0]指向字符串“ex”,argv[1]指向参数字符串“abed”, argv[2]指向字符串“efg”,argv[3]指向参数字符串“h3”,argv[4]指向参数字符串“k44”。在main()函数中,for循环执行了2次,当i=1时,len=0+strlen(argv[1]),而其中argv[1]=“abcd”,故此时len的值为4;当i=3时,len=4+strlen(argv[3]),而其中 argv[3]=“h3”,故此时len的值为6;当i=5时,退出循环,故最后输出的len的值为6。

考题 下列程序中,正确的为______。A.main() { int *pb=&b; float 1>=15.25; print f("%d\n" ,*pb); }B.amin() { int a,*pa; a=10; *pa=a; prinffC%d",*pa); }C.main() { char s[20]; char *ps=&s; scanf("%s",*p); printf("%s",*p); }D.main() { char str[10]; int *ps=str[0]; str="abcdefg"; printf("%s",*p); }正确答案:B

考题 C语言中main函数参数的非法表示形式是( )A.main(char*argv[],int argc)B.main(int a,char **b)C.main(int y,char*x[])D.main(int argv,char * argc[])正确答案:A

考题 不合法的main函数命令行参数表示形式是A.main(inta,char *c[])B.mmn(int arc,char **arv)C.main(int argc,char *argv)D.majn(int argv,char *atgc[])正确答案:C解析:main()函数可以带有参数,并且参数只能有两个,第一个参数类型为整型,用来记下命令行的参数个数,第二个参数为一个字符型指针数组,或字符型二级指针变量(指向一个数组,数组元素又是一个一级字符指针),其各个元素用来记下从命令行各参数字符串的首地址.故本题只有C选项不符合要求。所以,4个选项中C为所选。

考题 有以下程序:includemain(int argc,char *argv[]){inti,len=0;for(i=1;i有以下程序: #include <string.h> main(int argc,char *argv[]) { int i,len=0; for(i=1;i<argc;i++) len+=strlen(argv[i]); printf("%d\n",len); } 程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是: ex1 abcd efg 10<回车> 则运行的结果是( )。A.22B.17C.12D.9正确答案:D解析:本题执行时,因为命令行一共有4个字符串,所以argc的值为4,在循环中依次求出argv[1]、argv[2]和argv[3]指向的字符串("abcd"、"efg"和"10")的长度,并把它们加到变量len中,得到len的值9。所以最后输出的len值为9,故4个选项中D正确。