c语言练习题7(指针与结构体,有答案)

合集下载

C语言练习题一及答案

C语言练习题一及答案

C语言练习题一一、填空题。

(每空1分,共10分)1.语句while(e==0):中的条件e==0等价于_____________;答案:!e2 printf(“%4s”,“beijing”);输出为:_____________;答案:beijing3.C语言中的字符串以字符_____________;答案:答案:\04.C语言可以处理的文件类型是_____________和_____________;答案:文本文件和二进制文件5,int(*P)[5];说明p是:_____________;答案:指向一维整形数组的指针变量6.函数直接或间接地调用自己,被称为函数的_____________;答案:递归7.若有static int x[5],x[4]的地址表示是:___________ 。

答案:&x[4]或x+48.有程序段如下:int x=l:while (x<=lO){x+=3;printf(“%d\n”,x);}则:函数printf()执行次数是____4_____ ,循环结束后X的值是___________ 。

答案:139.若有以下定义和语句,则sizeof(a)的值是_____,答案:12,而sizeof(b)的值是__。

答案:4 struct{int day;char month;int year;}a,*b;10.若有static char c[10] = “China”;执行该语句后c[1]= ___________ 。

答案:h c[5]= ___________ 。

答案:\0c[6]= ___________ 。

答案:\0 strlen(c)= ___________ 。

答案:511.若有Static char c[s]={’a’,’b’,’\0’(零),‘c’,‘d’};printf(“%s\n”,c):则输出内容为:___________ 。

答案:ab12.下面程序把从终端读人的10个整数以二进制方式写到一个名为bi.dat的新文件中。

函数、指针与结构体练习题-参考答案

函数、指针与结构体练习题-参考答案

(一)选择题1.以下正确的说法是_________.建立函数的目的之一是 a)提高程序的执行效率b)提高程序的可读性c)减少程序的篇幅d)减少程序文件所占内存2.以下正确的函数原型声明形式是________.a)double fun(int x,int y)b)double fun(int x; int y)c)double fun(int x, int y);d)double fun(int x,y);3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为______.A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是______.a)floatb)intc)longd)double5.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array 的错误定义方式为________.int a[3][4];f(a);a)f(int array[][6])b)f(int array[3][])c)f(int array[][4])d)f(int array[2][5])6.以下程序的正确运行结果是_________.#include <>void num(){ extern int x,y;int a=15,b=10;x=a-b;y=a+b;}int x,y;main(){int a=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n",x,y);}a)12,2 b)不确定 c)5,25 d)1,127.以下正确的描述是____________.a)C语言的预处理功能是指完成宏替换和包含文件的调用b)预处理指令只能位于C源程序文件的首部c)凡是C源程序中行首以"#"标识的控制行都是预处理指令d)C语言的编译预处理就是对源程序进行初步的语法检查8.在"文件包含"预处理语句的使用形式中,当#include后面的文件名用< >(尖括号)括起时,找寻被包含文件的方式是_______.a)仅仅搜索当前目录b)仅仅搜索源程序所在目录c)直接按系统设定的标准方式搜索目录d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索9.当调用函数时,实参是一个数组名,则向函数传送的是_____.A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值10.函数的值通过return语句返回,下面关于return语句的形式描述错误的是_____.表达式; (表达式);C.一个return语句可以返回多个函数值D.一个return语句只能返回一个函数值11.设函数fun的定义形式为void fun(char ch,float x){…}则以下对函数fun的调用语句中,正确的是_____.("abc",; =fun('D',; ('65',; (32,32);12.以下程序的输出结果是_____.void reverse(int a[],int n){ int i,t;for(i=0;i<n/2;i++){ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}}main( ){ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf(" %d\n ",s);}B.1013.阅读下列程序,则运行结果为_____.fun( ){ static int x=5;x++;return x;}main( ){ int i,x;for(i=0;i<3;i++)x=fun( );printf("%d\n",x);}B.614.若使用一维数组名作函数实参,则以下正确的说法是_____.A.必须在主调函数中说明此数组的大小B.实参数组类型与形参数组类型可以不匹配C.在被调用函数中,不需要考虑形参数组的大小D.实参数组名与形参数组名必须一致15.在C语言中,定义函数时函数的类型可以缺省,此时函数的隐含类型是_____. 16.在C语言中,形参的缺省存储类别是( ).17.以下关于字符串的叙述中正确的是_____.语言中有字符串类型的常量和变量B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.空串一定比空格打头的字符串小18.阅读程序,选择程序的运行结果。

catics练习题

catics练习题

一、选择题1. 下列哪个选项是C语言的基本数据类型?A. floatB. charC. intD. all of the above2. 在C语言中,下列哪个运算符用于取余数?A. %B. /C.D. +A. printf()B. scanf()C. getchar()D. putchar()A. int arr[3][4];B. int arr[3, 4];C. int arr[3];D. int arr[3, ];A. returnB. gotoC. continueD. recursion二、填空题1. 在C语言中,字符类型的数据通常用______关键字表示。

