C语言笔试题题目

上传人:z****2 文档编号:210945527 上传时间:2023-05-18 格式:DOCX 页数:11 大小:23.80KB
返回 下载 相关 举报
C语言笔试题题目_第1页
第1页 / 共11页
C语言笔试题题目_第2页
第2页 / 共11页
C语言笔试题题目_第3页
第3页 / 共11页
点击查看更多>>
资源描述
C 语言笔试题题目一、简答题1. 程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于()中2. 设有以下说明和定义:typedef union long i; int k5; char c; DATE;struct data int cat; DATE cow; double dog; too;DATE max;则语句 printf(%d,sizeof(struct date)+sizeof(max)的执行结果是:3. 32 位系统下,请问如下语句的值unsigned char *p1;unsigned long *p2;p1=(unsigned char *)0x801000;p2=(unsigned long *)0x810000;请问 p1+5=p2+5=4. int i=10, j=10, k=3; k*=i+j; k 最后的值是?5. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?6. 下面程序的输出是,为什么?char *ptr;if (ptr = (char *)malloc(0) = NULL)puts(Got a null pointer);elseputs(Got a valid pointer);7. 以下程序运行后的输出结果是 。main()char m;m=B+32; printf(%cn,m);8. 已有定义如下:struct nodeint data;struct node *next; *p;以下语句调用 malloc 函数,使指针 p 指向一个具有 struct node 类型的动态存储空间。 请填空 p = (struct node *)malloc();9. 在绝对地址OxXXXXXXXX上写入字符的语句是。10. 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)11. 写一个标准宏 MIN ,这个宏输入两个参数并返回较小的一个。12. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?13. 用变量a给出下面的定义a) 一个整型数(An integer)b) 一个指向整型数的指针( A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)d) 一个有 10个整型数的数组( An array of 10 integers)e) 一个有 10个指针的数组,该指针是指向一个整型数的。 (An array of 10 pointers to integers)f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)h) 一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一 个整型数( An array of ten pointers to functions that take an integer argument and return an integer )14. 关键字 static 的作用是什么?15. 关键字 const 的含义。16. 关键字volatile有什么含意?并给出三个不同的例子。17. 一个参数既可以是const还可以是volatile吗?解释为什么。18. 一个指针可以是 volatile 吗?解释为什么。19. 下面的函数有什么错误:int square(volatile int *ptr)return *ptr * *ptr;20. 在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个 纯粹的 ANSI 编译器。写代码去完成这一任务。21. 局部变量能否和全局变量重名?22. 如何引用一个已经定义过的全局变量?23. 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?语句 for( ;1 ;)有什么问题?它是什么意思?dowhile和whiledo有什么区别?下列哪种方法更好,为什么?define dPS struct s * typedef struct s * tPS;下面的结构是合法的吗,如果是它做些什么?int a = 5, b = 7, c;c = a+b;队列和栈有什么区别?全局变量和局部变量是否有区别?如果有,是什么区别? 堆栈溢出一般是由什么原因导致的? 冒泡排序算法的时间复杂度是什么?分别写出BOOL,int,float,指针类型的变量a与零”的比较语句。 不能做switch()的参数类型是:某 32 位系统下,请计算 sizeof 的值.char str =“ char *p = str ;int n = 10;sizeof (str ) = ?(1)sizeof ( p ) = ?(2)sizeof ( n ) = ?(3)void Foo ( char str100)sizeof( str ) = ?(4)void *p = malloc( 100 );sizeof ( p ) = ?(5)请说出const与#define相比,有何优点?回答下面的问题.a)头文件中的 ifndef/define/endif 干什么用?预处理b)#include 和 #i nclude filename.h” 有什么区别?使用malloc()函数时,为什么要将其返回值强制转换成被赋值指针变量的数据类型?列举一个软件中时间换空间或者空间换时间的例子。以下 C 语言语句有什么区别24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.char * const p; char const * p;const char *p;40. 下面 x, y, *p 的值是多少,有什么问题?int x, y, z = 2;int *p=&z; x=sizeof*p;y=x/*p;41. 下面的语句是什么意思?如何声明或定义才使它们更易懂?(10 分)int (*foo()();int (*foo();int (*foo)();(*(void(*)()0)();void (*signal(int,void(*)(int)(int);42. 如何定义Bool变量的TRUE和FALSE的值。43. 运行char a*+ = ”abc”后,内存会开辟几块内存,这此内存共占多少个字节?44. 运行char *p = ”abc”后,内存会开辟几块内存,这此内存共占多少个字节?45. 说出int *(*p)3; p是什么变量?如果p是指针变量,那么p+1的偏移量是多少?46. 一个 32 位的机器,该机器的指针是多少位?47. 已知一个数组table,用一个宏定义,求出数据的元素个数二、程序分析题1. 下面的代码有什么问题?char *_strdup( const char *strSource )static char strMAX_STR_LEN;strcpy(str, strSource);return str;2. 下面的代码输出是什么,为什么?void foo(void)unsigned int a = 6;int b = -20;(a+b 6) ? puts( 6) : puts(= 6);3. 请写出下列代码的输出内容#include 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;4. Test 函数的运行结果如何?void GetMemory(char *p)p = (char *)malloc(100);void Test(void)char *str = NULL;GetMemory(str);strcpy(str, hello world); printf(str);5. Test 函数的运行结果如何?char *GetMemory(void)char p = hello world;return p;void Test(void)char *str = NULL;str = GetMemory();printf(str);6. Test 函数的运行结果如何?Void GetMemory2(char *p, int num)*p = (char *)malloc(num);void Test(void)char *str = NULL; GetMemory(&str, 100);strcpy(str, hello); printf(str);7. Test 函数的运行结果如何?void Test(void)char *str = (char *) malloc(100);strcpy(str, “hello”); free(str);if(str != NULL)strcpy(str, “world”); printf(str);8. 写出下列代码的输出内容#includeint 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(%dn,*arg2);main()int a;show(multi,10,&a);return 0;9. 请找出下面代码中的所以错误说明:以下代码是把一个字符串倒序,如abed”倒序后变为deba”#includestring.hmain()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-;printf(%s,dest); return 0;10. 以下程序有什么错误 试题 1: void test1()char string10;char* str1 = 0123456789; strcpy( string, str1 );试题 2:void test2()char string10, str110;int i;for(i=0; i10; i+)str1 = a;strcpy( string, str1 );试题 3:void test3(char* str1)char string10;if( strlen( str1 ) = 10 )strcpy( string, str1 );11. 下面程序的运行结果:main()int a5=1,2,3,4,5; int *ptr=(int *)(&a+1); printf(%d,%d,*(a+1),*(ptr-1);12. 请问以下代码有什么问题:int main()char a; char *str=&a;strcpy(str,hello);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(%d,0x012+3); 输出?18. 在 32 位的 X86 系统下,输出的值为多少?#include int main()int a5 = 1,2,3,4,5;int *ptr1 = (int *)(&a + 1);int *ptr2 = (int *)(int)a + 1);printf(%d, %x,ptr1-1, *ptr2); /注意从高字节开始打印 return 0;19. 下面代码的有问题吗?为什么?#include void func(char a10)char c = a3;int main()char b10 = abcdefg; func(b10);return 0;20. 下面代码输出的结果是多少? #include void fun(int i)if(i0)fun(i/2);printf(%dn,i);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 *类型的返回值?3. 两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串。4. 写一函数,实现删除字符串strl中含有的字符串str2。5. 编程,判断存储方式是大端存储,还是小端存储,并说出为什么要进行大小端的判定?6. 不调用库函数,自己实现long atol(const char *nptr)函数。7. 编写 strcat 函数()。已知 strcat 函数的原型是 char *strcat (char *strDest, const char *strSrc); 其中 strDest 是目的字符串, strSrc 是源字符串。a) 不调用 C+/C 的字符串库函数,请编写函数 strcat。b) strcat能把strSrc的内容连接到strDest,为什么还要char *类型的返回值?8. 写一个函数,它的原形是 int continumax(char *outputstr,char *intputstr。功能:在字符串 中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个 函数参数outputstr所指内存。例如:abcd12345ed125ss123456789的首地址传给intputstr 后,函数将返回 9,outputstr 所指的值为 1234567899. 不用库函数,用 C 语言实现将一整型数字转化为字符串。10. 用指针的方法,将字符串“ABCD1234efgh”前后对调显示。11. 有一分数序列:1/2,1/4,1/6,1/8,用函数调用的方法,求此数列前20 项的和。12. 实现子串定位。13. 有1, 2,.一直到n的无序数组,求排序算法,并且要求时间复杂度为0(n),空间复 杂度 O。14. 编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由 同一字符组成的。15. 给定字符串A和B,输出A和B中的最大公共子串。16. 编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系 列库函数。17. 在不用第三方参数的情况下,交换两个参数的值。18. 写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数 分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以 加快计算速度)。19. 完成字符串拷贝可以使用sprintf、strcpy及memcpy函数,请问这些函数有什么区别, 你喜欢使用哪个,为什么?20. 输出和为一个给定整数的所有组合。例如n=5, 5=1+4; 5=2+3 (相加的数不能重复)则 输出 1, 4; 2, 3。21. 读文件file1.txt的内容(例如):123456输出到 file2.txt:563412(逆序)22. 有一个数组a1000存放0-1000;要求每隔二个数删掉一个数,到末尾时循环至开头继续 进行,求最后一个被删掉的数的原始下标位置。以7个数为例: 0,1,2,3,4,5,6,7 0-1-2(删除) -3-4-5(删除)-6-7-0(删除),如此循环直到最后一个数被删除。23. 写一个函数,将其中的、t都转换成4个空格。24. 编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是abcdefghi” 如果n=2,移位后应该是“hiabcdefgh”。函数头是这样的:/pStr是指向以0结尾的字符串的指针/steps 是要求移动的 nvoid LoopMove ( char * pStr, int steps )/请填充.25. 判断两个数组中是否存在相同的数字,给定两个排好序的数组,怎样高效得判断这两个 数组中存在相同的数字?26. 按单词反转字符串并不是简单的字符串反转,而是按给定字符串里的单词将字符串倒转 过来,就是说字符串里面的单词还是保持原来的顺序,这里的每个单词用空格分开。例如:Here is 经过反转后变为: is Here28. 求一个整形中1 的位数。29. 费波那其数列,1,1,2,3,5编写程序求第十项。可以用递归,也可以用其他方 法,但要说明你选择的理由。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!