7. Test函数的运行结果如何?
void Test(void) {
char *str = (char *) malloc(100); strcpy(str, “hello”); free(str);
if(str != NULL) {
strcpy(str, “world”); printf(str); } }
8. 写出下列代码的输出内容
#include int inc(int a) {
return(++a); }
int multi(int*a,int*b,int*c) {
return(*c=*a**b); }
typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2) {
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2); printf(\}
main() {
int a;
show(multi,10,&a); return 0; }
9. 请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba” #include\main() {
char*src=\char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len); char* d=dest; char* s=src[len]; while(len--!=0) d++=s--;
printf(\return 0; }
10. 以下程序有什么错误
试题1: void test1() {
char string[10];
char* str1 = \strcpy( string, str1 ); }
试题2: void test2() {
char string[10], str1[10]; int i;
for(i=0; i<10; i++) {
str1 = 'a'; }
strcpy( string, str1 );
}
试题3:
void test3(char* str1) {
char string[10];
if( strlen( str1 ) <= 10 ) {
strcpy( string, str1 ); } }
11. 下面程序的运行结果:
main() {
int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1);
printf(\}
12. 请问以下代码有什么问题:
int main() {
char a; char *str=&a; strcpy(str,\ printf(str); return 0; }
13. 交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3; 14. 以下是求一个数的平方的程序,请找出错误:
#define SQUARE(a) ((a)*(a)) int a=5; int b;
b=SQUARE(a++); 15. 下面的程序运行结果是( )
设int arr[]={6,7,8,9,10}; int *ptr=arr; (ptr++)+=123;
printf("%d,%d",*ptr,*(++ptr));
16. 下面的两段代吗?有什么区别?什么时候需要使用代码2?
1、
int i = 10; int j = i; int k = i; 2、
volatile int i = 10; int j = i; int k = i;
17. printf(\输出?
18. 在32位的X86系统下,输出的值为多少?
#include
int a[5] = {1,2,3,4,5};
int *ptr1 = (int *)(&a + 1); int *ptr2 = (int *)((int)a + 1); printf(\//注意从高字节开始打印 return 0; }
19. 下面代码的有问题吗?为什么?
#include
char c = a[3];
}
int main() {
char b[10] = \func(b[10]); return 0; }
20. 下面代码输出的结果是多少?
#include
if(i>0) {
fun(i/2); }
printf(\}
int main() {
fun(10); return 0; }
三、 编程题
1. 不调用库函数,自己实现memcpy函数。
void *memcpy(void *dest, const void *src, size_t n); 2. 不调用库函数,自己实现strcpy函数 。 3.
a) 编写strcat函数,已知strcat函数的原型是char *strcat (char *strDest, const char
*strSrc);其中strDest 是目的字符串,strSrc 是源字符串(不能调用库函数)。 b) strcat能把strSrc 的内容连接到strDest,为什么还要char * 类型的返回值?
两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串。 写一函数,实现删除字符串str1中含有的字符串str2。
编程,判断存储方式是大端存储,还是小端存储,并说出为什么要进行大小端的判定? 不调用库函数,自己实现long atol(const char *nptr)函数。 编写strcat函数()。已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。
a) 不调用C++/C 的字符串库函数,请编写函数 strcat。
b) strcat能把strSrc 的内容连接到strDest,为什么还要char * 类型的返回值?
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)。功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:\的首地址传给
4. 5. 6. 7. 8.
9.
10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
20. 21. 22.
intputstr后,函数将返回9,outputstr所指的值为123456789 不用库函数,用C语言实现将一整型数字转化为字符串。 用指针的方法,将字符串“ABCD1234efgh”前后对调显示。
有一分数序列:1/2,1/4,1/6,1/8??,用函数调用的方法,求此数列前20项的和。 实现子串定位。
有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O。
编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。
给定字符串A和B,输出A和B中的最大公共子串。
编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数。
在不用第三方参数的情况下,交换两个参数的值。 写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)。
完成字符串拷贝可以使用sprintf、strcpy及memcpy函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?
输出和为一个给定整数的所有组合。例如n=5,5=1+4;5=2+3(相加的数不能重复)则输出1,4;2,3。
读文件file1.txt的内容(例如): 12 34 56
输出到file2.txt: 56 34 12
(逆序)
有一个数组a[1000]存放0--1000;要求每隔二个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以7个数为例:{0,1,2,3,4,5,6,7} 0-->1-->2(删除)-->3-->4-->5(删除)-->6-->7-->0(删除),如此循环直到最后一个数被删除。 写一个函数,将其中的'\\t'都转换成4个空格。 编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”。函数头是这样的: //pStr是指向以'\\0'结尾的字符串的指针 //steps是要求移动的n
void LoopMove ( char * pStr, int steps ) {
//请填充... }
判断两个数组中是否存在相同的数字,给定两个排好序的数组,怎样高效得判断这两个数组中存在相同的数字?
23.
24. 25.
26.
27. 按单词反转字符串并不是简单的字符串反转,而是按给定字符串里的单词将字符串倒转
过来,就是说字符串里面的单词还是保持原来的顺序,这里的每个单词用空格分开。例如:Here is www.fishksy.com.cn经过反转后变为:www.fishksy.com.cn is Here 28. 求一个整形中1的位数。
29. 费波那其数列,1,1,2,3,5??编写程序求第十项。可以用递归,也可以用其他方
法,但要说明你选择的理由。