2. 在C语言中,______函数用于实现字符串的拷贝。

3. 在C语言中,______运算符用于实现按位与操作。

4. 在C语言中,______关键字用于定义结构体。

5. 在C语言中,______函数用于获取当前时间。

三、编程题1. 编写一个C语言程序,实现计算两个整数的和。

2. 编写一个C语言程序,实现判断一个整数是否为素数。

3. 编写一个C语言程序,实现冒泡排序算法。

4. 编写一个C语言程序,实现计算斐波那契数列的前10项。

5. 编写一个C语言程序,实现实现一个简单的计算器,能够进行加、减、乘、除运算。

四、简答题1. 解释C语言中的指针的概念及其用途。

2. 描述C语言中的函数指针的概念。

3. 说明C语言中的结构体和联合体的区别。

4. 列举C语言中常用的内存分配函数及其作用。

5. 解释C语言中的文件操作的基本流程。

五、编程题6. 编写一个C语言程序,实现计算一个数的阶乘。

7. 编写一个C语言程序,实现将字符串反转。

8. 编写一个C语言程序,实现判断一个链表是否为回文链表。

9. 编写一个C语言程序,实现实现一个简单的银行账户管理系统。

10. 编写一个C语言程序,实现实现一个简单的学生信息管理系统。

六、编程题11. 编写一个C语言程序,实现实现一个简单的计算器,支持加减乘除和开方运算。

c语言期末试题及答案及详解

c语言期末试题及答案及详解

c语言期末试题及答案及详解一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. defineB. caseC. functionD. include答案:B2. C语言中,用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A3. 若有以下代码:```cint a = 5, b = 10;a = a + b;b = a - b;a = a - b;```执行后变量a的值是:A. 5B. 10C. 15D. 0答案:B4. 下列关于指针的描述,错误的是:A. 指针可以指向一个变量B. 指针可以指向一个数组C. 指针可以指向一个函数D. 指针不可以指向一个指针答案:D5. 在C语言中,以下哪个函数用于将字符串从源字符串复制到目标字符串?A. strcpyB. strcatC. strcmpD. strlen答案:A6. 下列哪个选项是C语言中合法的数组声明?A. int arr[5] = {0, 1, 2, 3, 4};B. int arr[] = {0, 1, 2, 3, 4};C. int arr[5] = {0, 1, 2};D. int arr[] = {0, 1, 2, 3};答案:B7. C语言中,以下哪个运算符用于执行按位与操作?A. &&B. ||C. &D. &&答案:C8. 下列关于函数的描述,正确的是:A. C语言中的函数可以没有返回值B. C语言中的函数可以返回多个值C. C语言中的函数可以重载D. C语言中的函数可以嵌套定义答案:A9. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopenB. fcloseC. fgetcD. All of the above答案:D10. 下列关于C语言中循环的描述,错误的是:A. for循环可以嵌套使用B. while循环可以和do-while循环嵌套使用C. do-while循环至少执行一次D. break语句可以跳出循环体答案:B二、填空题(每题2分,共20分)1. 在C语言中,用于定义一个整型变量的关键字是________。

C语言练习题(带详解答案)

C语言练习题(带详解答案)

C语言练习题(带详解答案)一单项选择题1.(A)是构成C语言程序的基本单位。

A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。

A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数D)包含文件中的第一个函数3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。

C)C程序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行5.下列正确的标识符是(C)。

A.-a1B.a[i]C.a2_iD.intt5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的-,选项B中[与]不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。

A)3a某B)某C)caeD)-e2E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的-不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。

A)%某B)a+bC)a123D)123选项A中的%,选项B中+不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print_3ddb8aBcB、I\\amone_halftart$it3paiC、tr_1CpppowwhileD、P某qMy->bookline#Hi.age选项B中的\\,$,选项D中>,#,.,-不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。

c语言基础试题库及答案

c语言基础试题库及答案

c语言基础试题库及答案一、选择题1. C语言中,用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项不是C语言的标准数据类型?A. intB. floatC. charD. string答案:D3. 在C语言中,用于实现循环的关键字是:A. whileB. forC. ifD. switch答案:A、B4. C语言中,用于定义函数的关键字是:A. functionB. defC. voidD. int答案:C5. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. variable_2D. int答案:B、C二、填空题1. C语言中,________关键字用于定义一个数组。

答案:int2. 在C语言中,________关键字用于定义一个指针。

答案:*3. C语言中,________关键字用于定义一个函数。

答案:int4. 在C语言中,________运算符用于求两个数的和。

答案:+5. C语言中,________运算符用于判断两个数是否相等。

答案:==三、简答题1. 请简述C语言中函数的定义和调用过程。

答案:函数定义包括函数的返回类型、函数名、参数列表和函数体。

函数调用则是通过函数名和参数列表来调用已定义的函数。

2. 解释C语言中指针的概念及其用途。

答案:指针是一种变量,它存储了另一个变量的内存地址。

指针常用于动态内存分配、数组处理和函数参数传递。

四、编程题1. 编写一个C语言程序,计算并输出100以内所有偶数的和。

