C语言笔试题题目
- 格式:docx
- 大小:28.89 KB
- 文档页数:11
100条经典C语言笔试题目1、请填写bool,float,指针变量与“零值”比较的if语句。
提示:这里“零值”可以是0,0.0,FALSE 或者“空指针”。
例如int变量n与“零值”比较的if语句为:if ( n == 0 )if ( n != 0 )以此类推。
(1)请写出 bool flag 与“零值”比较的 if 语句:【标准答案】if ( flag )if ( !flag )(2)请写出 float x 与“零值”比较的 if 语句:【标准答案】 const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。
(3)请写出 char *p 与“零值”比较的 if 语句【标准答案】 if (p == NULL)if (p != NULL)2、以下为 Linux下的 32 位 C程序,请计算 sizeof 的值。
char str[] = “Hello” ;char *p = str ;int n = 10;请计算(1)sizeof (str ) =(2)sizeof ( p ) =(3)sizeof ( n ) =【标准答案】(1)6、(2)4、(3)4(4)void Func ( char str[100]) {……;} 请计算 sizeof( str ) = (5)void *p = malloc( 100 );请计算sizeof ( p ) =【标准答案】(4)4、(5)43、 long a=0x801010;a+5=?【标准答案】0x801010用二进制表示为:“1000 0000 0001 0000 0001 0000”,十进制的值为8392720,再加上5就是8392725。
4、用变量a给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针 ;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a[10]; f)int (*a)[10]g)int (*a)(int); h) int (*a[10])(int)5、设有以下说明和定义:typedef union {long i; int k[5]; char c;} DATE;struct data { int cat; DATE cow; double dog;} too;DATE max;则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_____【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20.data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是 20 + 32 = 52。
c语言笔试考试题及答案一、选择题1. 在C语言中,字符型数据使用的关键字是:A. charB. intC. floatD. double答案:A2. 下列标识符中合法的是:A. 123nameB. _nameC. name$D. %name答案:B3. 表达式"5 + 3 * 2 - 4 / 2"的值是:A. 9B. 12C. 10D. 8答案:C4. 下列哪个语句可以用于在屏幕上输出字符型变量c的值:A. printf("%c", c);B. printf("%d", c);C. printf("%s", c);D. printf("%f", c);答案:A5. 下列哪个语句可以用于从键盘输入整型变量a的值:A. scanf("%d", a);B. scanf("%f", &a);C. scanf("%s", a);D. scanf("%c", &a);答案:B二、编程题1. 编写一个程序,输入一个整数n,计算并输出n的阶乘。
答案:```c#include <stdio.h>int main() {int n, i;long long factorial = 1;printf("请输入一个整数:");scanf("%d", &n);for (i = 1; i <= n; i++) {factorial *= i;}printf("%d的阶乘为:%lld\n", n, factorial);return 0;}```2. 编写一个程序,输入一个整数n,判断并输出n是否为素数。
答案:```c#include <stdio.h>int isPrime(int num) {int i;if (num <= 1) {return 0;}for (i = 2; i <= num / 2; i++) { if (num % i == 0) {return 0;}}return 1;}int main() {int n;printf("请输入一个整数:"); scanf("%d", &n);if (isPrime(n)) {printf("%d是素数\n", n); } else {printf("%d不是素数\n", n); }return 0;}```三、简答题1. C语言中的指针有什么作用?答案:指针在C语言中用于直接访问内存地址,可以提高程序的执行效率和灵活性。
c语言编写函数笔试题及答案C语言编写函数笔试题及答案1. 题目一:计算阶乘编写一个函数,计算并返回一个整数的阶乘。
阶乘定义为:n! = n * (n-1) * (n-2) * ... * 1,其中n! = 1,当n=0。
函数原型:```clong long factorial(int n);```答案:```c#include <stdio.h>long long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("Factorial of %d is %lld\n", num, factorial(num)); return 0;}```2. 题目二:字符串反转编写一个函数,接受一个字符串作为参数,将其反转并返回。
函数原型:```cchar* reverseString(char* str);```答案:```c#include <stdio.h>#include <string.h>char* reverseString(char* str) {int length = strlen(str);char temp;for (int i = 0; i < length / 2; i++) {temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}return str;}int main() {char str[] = "Hello, World!";printf("Reversed string: %s\n", reverseString(str));return 0;}```3. 题目三:寻找数组中的最大值编写一个函数,接受一个整数数组和数组的长度作为参数,返回数组中的最大值。
大一c语言笔试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列关于C语言函数的描述,正确的是:A. 函数必须有返回值B. 函数可以没有返回值C. 函数必须有参数D. 函数不能有参数答案:B3. 在C语言中,以下哪个运算符用于比较两个值是否不相等?A. ==B. !=C. <=D. >=答案:B4. 下列关于数组的描述,错误的是:A. 数组的元素必须是同一数据类型B. 数组可以是多维的C. 数组的大小在编译时确定D. 数组的大小在运行时确定答案:D5. 在C语言中,以下哪个关键字用于定义一个指针?A. intB. charC. floatD. *答案:D6. 下列关于C语言中变量作用域的描述,正确的是:A. 局部变量只能在函数内部使用B. 全局变量只能在函数外部使用C. 局部变量可以在函数外部使用D. 全局变量可以在函数内部使用答案:A7. 在C语言中,以下哪个关键字用于定义一个枚举?A. enumB. structC. unionD. typedef答案:A8. 下列关于C语言中指针的描述,错误的是:A. 指针可以存储地址B. 指针可以存储值C. 指针可以作为函数的参数D. 指针不能作为函数的返回值答案:D9. 在C语言中,以下哪个关键字用于定义一个联合体?A. structB. unionC. enumD. typedef答案:B10. 下列关于C语言中循环的描述,正确的是:A. for循环不能嵌套B. while循环不能嵌套C. do-while循环不能嵌套D. 以上都是错误的答案:D二、填空题(每题3分,共15分)1. 在C语言中,定义一个整型变量的关键字是________。
答案:int2. 如果要定义一个指向整型变量的指针,应该使用________。
c语言笔试题和答案C语言是计算机编程领域中的基础语言之一,广泛应用于系统编程、嵌入式开发等领域。
以下是一套C语言的笔试题和答案,旨在帮助考生复习和测试自己的C语言知识。
C语言笔试题一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable-nameC. variable_nameD. variable-name22. C语言中,哪个关键字用于定义一个函数?A. defineB. functionC. voidD. int3. 在C语言中,以下哪个表达式的结果为真?A. 5 > 3 && 3 < 2B. 5 > 3 || 3 < 4C. 5 > 3 && 3 < 4D. 5 == 5 || 3 < 24. 下列哪个语句用于在C语言中进行循环控制?A. ifB. switchC. forD. while5. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. -1D. 根据数组类型而定6. 下列哪个函数可以用于计算两个数的最大值?A. max()B. min()C. abs()D. pow()7. C语言中,哪个预处理指令用于文件包含?A. #includeB. #importC. #defineD. #require8. 下列哪个选项是C语言中的一个标准库函数?A. printf()B. print()C. display()D. show()9. 在C语言中,哪个关键字用于声明一个指针变量?A. varB. pointerC. ptrD. int*10. 下列哪个语句可以用于在C语言中定义一个结构体?A. structB. defineC. typeD. class二、简答题(每题5分,共30分)1. 解释C语言中数组和指针的区别。
2. 描述C语言中函数的调用过程。
c语言笔试题及答案**C语言笔试题及答案**1. 以下哪个选项是C语言中合法的标识符?A. 2variableB. variable2C. variable-nameD. variable#name**答案:B**解析:在C语言中,标识符可以由字母、数字和下划线组成,但不能以数字开头,不能包含空格、标点符号等特殊字符。
因此,只有选项B "variable2" 是合法的标识符。
2. 若有以下定义:```cint a = 5, b = 10, c = 15;```则表达式 `a + b > c && a < b+2` 的值是多少?A. 1B. 0C. 2D. 3**答案:A**解析:表达式 `a + b > c && a < b+2` 可以分解为两部分:`a + b > c` 和 `a < b+2`。
首先计算 `a + b > c`,即 `5 + 10 > 15`,结果为假(0)。
由于逻辑与操作(&&)要求两边都为真,整个表达式的结果才为真,因此整个表达式的结果为假(0)。
但由于C语言中假值用0表示,真值用1表示,所以最终结果为1。
3. 以下哪个选项是C语言中正确的字符串声明?A. char str[] = "Hello, World!";B. char str[13] = "Hello, World!";C. char str[] = {"Hello, World!"};D. char str = "Hello, World!";**答案:A**解析:在C语言中,字符串应该使用字符数组来存储,并以null字符('\0')结尾。
选项A正确地声明了一个字符串数组,并自动在末尾添加了null字符。
c语言笔试题带答案第一题:```c#include <stdio.h>int main() {printf("Hello World!\n");return 0;}```答案:输出 "Hello World!"第二题:```c#include <stdio.h>int main() {int a = 5;int b = 3;int c = a + b;printf("%d\n", c);return 0;}```答案:输出 "8"第三题:```c#include <stdio.h>int main() {int x = 10;int y = 3;float z = (float) x / y; printf("%.2f\n", z); return 0;}```答案:输出 "3.33"第四题:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num);} else {printf("%d是奇数\n", num);}return 0;}```答案:根据输入的整数判断是偶数还是奇数并打印相应结果。
第五题:```c#include <stdio.h>int main() {int n;scanf("%d", &n);int sum = 0;int num;for (int i = 0; i < n; i++) {printf("请输入第%d个整数:", i + 1);scanf("%d", &num);sum += num;}printf("这%d个整数的和为:%d\n", n, sum);return 0;}```答案:根据输入的整数个数和整数值求和并打印结果。
c语言经典笔试题及答案详解1. 题目:以下代码的输出是什么?```c#include <stdio.h>int main() {int a = 1;int b = 2;int c = a + b;printf("%d", c);return 0;}```答案:输出是3。
2. 题目:如何使用指针交换两个变量的值?答案:可以使用以下代码:```c#include <stdio.h>void swap(int *x, int *y) {int temp = *x;*x = *y;*y = temp;}int main() {int a = 10;int b = 20;swap(&a, &b);printf("a = %d, b = %d\n", a, b); return 0;}```输出将是:a = 20, b = 10。
3. 题目:以下代码的输出是什么?```c#include <stdio.h>int main() {char *str = "Hello, World!";printf("%c", *(str + 7));return 0;}```答案:输出是W。
4. 题目:以下代码段的输出是什么?```c#include <stdio.h>int main() {int x = 10;if (x = 20)printf("x is 20\n");elseprintf("x is not 20\n");return 0;```答案:输出是x is 20。
注意这里if语句中使用了赋值运算符(=)而不是比较运算符(==),因此x被赋值为20,条件判断为真。
5. 题目:以下代码的输出是什么?```c#include <stdio.h>int main() {int a = 2;int b = 4;int c = a & b;printf("%d", c);return 0;}```答案:输出是0。
C语言笔试题题目 一、 简答题 1. 程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于()中。 2. 设有以下说明和定义: typedef union {long i; int k[5]; 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"); } else { puts("Got a valid pointer"); } 7. 以下程序运行后的输出结果是______ 。
main() { char m; m='B'+32; printf("%c\n",m); } 8. 已有定义如下:
struct node { int data; struct node *next; } *p; 以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空p = (struct node *)malloc(________); 9. 在绝对地址0xXXXXXXXX上写入字符’a’的语句是___________。
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文件包含的头文件中?为什么? 24. 语句for( ;1 ;)有什么问题?它是什么意思? 25. do……while和while……do有什么区别? 26. 下列哪种方法更好,为什么? define dPS struct s * typedef struct s * tPS; 27. 下面的结构是合法的吗,如果是它做些什么?
int a = 5, b = 7, c; c = a+++b; 28. 队列和栈有什么区别?
29. 全局变量和局部变量是否有区别?如果有,是什么区别? 30. 堆栈溢出一般是由什么原因导致的? 31. 冒泡排序算法的时间复杂度是什么? 32. 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。 33. 不能做switch()的参数类型是: 34. 某32位系统下,请计算sizeof 的值. char str[] = “http://www.ibegroup.com/” char *p = str ; int n = 10; 请计算 sizeof (str ) = ? (1) sizeof ( p ) = ? (2) sizeof ( n ) = ? (3) void Foo ( char str[100]){ sizeof( str ) = ? (4) } void *p = malloc( 100 ); sizeof ( p ) = ? (5) 35. 请说出const与#define 相比,有何优点?
36. 回答下面的问题. a) 头文件中的 ifndef/define/endif 干什么用?预处理 b) #include 和 #i nclude “filename.h” 有什么区别? 37. 使用malloc()函数时,为什么要将其返回值强制转换成被赋值指针变量的数据类型?
38. 列举一个软件中时间换空间或者空间换时间的例子。 39. 以下C语言语句有什么区别 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 str[MAX_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); }