定义字符指针char *str="hello",已知sizeof(str)=4,则strlen(str)=______。
有以下程序: # include<string.h> main() { char str[][20]={"Hello","Beijing"},*p=str; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是 ______。
A.0
B.5
C.7
D.20
有以下程序: #include<stdio.h> #include<string.h> #include void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++;t--; if(*s)f(s,t): } main() {char str[10]="abcdefg",*P; P=str+strlen(str)/2+1: f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是( )。
A.abcdefg
B.gfedcba
C.gbcdefa
D.abedcfg
有以下程序:#include <string .h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t- -; if(*s) f(s, t);}main(){ char str[10]="abcdefg",*p; p=str+strlen(str)/2+ 1; f(p,p-2); printf("%s\n", str);}程序运行后的输出结果是( )。
A.abcdcfg
B.gfedcba
C.gbcdefa
D.abedcfg
str为一个字符序列。请补充函数fun(),该函数的功能是:查找str中值为x的元素,返回该字符序列中值为x的元素个数,并把这些值为x的元素下标依次保存在数组bb中。例如,在“abcdefahij”中查找‘a’,结果为:2个‘a’,下标依次为 0、6。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio.h>
include<conio.h>
define N 20
int bb[N];
int fun(char *str,char ch)
{
int i=0, n=0;
char t=ch;
char *p=str;
while(*p)
{
if (【 】)
【 】;
p++;
i++;
}
return【 】;
}
main()
{
char str[N];
char ch;
int i, j,n;
clrscr();
printf("***Input the original string
***\n");
gets(str);
printf("***The Original ***\n");
puts(str);
printf("***Input character ***\n");
scanf("%c",&ch);
n=fun(str,ch);
printf("\nThe numbr of character is:
%d\n", n);
printf{"***The suffix of character
***\n");
for(i=0;i<n;i++)
printf("%d ",bb[i]);
}
华为校园招聘软件工程师笔试题一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分) 1、有数组定义int a22=1,2,3;则a01的值为0。( ) 2、int (*ptr) (),则ptr是一维数组的名字。( ) 3、指针在任何情况下都可进行, =, =, = =运算。( ) 4、switch(c) 语句中c可以是int, long, char, float, unsigned int 类型。( ) 5、#define print(x) printf(the no, #x,is ) 二、填空题(共30分) 1、在windows下,写出运行结果,每空2分,共10分。 char str = Hello; char *p=str; int n=10; sizeof(str)=( ) sizeof(p)=( ) sizeof(n)=( ) void func(char str100) sizeof(str)=( ) 2、void setmemory(char *p, int num) *p=(char *) malloc(num); void test(void) char *str=NULL; getmemory(&str,100); strcpy(str,hello); printf(str); 运行test函数有什么结果?( )10分 3、设int arr=6,7,8,9,10; int *ptr=arr; (ptr+)+=123; printf(%d,%d,*ptr,*(+ptr); ( ) 10分 二、编程题(第一小题20,第二小题30分) 1、 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1; 2、 写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1 (1)什么是预编译,何时需要预编译: 答案: 、总是使用不经常改动的大型代码体。 、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 (2)char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; /常量指针,p的值不可以修改 char const * p;/指向常量的指针,指向的常量值不可以改 const char *p; /和char const *p (3)char str1 = abc; char str2 = abc; const char str3 = abc; const char str4 = abc; const char *str5 = abc; const char *str6 = abc; char *str7 = abc; char *str8 = abc; cout ( str1 = str2 ) endl; cout ( str3 = str4 ) endl; cout ( str5 = str6 ) endl; cout ( str7 = str8 ) endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 (4)以下代码中的两个sizeof用法有问题吗? C易 void UpperCase( char str ) / 将 str 中的小写字母转换成大写字母 for( size_t i=0; i sizeof(str)/sizeof(str0); +i ) if( a =stri & stri =z ) stri -= (a-A ); char str = aBcDe; cout str字符长度为: sizeof(str)/sizeof(str0) endl; UpperCase( str ); cout str (Y)?(Y):(X) /结尾没有; 10。嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。答案:while(1)或者for(;) 11。关键字static的作用是什么?答案:定义静态变量 12。关键字const有什么含意?答案:表示常量不可以修改的变量。 13。关键字volatile有什么含意?并举出三个不同的例子?答案:提示编译器对象的值可能在编译器未监测到的情况下改变。 14。int (*s10)(int) 表示的是什么啊?答案:int (*s10)(int) 函数指针数组,每个指针指向一个int func(int param)的函数。 15。有以下表达式: int a=248; b=4;int const c=21;con
以下程序运行后的输出结果是( )。
include
char*ss(char*s)
{char*p,t;
P=s+1;t=*s;
while(*p){ *(P-1)=*P;P++;}
*(P-1)=t;
return s;
}
main()
{char*p,str[10]="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
有以下程序: #include<string.h> main() { char str[][20]={"Hello","Beijing"),*p=str[0]; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是( )。
A.0
B.5
C.7
D.20
有以下程序: #include<string.h> void f(char *s,char *t) {char k; k=*s; +s=*t; *t=k; S++; t--; if(*s) f(s,t); } main() {char.str[10]="abcdefg",*p; p=str+strlen(str) /2+1; f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是 ______。
A.abcdefg
B.gfedcba
C.gbcdefa
D.abedcfg
下列程序段的运行结果是( )。
#include<stdio.h>
void main()
{ char str[]="ABC",*p=str;
printf("%d\n",*(p+3) );
}
A.67
B.0
C.字符'C'的地址
D.字符'C'
以下程序运行后,如果从键盘上输入ABCDEF<回车>,则输出结果为______。 #include<stdio.h> #include<string.h> func(char str[]) { int num=0; while(*(str+num)!='\0') num++; return(num);p } main() { char str[10],*p=str; gets(p);printf("%d\n",func(P)); }
A.8
B.7
C.6
D.5