答案:```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 100; i++) {if(i % 2 == 0) {sum += i;}}printf("Sum of even numbers from 1 to 100 is: %d", sum);return 0;}```2. 编写一个C语言函数,用于交换两个整数变量的值。

结构体例题

结构体例题

结构体例题一、以下关于结构体定义的描述中,哪一项是正确的?A. 结构体可以包含不同类型的数据项B. 结构体只能包含相同类型的数据项C. 结构体定义后不能直接使用,必须先声明D. 结构体变量在定义时不能初始化(答案:A)二、在C语言中,如何访问结构体成员?A. 使用结构体变量名直接访问B. 使用结构体变量名加点号再加成员名C. 使用结构体类型名加点号再加成员名D. 使用结构体指针解引用后直接访问(答案:B)三、以下哪个关键字用于定义结构体类型?A. classB. structC. unionD. enum(答案:B)四、关于结构体数组,以下说法错误的是?A. 结构体数组中的每个元素都是结构体类型的变量B. 结构体数组可以像普通数组一样进行遍历C. 结构体数组不能作为函数参数传递D. 可以通过下标访问结构体数组中的特定元素(答案:C)五、以下哪个操作不能对结构体变量进行?A. 赋值B. 比较大小(使用, !=等)C. 取地址D. 作为函数返回值(答案:B,注:结构体变量通常不能直接使用或!=进行比较,除非逐个成员比较)六、在定义结构体时,以下哪项不是必须的?A. 结构体名B. 结构体成员类型C. 结构体成员名D. 结构体成员初始化值(答案:D)七、关于结构体指针,以下说法正确的是?A. 结构体指针不能直接访问结构体成员B. 结构体指针需要先解引用才能访问结构体成员C. 结构体指针不能直接赋值给另一个结构体指针变量D. 结构体指针不能用于动态内存分配(答案:B)八、以下哪种情况适合使用结构体?A. 当需要存储多个相同类型的数据时B. 当需要存储一个由多种类型数据组成的数据集合时C. 当需要对数据进行排序时D. 当需要进行大量的数学运算时(答案:B)九、在C语言中,如何声明一个结构体类型的指针?A. struct MyStruct *ptr;B. struct MyStruct ptr*;C. struct *MyStruct ptr;D. struct MyStruct* ptr[];(答案:A)十、关于结构体嵌套,以下说法错误的是?A. 结构体可以嵌套在其他结构体中作为成员B. 嵌套的结构体成员可以通过多级点号运算符访问C. 结构体不能嵌套自身作为成员,会导致无限递归D. 嵌套的结构体使得数据结构更加复杂和灵活(答案:C,注:结构体可以嵌套自身,但需要通过指针等方式避免无限递归的问题)。

指针测试题及答案大全

指针测试题及答案大全

指针测试题及答案大全一、选择题1. 指针变量的声明方式正确的是()。

A. int *p;B. int *p[];C. int *p[10];D. int (*p)[10];答案:A2. 指针变量可以存储()。

A. 整型数据B. 浮点型数据C. 函数名D. 任意类型的地址答案:D3. 指针变量的值是()。

A. 它所指向的变量的值B. 它所指向的变量的地址C. 它自己的值D. 它自己的地址答案:B4. 指针变量的类型转换时,以下说法正确的是()。

A. 可以将任何类型的指针转换为void指针B. 可以将void指针转换为任何类型的指针C. 可以将char指针转换为int指针D. 可以将int指针转换为char指针答案:A5. 指针变量的算术运算中,以下说法正确的是()。

A. 指针变量可以进行加法运算B. 指针变量可以进行减法运算C. 指针变量可以进行乘法运算D. 指针变量可以进行除法运算答案:B二、填空题1. 指针变量的值是它所指向的变量的________。

答案:地址2. 指针变量的类型转换时,可以将void指针转换为________类型的指针。

答案:任何类型3. 指针变量的算术运算中,指针变量可以进行________运算。

答案:减法三、简答题1. 描述指针变量与数组之间的关系。

答案:指针变量可以指向数组的首元素,从而可以通过指针访问数组中的所有元素。

数组名在大多数情况下可以作为指向数组首元素的指针使用。

2. 解释指针变量的类型转换规则。

答案:指针变量的类型转换遵循C语言的类型转换规则,可以将任何类型的指针转换为void指针,也可以将void指针转换为任何类型的指针。

但是,不同类型的指针之间不能直接转换,除非它们指向的数据类型是兼容的。

结束语:以上是指针测试题及答案大全,希望对您的学习有所帮助。

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案1. 介绍C语言的基本数据类型和其范围。

C语言的基本数据类型有char、int、float和double。

它们的范围分别如下:- char: -128到127- int: -32768到32767- float: 3.4e-38到3.4e+38- double: 1.7e-308到1.7e+3082. 什么是指针(Pointer)?请解释指针的作用。

指针是一个变量,其值为另一个变量的地址。

它的作用是用于在程序中动态地分配内存、传递函数参数和实现复杂数据结构,如链表和树。

