下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、简答题。(共14题,共0分,每题0分)1 . int i=10,j=10,k=3;k*=i+j; k 最后的值是?答:k = 60ok2 .写出程序结果:void Func(char str100) printf("%dn", sizeof(str);答:4或者8 (如果操作系统为32位则为4,64位则为8) 是地址吗3 .写出 sizeof(struct name2) 的结果struct name2char str;int num;short x;不会!看结构答:此题考察结构对齐的知识,结果为 124 .写出 sizeof(struct name1) 的结果struc
2、t name1char str;short x; int num;不会!答:同样考察的是结构对齐的知识,结果为 85. A.c 和B.c两个c文件中使用了两个相同名字的static变量,编译的时候会 不会有问题?这两个static变量会保存到哪里(栈还是堆或者其他的)?答:没有问题,static变量只在当前文件中有效,也就是说 static 变量的作用 域属于所在的文件域。static 变量保存在全局 / 静态区6. (void *)ptr 和 (*(void*)ptr 的结果是否相同?答:相同。首先第一个( void * ) ptr 将 ptr 转换为空指针类型(一级指针 ) , (*( v
3、oid* ) ptr 相当于先将ptr 转换为空类型指针(二级指针)。二级指针是指向指针的指针,在前面加上* (解指针),也就是空类型指针了(一级指针)。7. #define DOUBLE(x) x+x , i = 5*DOUBLE(5) ; i 是多少?答 : i = 5 * 5+5 = 30; 看书上的结构理解下意思8. 下面的声明都是什么意思?const int a; int const a; const int *a;int * const a;int const * const a ;答:第一个定义常量a,第二个也是定义常量a,第三个定义常量指针a,第四 个定义指针常量a, 第五个定
4、义指向常量的指针常量(相当于 const 引用) 。9. 关键字 const 是什么含意?答: 1.const 修饰基本类型,比如 int 类型为常量。2.const 修饰指针分为两种情况:指针常量或者常量指针。类的成员函数,则在此函数中无法修改类中数据成员的值。 ?返回值意味着返回值不可被改变5.const 修饰函数参数,意味着函数参数不能被有意或者无意修改。10 . dowhile 和 while do 有什么区别?答:do- while先执行循环再判断条件,while do先进行判断再执行循环11 .语句 for( ; 1; )有什么问题?它是什么意思?他的意思是循环条件永远为真, 不停
5、地进行循环操作, 除非循环体中有强制退出循环的语句才能终止循环,其实功能就相当于 while(1)答:无限循环12 .如何引用一个已经定义过的全局变量?答:题目说的有点不太清楚,如果是引用其它文件中定义的全局变量用extern ,如果是在本文件中引用的话用作用域运算符 二 是在C+中的13 .switch()结构中条件表达式的类型可以是什么类型?答:整型,字符型,常量,枚举类型14 .h 头文件中的 ifndef/define/endif 的作用?答:预编译命令,一般是用来防止头文件多重包含结构?二、问答题。(共63题,共0分,每题0分)1 .关键字static的作用是什么?第一:隐藏。sta
6、tic全局变量只在本文件中可访问,其它文件无法访问。第二:持久保存变量的内容。static变量一经初始化便到程序运行结束后才 会被释放。第三:默认初始化为O.static 变量会被编译器默认初始化为02 . int a3;a0=0; a1=1; a2=2;int *p, *q;p=a;q=&a2;则 aq-p=a2这段程序执行完之后数组中元素的值分别是什么?q-p=2答:0, 1,23 .根据a的值,完成b的初始化,并将b的值返回 int func(float a)int b;switch(a)case 1: 30;break;case 2: 20;case 3: 16;default
7、: 0return b;此程序段有什么错误,如果有请指出类型不正确。答: 1.switch 只能用整型或者字符型或者枚举类型, float2.case 后面没有加break4. 写出程序运行结果int sum(int a)auto int c=0;static int b=3;c+=1;b+=2; return(a+b+c);void main()int I;int a=2;for(I=0;I<5;I+) printf("%d,", sum(a);答:8, 10, 12, 14, 165. 写出输出结果void g(int*);int main()int line10
8、,i;int *p=line;for (i=0;i<10;i+)*p=i;g(&p);for(i=0;i<10;i+) printf("%dn",linei);return 0;void g(int*p)(*p)+;(*p)+;答: 1 2 3 4 5 6 7 8 9 106. 写出输出结果int main()int a5=1,2,3,4,5;int *ptr=(int *)(&a+1);/ 解释 解释 1printf("%d,%d",*(a+1),*(ptr-1);答: 2, 5 char str1 = "abc&
9、quot;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"printf (%d” ,str1 =s融组名就是printf (%d” ,str3 = str4);printf (%d” ,str5 = str6 );pr
10、intf (%d” ,str7 = str8 );答: 0 0 1 18. 以下 3 个有什么区别?char * const p;char const * p;const char *p;答:第一个是指针常量,第二个是常量指针,第三个也是常量指针9. unsigned short array=1,2,3,4,5,6,7;int i=3;*(array+i)=?答: 410. i 最后等于多少?int i = 1;int j = i+;if(i>j+) && (i+ = j) i+=j;答: 511. 写一个“标准”宏1输入两个参数,输出较小的一个2表明1 年中有多少秒(忽
11、略闰年问题)答:此题的考察点是防止数据太大int 类型表示不了,现在不用担心( int 占 4个字节)1 .#define Min(a, b) (a) = (b) ? (a): (b)2 .#define SECONDS_PER_YEAR (60 * 60 * 24 * 365UL考察内容:1) . #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2) . 意识到这个表达式将使一个16位机的整型数溢出- 因此要用到长整型符号L, 告诉编译器这个常数是的长整型数。3) .如果你在你的表达式中用到 UL (表示无符号长整型),那么你有了一个好的起点。12. 什么是预编译,
12、何时需要预编译?答:预编译又称为预处理,主要做一些文本的替换工作。比如 #include 包含文件代码, #define 宏定义的替换,条件编译等等。预编译代码有助于在开发周期中缩短编译时间,特别是在以下的情况中:2. 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下可以将所有包含文件编译为一个预编译头。用于创建预编译头文件的第一次编译所花费的时间比后面的编译稍长一些,通过包含预编译代码可以加快后面的编译速度。13. 阐述堆和栈的区别答:1. 申请方式。栈由编译器自动申请空间,堆需要程序员手动申请空间。2. 申请后的系统响应。栈的剩余空间大于所申请的空间,系统
13、为程序提供内存,否则退出。堆申请方式是链表式申请,遍历空闲内存链表,找到大于申请空间的内存,从空闲内存链表中删除,分配给程序。3. 申请大小的限制。栈在windows 下是向低地址扩展的数据结构,是一块连续的内存区域,大小是固定的。(一般是 2mm堆是向高地址扩展的数据结构,是 不连续的内存区域。4. 申请效率,栈分配速度较快,堆分配速度较慢,容易产生内存碎片。还有其它的一些区别,课下大家自己去学习一下。14. 简要描述 c 程序的内存分配答:C语言内存分配主要分为5块1. 栈。存放局部变量,函数参数等。由编译器自动申请空间,自动释放。2. 堆。由程序员手动申请、释放空间。3. 常量存储区。一
14、般是常量字符串4. 静态 / 全局区。存储的是静态变量或者全局变量。初始化后等到程序结束后内存才会被释放5. 程序代码区。存放函数体的二进制代码。15. static 全局变量与普通的全局变量有什么区别? static 局部变量和普通局部变量有什么区别? static 函数与普通函数有什么区别?答: 1.static 全局变量只能在本文件中访问, 而全局变量可以通过extern 在其它文件中访问静态区中,一经初始化直到程序结束后才会被释放。普通的局部变量存储在栈中。只能在本文件中访问,普通函数可以在其它文件中访问。16. 局部变量能否和全局变量重名,如果可以,请说明原因?答:可以。局部变量会屏
15、蔽全局变量17. 使用枚举的好处?答:代码的可读性就好一些18. 全局变量和局部变量在内存中的存储是否有区别?如果有,是什么区别?答:全局变量存储在全局数据区,初始化后直到程序运行结束后才会释放内存。 局部变量存储在栈上,作用域在其被定义的函数或者块中,出了这个作用域就 会被释放。19. #include<file.h> 与 #include "file.h" 的区别?答:<>一般用来引用系统定义的头文件,“”一般用来引用自定义头文件。般用来引用自定义头文件20.引用”与指针的区别是什么?答:引用是变量的别名,指针保存的是变量的地址。也就是说引用是直
16、接操作 变量本身,而指针是间接操作变量。21.已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);1 .不调用库函数,实现strcpy函数。2 .解释为什么要返回char * 。答:1. char *strcpy( char * strDest , const char * strSrc ) char *strDestCopy = strDest ;if (strDest = NULL| strSrc = NULLthrow ("invalid arguments" );while (*strDe
17、stCopy+ = * strSrc +) != '0' );return strDest ;22 .判断一个字符串是不是回文,当字符串是回文时,函数返回字符串:yes!,否 则函数返回字符串:noo所谓回文即正向与反向的拼写都一样,例如:adgda。#include <stdio.h>#include <string.h>#define N 100char *judgeStrings( char *str); int main()char a N;printf("请输入要判断的回文字符串:”);scanf( "%s", a
18、);printf( "%sn", judgeStrings(a);return 0;char *judgeStrings( char * str )if (str = NULLthrow "error: str is NULL" ;int len = strlen( str );for (int i=0; i<len/2; i+) if (str i != str len - i - 1) return "no"return "yes!"23 .递规反向输出字符串的例子,可谓是反序的经典例程,那么任意输入一字
19、符 申,利用递归将其反向输出.#include <stdio.h>#define N 20void getReverseChar( char *str);int main()char aN;printf("请输入要反序的字符串:”);scanf( "%s", a);getReverseChar(a);printf( "n" );_|return 0;void getReverseChar( char * str )if (* str = '0') return ;else(getReverseChar( str +1
20、); printf( "%c", * str );24 .用指针的方法,将字符串“ ABCD1234efgh前后对调显示#include <stdio.h>#include <string.h> int main()char a口 ="ABCD1234efgh"char *p = a; int len = strlen(a);for (int i = 0; i < len/2; i+) char temp = ai;ai = alen - i - 1;alen - i - 1 = temp;printf( "%sn
21、" , a);return 0;25 .两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存 放t字符串 答:#include <stdio.h>#include <string.h>#define N 100 int main() char s N = "HelloWorld"char *t = "welcome to Beijing" ; int sLen = strlen(s);int tLen = strlen(t); int pos;printf("请输入要插入的位置:")
22、;scanf( "%d", &pos);if (pos > sLen | pos < 0)return 0;/先将s字符数组后面的字符放到后面(采用前插法,从0开始)for ( int i = 0; i < sLen - pos; i+)Ispos + tLen + i = spos + i;/再放心的插入t字符数组for ( int i = 0; i < tLen; i+)spos+i = ti;ssLen + tLen ='0' ;printf( "%sn" , s);return 0;26 . 已知s
23、trcmp的原型是int strcmp(const char *str1, const char *str2),不调用库函数,实现 strcmp 函数答:#include <stdio.h>#include <string.h>#define N 100int strcmp( const char *str1, const char *str2);int main()char s N;char t N;printf("请输入要比较的一个字符串:");scanf( "%s", s);printf("请输入要比较的另一个字符
24、串:");scanf( "%s", t);printf( "%dn" , strcmp1(s, t);return 0;int strcmp( const char * strl , const char * str2 )int lenl = strlen(strl );int len2 = strlen(str2 );int maxLen = lenl > len2 ? lenl : len2;for ( int i = 0; i < maxLen; i+)if (strl i > str2 i) return 1;else
25、 if (strl i < str2 i) return -1;return 0;27.找出错误#includevoid main(void) char *src="hello,world"char *dest=NULL;dest=(char *)malloc(strlen(src);int len=strlen(str);char *d=dest;char *s=srclen;while(len-!=0)d+=s-;printf("%s",dest);)答:1用 <才舌起来。dest =2.dest = (char *)malloc(str
26、len(src);申请的空间不够,需要改为(char *)malloc(strlen(src)+1);3.int len = strlen(str); 改为 int len = strlen(src);4 .char *s = srclen; 改为 char *s = srclen -1;5 .d+ = s-; 改为 *d+ = *s-;6 .需要在printf( "§ , dest );上面加上一行代码:*d =' 0';28.写出输出结果#include <stdio.h>void foo(int m, int n)printf("
27、m=%d, n=%dn”, m, n);) int main()int b = 3;foo(b+=3, +b);printf("b=%dn", b);return 0;答:此题考察的有一些难度,深入到了编译器级别。编译器实现的不一样,那么结果也是不一样的。在vc 下面,结果为: 7 4 7 在 vs2012 结果为 7 77 。在 xcode 下面是 6 7 7.29. 分析:int arr = 6,7,8,9,10;int *ptr = arr;*(ptr+)+=123;printf( “ %d %d ” , *ptr, *(+ptr);答:此题和上一题目类似,考察的是p
28、rintf() 函数的参数入栈顺序,从右往左的运算。所以结果为: 8 830. 对下面程序进行分析,若有错误,请写出一个正确的程序段void test2()char string10, str110;int i;for(i=0; i<10; i+)str1i = 'a'strcpy( string, str1 );答:错误,主要是str110 字符数组没哟 0 。所以应该如下修改for(i=0; i < 9; i+)stri = a;stri = 0 ;31. 请问一下程序将输出什么结果?char *RetMemory(void)char p =“ hellow w
29、orld ”;return p;void Test(void)char *str = NULL;str = RetMemory();printf(str);答: 此程序存在的问题是RetMemory(void) 函数返回的是局部变量的地址, 然后str 指向这个地址, 但是实际上这块地址已经让编译器给释放, 编译器有可能把这块内存分配给其它的变量。所以如果内存没有被修改的话输出结果为 hello world, 如果被修改则输出结果未知。32. 分析下面的程序:void GetMemory(char *p,int num) *p=(char *)malloc(num);int main()cha
30、r *str=NULL;GetMemory(&str,100);strcpy(str,"hello");free(str);if(str!=NULL)strcpy(str,"world");printf("n str is %s",str);getchar();答:程序存在的问题是:GetMemory函数成功的为str分配了一块堆上的内存,但是后来被释放掉了。 由于释放后没有将指针置为空, 故 str 肯定不会为NULL。接着调用 strcpy() 函数为 str 指向的空间赋值。这是非法的, str 指向的是已经被释放的内存
31、,故拷贝会失败。33. 下面的语句会出现什么结果?char szstr10;strcpy(szstr,"0123456789");答:编译不通过,字符数组 szstr 空间为10,但是字符串为11 个(加上 0 )故字符数组空间不够存下字符串。34. 下面的程序会出现什么结果#include <stdio.h>#include <stdlib.h> void getmemory(char *p) p=(char *) malloc(100); strcpy(p,"hello world");int main( )char *str
32、=NULL; getmemory(str); printf("%s/n",str); free(str);return 0;答:程序存在的问题是str 没有指向申请出来的空间, str 还是为NULL。 free()函数释放堆上的空间,可是str 并没有指向堆上的空间,故程序会出错。35. 请问以下代码有什么问题:int main()char a;char *str=&a;strcpy(str,"hello");printf(str);return 0;答:字符指针 str 指向的是一个单一的字符,调用 strcpy ()方法赋值的时候,只能赋一
33、个字符,很明显程序赋的是“ hello ”6 个字符,故程序会发生错误。36. 请找出下面代码中的所有错误说明:以下代码是把一个字符串倒序,如“ abcd”倒序后变为“ dcba”1、 #include"string.h"2、 main()3、 4、5、6、7、8、9、10、11、12、13、14、 char*src="hello,world"char* dest=NULL;int len=strlen(src);dest=(char*)malloc(len);char* d=dest;char* s=srclen;while(len-!=0)d+=s-
34、;printf("%s",dest);return 0;答:请看上面27 题37. 有以下程序#inlcude <stdio.h>int main()char a7="a00a00"int i,j;1 = sizeof(a);j = strlen(a);printf("%d %dn",i,j);return 0; 此程序的输出结果是什么?答: 7 2 sizeof 是求变量或者类型所占的字节数, char a7 数组声明了 7 个元素的空间,故7 个字节, strlen ()函数用来求字符串的长度,原理是找字符串中的 0
35、,在字符数组a 中第三个位置找到 0 ,故返回2(不包括0)38. 问 main 函数既然不会被其它函数调用,为什么要返回 1? int main()int x=3;printf("%d",x);return 1;答: main 函数的返回值用于说明程序的退出状态。如果返回 0 表示程序正常退出;返回其它的数字的含义则由系统决定。通常,返回非0 代表程序异常退出。main 函数的返回值是返回给执行这个进程的进程。39. 交换两个变量的值,不使用第三个变量。即 a=3,b=5, 交换之后 a=5,b=3;a = a + b;b = a- b;a = a b;40. 下面这个程
36、序执行后会有什么错误或者效果:#define MAX 255int main()unsigned char AMAX,i;/i 被定义为 unsigned charfor (i=0;i<=MAX;i+)Ai=i;答:无限循环。此题 i 被定义为 unsigned char 类型,占一个字节,所以表示的数的个数为 256 个数,也就是0 255. 当 i = 255, 此时再让 i+1, 则 i 会重新变为0.所以i永远小于等于MAX 一直循环下去。41. 描述一下 typedef 的作用答:为已知类型定义类型的别名42. 动态内存分配( Dynamic memory allocation
37、 )下面的代码片段的输出是什么,为什么? ?char *ptr;?if (ptr = (char *)malloc(0) = NULL) ?puts("Got a null pointer");?else? puts("Got a valid pointer");答:输出 Got a valid pointer 。 malloc(0) 不返回 NULL43. 用C语言如何实现死循环呢?答: while(1) 或者 for(;1;)44. 简述数组与指针的区别?答:数组与指针有很大的不同。数组拥有元素的空间,而指针没有,指针只能保存地址。还有,指针可以随便
38、改变指向,但是数组不可以。45. 已知 strcmp 的原型是int strcmp(const char *str1, const char *str2,) 谈谈你对其参数中 const 的理解 .答: const 用来修饰指针,为常量指针, 即指针的指向可以发生变化,但是无法通过*操作来修改指针所指向的变量。主要是防止在strcmp 函数中,程序员有意或者无意的修改 str2 变量46. 写出下列代码的输出内容#include<stdio.h>int inc(int a)return(+a);int multi(int*a,int*b,int*c)return(*c=*a*b);
39、typedef int(FUNC1)(int in);typedef int(FUNC2) (int*,int*,int*);void show(FUNC2 fun,int arg1, int*arg2)FUNC1 *p=&inc;int temp =p(arg1);fun(&temp,&arg1, arg2);printf("%dn",*arg2);main()int a;show(multi,10,&a);return 0;答:此题主要是typedef int(FUNC1)(int, int); 的作用,还记得我们学过的函数指针吗?没错,
40、这就是定义一个函数指针(FUNC是指针类型,指向返回值为 int ,带有两个int 类型参数的函数)。知道了这一点,就很容易计算出结果为11047. 请写出下列代码的输出内容#include<stdio.h>int main()int a,b,c,d;a=10;b=a+;c=+a;d=10*a+;printf("b , c, d: %d, %d, %d" , b, c, d) ;return 0;答: 10 12 12048. 求函数返回值,输入 x=9999;( 如果可以,写出此程序实现的功能)int func ( x )int countx = 0;whil
41、e ( x )countx +;x = x&(x-1); return countx;答: 这是统计 9999 的二进制数值中有多少个1 的函数,且有9999= 9 X 1024+ 512+256+159X 1024中含有1的个数为2;512 中含有 1 的个数为 1 ;256 中含有 1 的个数为 1 ;15 中含有 1 的个数为 4;故共有 1 的个数为8,结果为8。1000 - 1 = 0111 ,正好是原数取反。这就是原理。用这种方法来求1 的个数是很效率很高的。不必去一个一个地移位。循环次数最少。49. 下面的函数实现在一个数上加一个数,有什么错误?请改正。int add_n
42、 ( int n )static int i = 100;1 += n;return i;答: static 变量存储在全局/静态区 ,只初始化一次,后面的数都是在i 的基础上增加的。50. 用变量 a 给出下面的定义a) 一个整型数( An integer )b) 一个指向整型数的指针( A pointer to an integer )c) 一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer )d) 一个有 10 个整型数的数组( An array of 10 integers )e) 一个有 10个指针的数组,该
43、指针是指向一个整型数的( An array of 10 pointers to integers )f) 一个指向有10 个整型数数组的指针( A pointer to an array of 10 integers )g) 一个指向函数的指针, 该函数有一个整型参数并返回一个整型数( A pointerto a function that takes an integer as an argument and returns an integer ) h) 一个有 10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers
44、to functions that take an integerargument and return an integer ) 答: a) int a; b) int *a; c)int *a;d)int a10;e)int *a10;f)int (*a)10g)int (*a)(int b);h)typedef int (*POINT)(int);POINT a10;51.求1000!的未尾有几个0 (用素数相乘的方法来做,如 72=2*2*2*3*3 )答:分析:先把1000!质因数分解,其质因数中2的个数比5的个数多因为2*5=10所以1000!中有多少个因数5, 1000!的末尾就
45、有多少个0因为 5 (1000! ) =1000/5 +1000/25+1000/125+1000/625=200 + 40 + 8 + 1 =249所以1000!的末尾就有249个0 编程:#include <stdio.h>int main()int sum = 0;int num;printf("请输入数据:");scanf( "%d", &num);for (int i = 5; i <= num; i= i * 5)sum = sum + num / i;printf("共有 升零 n" , sum
46、);return 0;52 .输出和为一个给定整数的所有组合例如n=55=1+4; 5=2+3 (相加的数不能重复)(不考虑负数)则输出1, 4; 2, 3。#include <stdio.h> #include <stdlib.h> int main( int argc , char * argv )unsigned long int num = 0;scanf( "%d", &num);int mid = 0;for (int i = 1; i <= num/2; i+)mid = num - i;if (mid != i)prin
47、tf( "%d = %d + %dn" , num, i, mid);return 0;53 . 有以下表达式:int a=248;int b=4;int const c=21;const int *d=&a;int *const e=&b;int const *f =&a;请问下列表达式哪些会被编译器禁止?为什么?*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;答:*c = 32不可以,c不是指针类型*d = 43不可以,d是常量指针,无法修改指向的变量的值e = 34不可以,类型不匹配e = &a不
48、可以,e是指针常量,无法改变指针f = 0x321f 不可以,类型不匹配54 .编程实现:找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子用为"cad"答:#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 100 int main() int a N N; 矩阵char str1 N;char str2 N;int maxSubStrLength = 0;最大子串的长度int subS
49、tringIndex = 0;最大子串的末尾 indexint i;int j;printf("请输入第一个字符串:");scanf( "%s",str1);printf("请输入第二个字符串:");scanf( "%s",str2);int strLen1 = strlen(str1);int strLen2 = strlen(str2);/构造矩形for (i = 0; i < strLen1; i+) for (j = 0; j < strLen2; j+) if (str1i != str2j)
50、a皿=0; n else if (i = 0 | j = 0)ai朋=1; else aij = ai-1j-1 + 1; if (aij > maxSubStrLength) maxSubStrLength = aij;subStringIndex = i;/显示矩阵一for (i = 0; i < strLenl; i+)for (j = 0; j < strLen2; j+) printf( "%d ", aij);printf( "n");for (i = 0; i <maxSubStrLength; i+)printf(
51、 "%c", str1subStringIndex - maxSubStrLength + i + 1); printf( "n");return 0;55 . 实现子用定位 int FindSubStr(const char *MainStr, const char *SubStr)答:#include <stdio.h>#include <string.h>#define N 100int FindSubStr( const char *MainStr, const char *SubStr); | int main()cha
52、r str1 N;char str2 N;printf("输入主字符串:");scanf( "%s", str1);printf("输入子字符串:");scanf( "%s", str2);int index = FindSubStr(str1, str2);if (index = -1)printf("未找到! n");elseprintf("找到,下标为:%dn", index);return 0;int FindSubStr( const char * MainStr
53、, const char * SubStr) int index = 0;int count = 0;intstrlenl :=strlen(MainStr );intstrlen2 ;=strlen(SubStr);if (strlenl < strlen2) return -1;for (int i = 0; i <= strlen1 - strlen2; i+)for (int j = 0; j < strlen2; j+)index = i+j;if ( MainStr i+j = SubStr j) count+;else count = 0;break; if (
54、count = strlen2)return index - strlen2 + 1;56.写一段程序,找出数组中第k大小的数,输出数所在的位置。例如2, 4, 3, 4, 7中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3 随便输出哪一个均可。函数接口为:int find_orderk(const int* narry,const int n,const int k)答:#include <stdio.h>#include <string.h>#include <malloc.h>#define N 5int find_orderk(
55、const int * narry, const int n, const int k); int main()int array N;int k;printf("请输入介数:",N);for (int i = 0;i < N i+)scanf( "%d",&arrayi);printf("输入第K大小的数:");scanf( "%d", &k);int n = find_orderk(array,N, k);printf("第故小的数在 %此置n" , k, n);ret
56、urn 0;k大小的数/函数参数的意思,第一个数组名字,第二个多少个元素,第三个第int find_orderk( const int * narry , const int n, const int k)if ( k <=0 && k > n)return -1;int *ptr = ( int *)malloc( sizeof (int ) * n);for (int i = 0; i < n; i+)ptri = narry i;for (int i = 0; i < n - 1; i+)for (int j = 0; j < n - i - 1;j+)if (ptrj > ptrj+1)int temp = ptrj;ptrj = ptrj+1;ptrj+1 = temp;for (int i = 0; i < n; i+)if (ptr k-1 = narry i)要求,先找到57. 已知一个单向链表的头,请写出删除其某一个结点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 磁浆制备工操作安全竞赛考核试卷含答案
- 电极丝制造工安全素养知识考核试卷含答案
- 沼气生产工测试验证知识考核试卷含答案
- 蒸呢机挡车工岗前技能掌握考核试卷含答案
- 供热生产调度工岗前安全文明考核试卷含答案
- 水泥质检员岗前实习生考核试卷含答案
- 电动工具制造工冲突解决竞赛考核试卷含答案
- 幻灯机与投影机维修工安全强化知识考核试卷含答案
- 焦炉调温工工作考核试卷含答案
- 溶剂蒸煮工岗位生产安全考核试卷含答案
- 江西新华发行集团有限公司赣州市分公司2026年公开招聘工作人员笔试参考题库及答案解析
- 2026年成人高考专升本政治真题试卷及完整答案解析(官方标准)
- 2026年江苏盐城市中考物理试题(含解析)
- 2026年大学试题(管理类)-港口规划与布置历年参考题库含答案解析
- 2026年道德与法治四年级上册第5课《生命最宝贵》教案设计(2课时)
- 2026年会计从业资格考试初级会计实务考点精讲课件
- 新版2026秋统编版(新版)小学道德与法治五年级上册(全册)知识点清单梳理
- 2026年湖南省工会人员招聘考试备考题库及答案详解
- 2026公务员行测申论高频刷题题库(含详细解析)
- 给水用聚乙烯(pe)管道系统第部分管件
- 2026年及未来5年市场数据中国流量计仪表行业发展前景预测及投资规划建议报告
评论
0/150
提交评论