3. 请解释C语言中的自动变量和静态变量的区别。

自动变量是在函数内部声明的变量,在函数结束时会被销毁。

而静态变量是在函数内或函数外声明的变量,它的值在函数调用之间保持不变。

4. 解释什么是递归函数?递归函数是一个可以调用自身的函数。

在递归函数中,函数会反复调用自己,直到满足终止条件为止。

5. 请解释C语言中的位运算符。

C语言中的位运算符包括与(&)、或(|)、异或(^)、取反(~)、左移(<<)和右移(>>)运算符。

这些运算符用于对二进制数的位进行操作,常用于位掩码和位操作等场景。

6. 什么是结构体?结构体是一种用户自定义的数据类型,它可以包含不同类型的数据成员。

通过结构体,我们可以将多个不同的变量组合在一起,形成一个逻辑上的整体。

7. 解释C语言中的动态内存分配。

动态内存分配是指在程序运行时根据需要动态地分配内存空间。

C 语言中的动态内存分配函数包括malloc、calloc和realloc,通过这些函数可以在程序运行时根据需求分配或释放内存。

8. 请解释C语言中的头文件和库文件的作用。

头文件包含一组函数声明、宏定义和结构体声明等信息,用于在源文件中引用。

库文件则包含已编译的函数实现和数据,通过链接库文件可以在程序中使用这些函数和数据。

9. 什么是指针数组和数组指针?指针数组是一个数组,每个元素都是指针类型。

C语言练习题及答案

C语言练习题及答案

综合强化练习一一、选择题(每题1分,共40分)1、以下叙述正确的是( )A)C语言总是从第一个定义的函数开始执行B)在C程序中,要调用的函数必须在main函数中定义C)C程序的执行总是从main函数开始执行的D)C程序中的main函数必须放在程序的开始部分2、下列合法的用户标识符为( )A)_4sum B) static C) 1max D) #dtotal3、ch为字符型变量,则下面赋值语句正确的为( )。

A)ch="ABC" B) ch="A" C) ch= a D) ch=674、C语言中整形常量有哪几种形式( )A) 十进制、八进制、十六进制B) 二进制、十进制、八进制、十六进制C) 二进制、八进制、十六进制D) 二进制、十进制5、字符串" China "在内存中占用的字节数是( )A) 1 B) 2 C) 5 D) 66、int x,y; x=7/2;y=7/2.0;则x的值为( )A) 3.500000 3D)3 37、下面程序int x=0x2B; printf("%d",x);的输出结果为( )A) 2B B) 0x2B C) 43 D) 448、实型常量用指数形式表示,下列哪一项不是合法的( )A)C)356e39、设有语句int a=3;则执行了语句a-= a+=a*a;后变量a的值是( )A)0 B)3 C) -9 D) -310、下列字符中,错误的转义字符是( )A)'\085' B) '\\' C) '\0' D) '\n '11、下面程序的输出结果是( )int a=2;if(a=5) a=a+2;printf("%d ",a);A) 2 B) 4 C) 5 D)712、下列程序段的循环次数是( )int k=0;while(k= =0) printf("%d",k);k--; printf ("\n");A) 无限次B) 0 次C) 1次D)2次13、下列说法正确的是( )A) 在循环体中可以用break语句结束本次循环B) 在循环体中可以用continue语句结束本次循环C) break语句仅能使用在switch结构中D) 可以使用continue语句跳出switch结构14、以下正确的函数形式是()。

C语言练习题

C语言练习题

一、选择题(每题 1 分,共20 分)1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。

A、循环B、递归C、转移D、嵌套2.下列标识符中,合法的是_______ 。

A) unsigned B) 5ab C) INT# D)_num23.若float x ;x = 10/4 ;x的值是。

A、B、2.0 C、3 D、24.表达式!x 等价于。

A、x==0B、x==1C、x != 0D、x != 15.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。

A、算术运算、赋值运算、关系运算B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算6.能将高级语言编写的源程序转换为目标程序的是。

A、链接程序B、解释程序C、编译程序D、编辑程序7.下列语句定义pf为指向float类型变量f的指针,是正确的。

A、float f, *pf = f;B、float f, *pf = &f;C、float *pf = &f, f;D、float f, pf = f;8.一个C程序的执行是从。

A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束9.能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。

A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B、(x>=1)||(x<=10)||(x>=200)||(x<=210)C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)D、(x>=1)||(x<=10)&&(x>=200)||(x<=210)10.对两个数组a和b进行如下初始化char a[]=“ABC DEF”;char b[]={ ‘A’,’B’,’C’,’D’,’E’,’F’};则以下叙述正确的是。

C语言程序设计课堂练习题7-9章-学生用2

C语言程序设计课堂练习题7-9章-学生用2

C语言程序设计课堂练习题第7章指针一、选择题1.已知p是一个整型指针变量,且p指向的是整型变量a的地址,则下列哪个语句是错误的?()A.*p=a;B. p=&a;C.p=&*p;D.p=*&p;2.下列哪一项是不正确的字符串赋值或不正确的赋初值的方式?()A. char *str;str=“string“;B.char str[7]={‟s‟, ‟t‟, ‟r‟, ‟i‟, ‟n‟, ‟g‟ };C. char str1[10];str1= “string“;D.char str1[]=“string“,*str2=”1234567”;3.对于类型相同的指针变量,不能进行()运算。

A. +B. -C. =D.==4.已知p是一个整型指针变量,a为一个一维整型数组,且p=a;则下列哪个语句是错误的?()A.*p=a[0];B. *p=*a;C. p=a+1;D.p=*a;5.若有以下说明语句,则p2-p1的值为()int a[10],*p1,*p2;p1=a;p2=&a[5];A. 5B. 6C. 10D.没有指针与指针的减法6.下列定义中不正确的是()A.int *p;B. int p[10];C.int (*p)()D.int *(p(n));7.以下程序的输出结果是()main(){int a[]={1,2,3,4,5,6},*p;p=a;printf(“%d,%d\n”,*p,*(p+4));}A. 0,5B.1,5C.0,6D.1,68.若有以下说明和语句,且0<=i<10,则下面哪个不是对数组元素地址的正确表示()。

int a[]={1,2,3,4,5,6,7,8,9,10},*p,i;p=a;A.&(a+1)B.a++C. &pD.&p[i]二、写出程序的输出结果1.main(){int a=10,b=20,s,t,m,*pa,*pb;pa=&a;pb=&b;s=*pa+*pb;t=*pa-*pb;m=*pa**pb;printf“s=%d\nt=%d\nm=%d\n“,s,t,m);}2.int a[][3]={9,7,5,3,1,2,4,6,8};int i,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if (i==j) s1=s1+a[i][j];if(i+j==2) s2=s2+a[i][j];}printf(“%d\n%d\n”,s1,s2);}3.main(){int a[5]={1,3,5,7,9},*p,**k;p=a;k=&p;printf(“%d”,*(p+2));printf(“%d”,**k);}4.main(){int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int (*p)[4],i=2,j=2;p=a;printf(“%d”,*(*(p+i)+j)+*((a+i)+j)+**(p+i)+**p);}三、填空1.在空格地方填上语句,以实现字符串复制的功能。

(完整word版)C语言指针练习+答案+讲解

(完整word版)C语言指针练习+答案+讲解

第七章指针7.1 选择题1.若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D)。

A. p=q; B. *p=*q; C. a=*q; D. q=a;a是整型数,int *p,*q定义了指针,p,q是指向整型的指针.p取得a的地址,而q取得p的地址p,q是指针(也就是一个地址),而*p和*q是这个指针指向的整型数值(存放在这个地址的值).A)把q的地址赋给p,则p和q完全一样了,都指向一个数2B)把q中数据个pC)把q中数据给aD)a中数据是2,不能够给一个地址。

除非*q=a2.若定义:int a=511, *b=&a;,则printf("%d\n”, *b);的输出结果为:D A.无确定值 B. a的地址 C. 512 D. 511int a=511,*b=&a;a 是整形变量b 是整形指针变量,指向 aprintf("%d\n",*b);就是输出指针变量 b,所指变量的值输出结果5113.已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是(B)。

A. a=*p1+*p2; B. p1=a; C. p1=p2; D. a=*p1*(*p2);47、已知在程序中定义了如下的语句:int *P1,*P2;int k;p1=&k;p2=&k;则下列语句中不能正确执行是( B )A、k=*P1+*P2;B、p2=k;C、P1=P2;D、K=*P1 * (*P2);P1 P2是指针,K是整型变量,变量怎么可以赋值给指针呢?A其实是执行了K=K+K(P1和P2都指向K,所以*P1 *P2其实都是指K)C是赋值语句D其实执行了K=K*K4.变量的指针,其含义是指该变量的(B)。

A.值 B.地址 C.名 D.一个标志5.若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。

c语言程序设计练习题

c语言程序设计练习题

c语言程序设计练习题顺序程序设计1.输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,(float)a/b,a%b的结果,要求连同算式一起输出,每个算式占一行。

例:a等于10,b等于5,a+b的结果输成10+5=152.输入一个非负数,计算以这个数为半径的圆周长和面积。

3.输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321).4.输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。

若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)5.求前驱字符和后继字符。

输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的ASCII码值。

6.试用彩色文本定位输出。

(实例4,5)7.输入三角形的边长,求三角形面积。

(面积=sqrt(s(s-a)(s-b)(s-c)), s=(a+b+c)/2)分支和循环程序设计1.输入两个字符,若这两个字符之差为偶数,则输出它们的后继字符,否则输出它们的前趋字符。

这里的前趋和后继是指输入的两个字符中,较小字符前面的和较大字符后面的那个字符。

2.输入整数a和b,如果a 能被b整除,就输出算式和商,否则输出算式、整数商和余数。

3.输入某个点A的平面坐标(x,y),判断(输出)A点是在圆内、圆外还是在圆周上,其中圆心从标为(2,2),半径为1 。

4.输入年号和月份,输出这一年的该月的天数。

(一个年份,先判断是否闰年)5.输出9*9乘法表。

6.求爱因斯坦数学题。

有一条长阶,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7步,最后正好一阶不剩。

7.输入一串字符,直到输入一个星号(*)为止,统计(输出)其中的字母个数和数字字符个数。

8.计算斐波那契分数序列前n项之和(n是某个常数).( 2/1,3/2,5/3,8/5,13/8,21/13,...... 前一项的分子作为后一项的分母。

C语言程序设计(判断题专项练习)及答案

C语言程序设计(判断题专项练习)及答案

计算机C语言(判断题专项练习)及答案一、基础知识(每小题1 分,共 10分)()1、程序调试就是找出并改正c源程序中的语法错误。

()2、一个变量的数据类型被强制转换后,它将保持被强制转换后的数据类型。

()3、在标准c语言中,共用体变量中的各成员是共同占用一块存储空间()4、赋值运算符的结合方向为自右向左。

()5、c语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。

()6、在c程序中, aph和Aph 是两个相同的变量()7、计算机语言(computer language)是人与计算机之间通讯的语言。

()8、在c语言中,当一个逻辑表达式的值为"假"时,该表达式的值一定是 0()9、在c程序中,abc与ABC是两个相同的变量。

()10、c语言中sizeof 是函数,而不是运算符。

二、控制结构(每小题1 分,共 10分)()1、if 语句后面的表达式只能是关系表达式()2、在switch语句中,可以根据需要使用或不使用break语句。

()3、在标准c中,逻辑表达式中只允许出现逻辑型数据。

()4、逻辑表达式的值只能为1或0。

()5、c程序中if语句可以单独存在。

()6、省略else的if语句的一般形式如下,若表达式的值为"真",则执行语句1;否则,就什么也不做。

if (表达式) 语句1()7、在if语句中,必须出现else。

()8、内层break语句可以终止嵌套的switch,使最外层的switch结束。

()9、switch语句中的default必须出现在所有case之后。

()10、switch语句中,每一个case的冒号后面都必须至少跟有一条语句。

三、循环结构(每小题1 分,共 10分)()1、for循环的三个表达式可以任意省略,while,do-while也是如此。

()2、选择结构( if 语句)和循环结构都可以使用嵌套形式()3、在循环过程中,使用break语句和continue语句的作用是一样的()4、无论哪种循环语句,都必须给出循环结束条件。

fx0355《C语言程序设计》综合练习题适用于专升本:计算机科学与技术 (1)

fx0355《C语言程序设计》综合练习题适用于专升本:计算机科学与技术 (1)

《C语言程序设计》综合练习题一、单项选择题(共80题,每小题2分)(1)计算机语言不包括(C)。

A. 机器语言B. 汇编语言C. 智能语言D. 高级语言(2)C语言属于(D)。

A. 机器语言B. 汇编语言C. 智能语言D. 高级语言(3)printf语句的作用是(D)。

A. 写入文件B. 读入数据C. 记录数据D. 黑屏终端打印信息(4)下列关于C语言程序说法错误的是(A)。

A. main函数不是必须的B. 函数可以没有返回C. void表示函数没有返回值D. main函数是必须的(5)下列程序段的作用是(B)。

int a,b,sum;a=123;b=456;sum=a+b;A.对a、b初始化B. 实现123+456求和C.赋值D. 实现两数相减(6)printf语句中使用%d的作用是(C)。

A. 实现十进制输入B. 实现浮点数输出C. 实现十进制输出D. 无实际意义(7)下列不属于C关键字的是(C)。

A. whileB. forC. MapD. continue(8)下列变量命名合法的是(D)。

A. 123B. 9_qC. +1D. abc(9)下列关于C语言程序说法错误的是(A)。

A. 可以有多个main函数B. 程序由一个或多个源文件组成C. 程序应包含注释D. 程序可以没有输出(10)下列关于程序设计任务说法错误的是(A)。

A. 首先设计算法B. 其次设计算法C. 然后编写程序D. 最后编写文档(11)下列不属于算法的特征的是(C)。

A. 确定性B. 有穷形C. 二义性D. 可行性(12)下列说法正确的是(A)。

A. 算法+数据结构=程序B. 算法可以无限循环C. 算法只能用C语言实现D. 算法只能用Java语言实现(13)下列不属于算法的是(B)。

A. 成绩换算B. 打印字符串C. 求最小公倍数D. 求最大公约数(14)下列关于求1*2*…*5说法错误的是(D)。

A. 可以设计一个算法求解B. 可以使用wile循环C. 可以使用for循环D. 用循环解决效率不高(15)算法一般不可以用什么表示(C)。

c语言指针习题及答案

c语言指针习题及答案

c语言指针习题及答案C语言指针习题及答案C语言作为一门广泛应用于软件开发和系统编程的编程语言,指针是其重要的特性之一。

掌握指针的使用对于理解和编写高效的C程序至关重要。

本文将介绍一些常见的C语言指针习题,并提供相应的答案,帮助读者更好地理解和掌握指针的概念和用法。

1. 习题一:交换两个变量的值请编写一个函数,接受两个整型指针作为参数,实现交换两个变量的值。

例如,如果输入a=10,b=20,函数执行后,a=20,b=10。

答案:```cvoid swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}```2. 习题二:查找数组中的最大值和最小值请编写一个函数,接受一个整型数组和数组长度作为参数,返回数组中的最大值和最小值。

例如,对于数组[5, 2, 9, 1, 7],函数应该返回最大值9和最小值1。

答案:```cvoid findMinMax(int *arr, int length, int *max, int *min) {*max = *min = arr[0];for (int i = 1; i < length; i++) {if (arr[i] > *max) {*max = arr[i];}if (arr[i] < *min) {*min = arr[i];}}}```3. 习题三:计算字符串长度请编写一个函数,接受一个字符串作为参数,返回字符串的长度。

例如,对于字符串"Hello, World!",函数应该返回12。

答案:```cint stringLength(char *str) {int length = 0;while (*str != '\0') {length++;str++;}return length;}```4. 习题四:复制字符串请编写一个函数,接受两个字符串指针作为参数,将第一个字符串复制到第二个字符串中。

C语言基础知识练习及答案

C语言基础知识练习及答案

一、单项选择题1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为__C____的文件。

A、”.c”B、“.obj”C、“.exe”D、“.bas”2. 以下选项中不正确的整型常量是_C____。

A、12LB、-10C、1,900D、123U3. 表达式___C___的值是0。

A、3%5B、3/5.0C、3/5D、3<54. 表达式!(x>0||y>0) 等价于__D___。

A、!x>0||!y>0B、!(x>0)||!(y>0)C、!x>0&&!y>0D、!(x>0)&&!(y>0)5. 若变量已正确定义并赋值,表达式__D____不符合C语言语法。

A、4&&3B、+aC、a=b=5D、int(3.14)6. 若变量已正确定义,执行语句scanf("%d%d%d ",&k1,&k2,&k3);时,___B___是正确的输入。

A、2030,40B、20 30 40C、20, 30 40D、20, 30,407. 执行语句printf(”__D____”, 2); 将得到出错信息。

A、%dB、%oC、%xD、%f8. 设变量定义为“int s[ ]="hello\nworld\n";”,则数组s中有__B____个元素。

A、12B、13C、14D、159. 设变量定义为“int a[2]={1,3}, *p=&a[0]+1;”,则*p的值是___B__。

A、2B、3C、4D、&a[0]+110. 若变量已正确定义并赋值,表达式-k++ 等价于__A____。

A、-(k++)B、(-k)++C、-(k+1)D、-(++k)11. 在C 语言程序中,在函数内部定义的变量称为__D____。

A、全局变量B、全程变量C、外部变量D、内部变量12. 若x是整型变量,表达式(x=10.0/4.0) 的值是__D___ 。

c语言结构体试题及答案

c语言结构体试题及答案

c语言结构体试题及答案1. 定义一个结构体,包含学生的姓名、学号和成绩。

```cstruct Student {char name[50];int id;float score;};```2. 编写一个函数,计算结构体数组中所有学生的平均成绩。

```cfloat calculateAverageScore(struct Student students[], int size) {float sum = 0.0;for (int i = 0; i < size; i++) {sum += students[i].score;}return sum / size;}```3. 给定一个结构体数组,编写一个函数,返回成绩最高的学生。

```cstruct Student* findHighestScoreStudent(struct Student students[], int size) {struct Student* highest = students;for (int i = 1; i < size; i++) {if (students[i].score > highest->score) {highest = &students[i];}}return highest;}```4. 编写一个函数,将结构体数组中的学生信息打印出来。

```cvoid printStudents(struct Student students[], int size) { for (int i = 0; i < size; i++) {printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);}}```5. 如何定义一个结构体,其中包含另一个结构体类型的成员?```cstruct Inner {int a;float b;};struct Outer {struct Inner inner;char c[100];};```6. 编写一个函数,交换两个结构体变量的值。

C语言指针习题及答案

C语言指针习题及答案

指针主要内容的习题及答案一.选择题1.变量的指针,其含义是指该变量的 B 。

A)值B)地址C)名D)一个标志2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 B 。

A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2) 3.若有说明:int *p,m=5,n;以下程序段正确的是 D 。

A)p=&n ; B)p = &n ;scanf(“%d”,&p); scanf(“%d”,*p);C)scanf(“%d”,&n); D)p = &n ;*p=n ; *p = m ;4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是 D 。

void print_value(int *x){ printf(“%d\n”,++*x); }A)23 B)24 C)25 D)265.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是C 。

A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ; C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ;6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是D 。

A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p 7.下面判断正确的是 C 。

A)char *a=”china”; 等价于char *a; *a=”china” ;B)char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”;}C)char *s=”china”; 等价于char *s; s=”china” ;D)char c[4]=”abc”,d[4]=”abc”; 等价于char c[4]=d[4]=”abc” ;8.下面程序段中,for循环的执行次数是 C 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、下列程序的运行结果是_B______。

void fun(int *a,int *b)
{
int *k:
k=a;a-b;b=k;
}
main()
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf[”%d%d.f,a,b);
}
A)6 3 B)36 C)编译出错 D)0 0
PS:本题中主函数里的x、y,fun函数里的a、b、k,这些都是指针,fun函数中只是将a、b这两个指针交换了位置,而并没有改变主函数中变量a、b的值。

2、若有定义:int*p[3];,则以下叙述中正确的是____B____。

A)定义了一个基类型为int的指针变量p,该变量有三个指针
B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C)定义了一个名为+p的整型数组,该数组含有三个int类型元素
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
PS:由于运算符[]优先级比*高,int*p[3];相当于int *(p[3]);表示数组p 的三个元素都是指针变量,且每个元素都是基类型为int的指针。

3、有以下程序:
void swapl(int *a,int *b)
{int *c=a;
a=b,b=c;
}
void swap2(int *a,int *b)
{
int c=*a:
*a=*b,*b=c;
}
main()
(int a=lO,b=15;
swapl(&a,&b);
printf(”%d,%d,”,a,b);
a=lO,b=15;
swap2(&a,&b);
printf(”%d,%dt.,a,b);
}
其输出结果为_10,15,15,10___。

A)15,10,10,15 B)15,10,15,10 C)10,15,10,15 D)10,15,15,10
PS:C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。

在内函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。

本题中swapl()函数中,虽然改变了形参指针的值,但实参指针的值并没有改变,所以执行第一个printf后应输出10,15,;swap2()函数实现了交换两个变量a和b的值,因此执行第二个printf后输出交换后的值15,10,所以本题答案为D。

4、当调用函数时,实参是一个数组名,则向函数传送的是___B_______。

A)数组的长度B)数组的首地址
C)数组每一个元素的地址 D)数组每个元素中的值
PS:当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,函数中的形参可定义成以下三种形式:
①形参定义成数组;
②形参定义成可变长数组;
③形参定义为指针变量。

5、设有以下声明语句
struct ex
{ int x;float y;char z;}example;
则下面的叙述中不正确的是_____B_____。

A)struct是结构体类型的关键字B)example是结构体类型名
C)x,y,z都是结构体成员名 D)struct ex是结构体类型
6、以下只有在使用时才为该类型变量分配内存的存储类说明是____B____。

A)auto和stmic B)auto和register
C)register和static D)extem和register
PS:extem、register、static、auto分别是定义外部变量、寄存器变量、静态变量、自动变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元;而静态变量和外部变量属于静态存储,在整个程序运行时都存在。

7、下面程序运行后的输出结果是__C________。

fut(int**s,int p[2][3])
{
**s=p[l][1];
}
main()
{
int a[2][3]={1,3,5,7,9,1l},*p;
p=(int*)malloc(sizeof(int));
fut(&p,a);
printf(”%d\n”,*p);
}
A)l B)7 C)9 D)ll
PS:本题a[2][3]定义为一个具有两行三列的元素的数组,malloc()函数的作用是开辟了一个长度为sizeof(int)的内存区,p为指向整型数据的指针变量,程序调用fur()函数,将第一行第一列对应的元素值赋给一s,由于数组中第一行第一列对应的元素为9,所以本题输出值9。

8、以下程序的输出结果是10 。

main()
{
int arr[]={30,25,20,15,10,5},*p=arr;
p++;
printf(”%d\n”,*(p+3));
)
PS:整型指针最初被赋的值是数组art的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。

因此,输出应为10。

9、下列程序的输出结果是6。

main()
{
int a[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=O;y<3;y++)
z=(*(ptr+y)<x)?*(ptr十y):x;
printf(”%d\n”,z);
10、若有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现拷贝。

(注:不使用逗号表达式)
;}
d[j]=0;
PS:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。

本题应使用i的自增后置来实现。

11、若有如下结构体说明:
struct STRU
{ int a,b;char c:double d:
struct STRU *pl,*p2;
};
请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

struct STRU t[20]
12、_数据库______ 是数据库应用的核心。

13、对指定字符串中的字符串进行从大到小排序.
int main()
{
char a[10][20];
for(int i=0;i<10;i++) scanf("%s",a[i]);
for(int i=0;i<9;i++)
for(int j=0;j<9-i;j++)
if(strcmp(a[j],a[j+1])>0) {
char t[10];
strcpy(t,a[j]);
strcpy(a[j],a[j+1]); strcpy(a[j+1],t);
}
for(int i=0;i<10;i++) printf("%s\n",a[i]); return 0;
}
#include<stdio.h> #include<string.h> main()
{ char *str=”ABCDabcd”,temp;Int n,i;
n=strlen(str);
while(n–>1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{ temp=str[i];
str[i]=str[i+1];
str[i+1]=temp;
}
p rintf(“%s”,str);
}。

相关文档
最新文档