C语言习题7-共八套
- 格式:doc
- 大小:43.00 KB
- 文档页数:3
c语言习题及答案C语言习题及答案C语言作为一门广泛应用于计算机科学领域的编程语言,其重要性不言而喻。
对于初学者而言,通过习题的练习可以帮助巩固基础知识,培养编程思维,提高解决问题的能力。
本文将介绍一些常见的C语言习题,并给出相应的答案,希望能对学习C语言的初学者有所帮助。
1. 习题一:编写一个程序,要求用户输入两个整数,然后输出它们的和。
答案一:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:\n");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和是:%d\n", sum);return 0;}```2. 习题二:编写一个程序,判断一个整数是否为偶数。
答案二:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:\n");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数。
\n", num);} else {printf("%d是奇数。
\n", num);}return 0;}```3. 习题三:编写一个程序,输出1到100之间所有能被3整除的数。
答案三:```c#include <stdio.h>int main() {int i;printf("1到100之间能被3整除的数有:\n");for (i = 1; i <= 100; i++) {if (i % 3 == 0) {printf("%d ", i);}}printf("\n");return 0;}```4. 习题四:编写一个程序,计算一个正整数的阶乘。
C语言习题集及答案导言C语言是一门广泛应用于系统开发和嵌入式编程的高级编程语言。
为了帮助学习者更好地掌握C语言的各个方面,提供一系列的习题集是非常有必要的。
本文档将为您提供一些常见的C语言习题,并提供相关的答案和解析。
希望本文档可以帮助您提高C语言的编程技能。
习题集1. 求阶乘编写一个C函数,输入一个正整数n,计算并返回n的阶乘。
int factorial(int n) {if (n == 0) {return1;} else {return n * factorial(n - 1);}}2. 反转字符串编写一个C函数,输入一个字符串,将字符串中的字符反转,并返回反转后的字符串。
void reverse_string(char *str) {int length = strlen(str);int i, j;char temp;for (i = 0, j = length - 1; i < j; i++, j--) {temp = str[i];str[i] = str[j];str[j] = temp;}}3. 数组排序编写一个C函数,输入一个整型数组,将数组中的元素按升序排序,并返回排序后的数组。
void sort_array(int *arr, int length) {int i, j, temp;for (i = 0; i < length - 1; i++) {for (j = 0; j < length - i - 1; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}4. 查找最大元素编写一个C函数,输入一个整型数组,找到数组中的最大元素,并返回该元素的值。
int find_max(int *arr, int length) {int i;int max = arr[0];for (i = 1; i < length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}答案解析1. 求阶乘递归是一种简洁的解决阶乘问题的方法。
C语言测试题及答案一、选择题1. 下列哪个是C语言的关键字?A. startB. intC. inputD. print答案:B2. C语言中表示赋值运算的符号是:A. =B. ==C. <=D. +答案:A3. 下列哪个是C语言的循环语句?A. ifB. elseC. forD. switch答案:C二、填空题1. 在C语言中,用于输出字符型数据的函数是______。
答案:printf2. 在C语言中,用于定义宏常量的关键字是______。
答案:#define3. C语言中,用于计算整数除法的运算符是______。
答案:/三、简答题1. 请简要说明C语言的特点。
答:C语言是一种通用的高级编程语言,具有以下特点:- 结构化语言:C语言具备顺序、选择和循环等结构化语句,方便编写大型程序。
- 高效性:C语言的执行效率高,生成的机器码紧凑,适用于开发底层系统软件。
- 可移植性:C语言的源代码可以在不同平台上编译执行,提高了可移植性和代码的重用性。
- 直接访问内存:C语言提供指针机制,可以直接对内存进行访问和操作,增加了灵活性和执行效率。
2. 请举例说明C语言中的数据类型。
答:C语言中的数据类型包括整型、浮点型、字符型和指针型等。
例如:- 整型:int、short、long等,用于表示整数;- 浮点型:float、double等,用于表示带小数部分的数值;- 字符型:char,用于表示单个字符;- 指针型:用于存储内存地址,可用于实现数据间的传递和共享。
四、编程题请编写一个C语言程序,要求实现以下功能:1. 用户输入两个整数;2. 程序输出这两个整数的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入第一个整数:");scanf("%d", &num1);printf("请输入第二个整数:");scanf("%d", &num2);sum = num1 + num2;printf("两个整数的和为:%d\n", sum);return 0;}```以上是一个简单的C语言程序,通过使用`printf`和`scanf`函数实现用户输入和输出,使用`+`运算符计算两个整数的和,并通过`printf`函数输出结果。
(完整版)C语⾔程序设计练习题(含程序及参考答案)C语⾔练习题(所提供的源程序均采⽤⾃定义函数⽅式解决,如不采⽤函数⽅式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能⼀⼀验证,仅供参考使⽤)1、定义⼀个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三⾓形函数返回3,若能构成等腰三⾓形函数返回2,若能构成⼀般三⾓形函数返回1,若不能构成三⾓形函数返回0。
#includeint fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写⼀个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运⾏后 a 中的值为8,b中的值为3。
#includevoid fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输⼊3个数,将最⼤值放在变量a中,最⼩值放在变量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.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满⾜(1);选项D中的int为关键字,不满⾜(3)6.下列C语⾔⽤户标识符中合法的是( B)。
A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满⾜(2);选项C,E均为为关键字,不满⾜(3);选项D中的“-”不满⾜(1);7.下列四组选项中,正确的C语⾔标识符是(C)。
A) %x B) a+b C) a123 D) 123选项A中的“%” ,选项B中“+”不满⾜(1);选项D中的标识符以数字开头不满⾜(2)8、下列四组字符串中都可以⽤作C语⾔程序中的标识符的是(A)。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满⾜(1);选项C中的while 为关键字,不满⾜(3)9.C语⾔中的简单数据类型包括(D)。
第一套1.若变量已正确定义并赋值,对库函数错误调用的是A) k=scanf("%d%d",&i,&j);B) printf("\\%d\\\n",k);C) getchar(ch);D) putchar(ch);2.要求定义一个返回值为double类型的名为mysum的函数,其功能为求两个double类型数的和值,正确的定义是:A) mysum(double a,b){ return (a+b); }B) mysum(double a, double b){ return a+b; }C) double mysum(int a, intb);{return a+b; }D) double mysum(double a, double b){ retrun (a+b); }3.以下是对fun函数的正确调用:fun(a+b,fun(a+b,(a,b)));则fun函数有______个形参。
4.若有以下函数定义:myfun(double a, int n){…… }则myfun函数值的类型是A) void B) doubleC) int D) char5.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值。
以下选项中错误的程序是A) double fun( int a,int b ){…… }main(){ ┇fun( i,k );┇}B) main(){printf( "%f\n",fun( 2,10 ));┇}double fun( int a,int b ){ …… }C) double fun( int, int );main(){ ┇x=fun( i,k );┇}double fun( int a,int b ){ …… }D) main(){ double fun(int i,int y);┇x=fun( i,k );┇}double fun(int a,int b){ ……}6.若有以下函数:int fun(int x){ return (1+x*x); }则语句printf(" %d\n",fun(fun(fun(fun( 1 )))) );的输出结果____________第二套1.若有以下定义:floatx;inta,b,c=2;,则正确的switch语句是()A)switch(x){ case1.0∶printf("*\n");case2.0∶printf("**\n");}B)switch(int(x)){ case1∶printf("*\n");case2∶print f("**\n");}C)switch(a+b){ case1∶printf("*\n");case1+2∶printf("**\n");}D)switch(a+b){ case1∶printf("*\n");casec∶printf("**\n");}2.执行下面程序片段的结果是()int x=123;do{ printf("=\n",x--);}while(!x);A)打印出321 B)打印出123C)不打印任何内容 D)陷入死循环3.以下程序的输出结果是()# includemain(){ int i=0,a=0;while(i<20){ for(;;){ if((i)==0)break;else i--; }i+=11;a+=i;}printf("%d\n",a);}A)21 B)32 C)33 D)114.下列与表达式“b=(a<0?-1∶a>0?1∶0)”的功能等价选项是()A)b=0;if(a>=0)if(a>0) b=1;else b=-1;B)if(a>0)b=1;else if(a<0)b=-1;elseb=0C)if(a)if(a<0) b=-1;else if(a>0)b=1;else b=0;D) b=-1;if(a)if(a>0)b=1;else if(a==0)b=0;else b=-1;5.若有以下定义:char a; int b; float c; double d; 则表达式“a*b+d-c”值的类型为()A)float B)intC)char D)double6.以下叙述中正确的是()A)在函数中必须要有return语句B)在函数中可以有多个return语句,但只执行其中的一个C)return语句中必须要有一个表达式D)函数值并不总是通过return语句传回调用处7.有以下程序float fun(int x,int y){ return(x+y);}main(){int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是()A)编译出错 B)9C)21 D)9.08.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,则对a数组元素不正确的引用是()A)a[p-a] B)*(&a[i])C)p[i] D)a[10]9.以下叙述中正确的是()A)全局变量的作用域一定比局部变量的作用域大B)静态(static)类型变量的生存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值10.若有如下程序:main(){char a[][9]={"china","Japan","USA","France"};printf("\′%s\′\n",a[2]);}则程序运行后的输出结果是()A)′Japan′B)′USA′C)USA D)′inaJapanUSAFrance′第三套1.若变量c为char类型,能正确判断出c为小写字母的表达式是()A)′a′<=c<=′z′B)(c>=′a′)||(c<=′z′)C)(′a′=C)D)(c>=′a′)&&(c<=′z′)2.下面程序的输出结果是()main(){ int x=2,y=0,z;x+=3+2;printf("%d",x);x*=y=z=4;printf("%d",x); }A)728 B)无法计算C)7,4 D)8,43.有如下程序main(){int x=1,a=0,b=0;switch(x){case 0∶b++;case 1∶a++;case 2∶a++;b++;}printf("a=%d,b=%d\n",a,b);}程序运行后的输出结果是()A)a=2,b=1 B)a=1,b=1C)a=1,b=0 D)a=2,b=24.以下选项中,正确的if-else语句是()A)if(x!=0)printf("%d",x)elseprintf("%d",-x);B)if(x!=0){x=x+y;printf("%d",x); }elseprintf("%d",-x);C)if(x!=0)x=x+y;printf("%d",x);elseprintf("%d",-x);D)if(x!=0){x=x+y;printf("%d",x)};elseprintf("%d",-x);5.有以下程序段int n=0,p;do {scanf("%d",&p);n++;}while(p!=12345 &&n<3);此处do-while循环的结束条件是()A)p的值不等于12345并且n的值小于3B)p的值等于12345并且n的值大于等于3C)p的值不等于12345或者n的值小于3D)p的值等于12345或者n的值大于等于36.若有如下程序段:main(){ int n=0;while(printf("*")){ n++;if(n<3)break; }}则下列描述正确的是()A)其中循环控制表达式与0等价B)其中循环控制表达式与’0’等价C)其中循环控制表达式是不合法的D)以上说法都不对7.C语言中main函数参数的非法表示形式是()A)main(char *argv[],int argc)B)main(int a,char**b)C)main(int y,char *x[])D)main(int argv,char *argc[])8.设有如下枚举类型定义:enum language {Basic=3,Assembly,Ada=100,COBOL,Fortran};枚举类型Fortran的值为()A)4 B)7C)102 D)1039.阅读下述程序段:y=-1;if (x!=0)if (x>0)y=1;elsey=0;该程序段所描述的数学关系是()A)y=-1(x<0)0(x=0)1(x>0)B)y=1(x<0)0(x=0)-1(x>0)C)y=0(x<0)-1(x=0)1(x>0)D)y=-1(x<0)1(x=0)0(x>0)10.设有数组定义:char array[]="China";蚴 閍rray所占的空间为()A)4个字节 B)5个字节C)6个字节D)7个字节第四套1.有以下程序:main(){intx=0xFFFF;printf("%d\n",x--);}执行后的输出结果是()A)32767 B)FFFEC)-1 D)-327682.以下程序的输出结果是()#include#includemain(){ char str[12]={′s′,′t′,′r′,′i′,′n′,′g′};printf("%d\n",strlen(str));}A)6 B)7C)11 D)123.若有以下定义:char s[20]="programming",*ps=s;则不能代表字符o的表达式是()A)ps+2 B)s[2]C)ps[2] D)ps+=2,*ps4.关于语句“for(表达式1;表达式2;表达式3)”,下面说法中错误的是()A)for语句中的三个表达式可以同时省略B)for语句可以用于循环次数不确定的情况C)for语句中表达式2只能是关系表达式或逻辑表达式D)for语句中表达式1和表达式3可以是逗号表达式5.执行下面程序片段的结果是()int x=23;do{ printf("-",x--);}while(!x);A)打印出321 B)打印出23C)不打印任何内容 D)陷入死循环6.与y=(x>0?1∶x<0?-1∶0);的功能相同的if语句是()A)if(x>0)y=1;else if(x<0)y=-1;else y=0;B)if(x)if(x>0) y=1;else if(x<0) y=-1;else y=0;C)y=-1;if(x)if(x>0)y=1;else if(x==0) y=0;else y=-1;D)y=0;if(x>=0)if(x>0) y=1;else y=-1;7.标准库函数fgets(s,n,f)的功能是()A)从文件f中读取长度为n的字符串存入指针s所指的内存B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C)从文件f中读取n个字符串存入指针s所指的内存D)从文件f中读取长度为n-1的字符串存入指针s所指的内存8.若有如下函数调用语句:sub(a,1,fun(b,c),d+c,(a+d,c*f));则在该函数调用语句中含有实参的个数是()A)5 B)7C)10 D)69.若要定义a为3×4的二维数组,正确的定义语句是()A)float a(3,4); B)float a[3][4];C)float a(3)(4); D)float a[3,4];10.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};int i,s=0;for (i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序运行后的输出结果是()A)11 B)19C)13 D)20第五套1.以下程序的输出结果是()#includemain (){int a,b,d=241;a=d/100%9b=(-1)&&(+1);printf("%d,%d,a,d"); }A)6,1 B)2,1C)6,0 D)2,02.关于if后一对圆括号中的表达式,以下叙述中正确的是()A)只能用逻辑表达式B)只能用关系表达式C)既可用逻辑表达式也可用关系表达式D)可用任意表达式3.有以下程序main(){ int a,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d\n",a);}程序运行后的输出结果是()A)7 B)8C)9 D)104.C语言中()A)不能使用do-while语句构成的循环B)do-while语句构成的循环必须用break语句才能退出C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环5.当a=1、b=3、c=5、d=4时,执行下面一段程序:if(a if(c elseif(a if(b elsex=3;elesx=6;elsex=7;程序执行后,x的值为()A)1 B)2C)3 D)66.设有如下的函数funct(x)float x;{ x*=x;printf("\n%d",x);return(x);}则函数的类型()A)与参数x的类型相同 B)voidC)int D)无法确定7.在C语言中,不适用于局部变量的存储类说明符是()A)auto B)registerC)static D)extern8.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<5;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是()A)15 B)10C)6 D)39.有以下程序intb=2;int func(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf("%d\n",res);}程序运行后的输出结果是()A)4 B)6C)8 D)10第六套1.下面叙述正确的是()A)define和auto都不能定义为用户标识符B)可以把define和auto定义为用户标识符C)可以把define定义为用户标识符,但auto是C语言的关键字D)可以把auto定义为用户标识符,但define是C语言的关键字2.以下的for循环()for(x=0,y=0;(y!=123)&&(x<4);x++)A)是无限循环 B)循环次数不定C)执行4次 D)执行3次3.下述对C语言字符数组的描述中错误的是()A)字符数组可以存放字符串B)字符数组中的字符串可以整体输入、输出C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较4.设有定义:int a,*p=&a,**pp= &p;,则与a=100;等价的语句为()A)**p=100; B)**pp=100;C)&*p=100; D)*pp=10;5.有以下程序int x=3;do {printf("%d",x-=2);}while(!(--x));程序运行后的输出结果是()A)1 B)30C)1-2 D)死循环6.执行下面程序的正确结果是()main(){ float a=1.9;switch(a){ case 0∶printf("0000");case 1∶printf("1111");case 2∶printf("3333");}printf("%f",a);}A)1.900000 B)111133331.900000C)33331.900000 D)00001111233331.9000007.对下述程序,正确的判断是()main (){ int a, b;scanf("%d,%d",&a,&b);if(a>b)a=b;b=a;else a++;b++;printf("%d,%d",a,b);}A)有语法错误不能通过编译B)若输入4,5则输出5,6C)若输入5,4则输出4,5D)若输入5,4则输出5,58.若有如下程序:sub(int n){intt;if(n==1)returnt=5;else t=sub(n-1)+3;returnt;}main(){printf("%d\n",sub(5));}则程序运行后的输出结果是()A)17 B)18C)19 D)209.下面各被调用函数首部书写正确的是()A)void sub(float x;float y);B)void sub(float x,y)C)void sub(float x,float y)D)void sub(float x,float y);10.设有如下程序:#include"string.h"main(){static char s1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果从键盘上输入name<回车>name1<回车>,则程序运行后的输出结果是()A)$8 B)@10C)$9 D)@9第七套1.以下程序运行后,输出结果是()#includess(char *s){char *p=s;while(*p)p++;return(p-s);}main(){char*a="abded";inti;i=ss(a);printf("%d\n",i);}A)8 B)7C)6 D)52.若有如下程序:int sub(){static int n=1;int x=1;x*=n;n++;return x;}main(){int n,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}则程序运行后的输出结果是()A)15 B)120C)34560 D)-309763.在C语言中,函数的隐含存储类别是()A)static B)autoC)extern D)register4.有以下程序:intf1(doublea){returna*a; }intf2(doublex,doubley){doublea,b;a=f1(x);b=f1(y);returna+b;}main(){doublew;w=f2(1.1,2.0);…}变量w中的值是()A)5.21 B)5C)5.0 D)0.05.下面被调用函数sub的函数值的类型是()sub(float a){float b;b=a*a+1;return b;}A)单精度型B)双精度型C)空类型 D)整型6.若有以下定义语句:doublea[5];inti=0;能正确给a数组元素输入数据的语句是()A)scanf("%lf%lf%lf%lf%lf",a);B)for(i=0;i<=5;i++)scanf("%lf",a+i);C)while(i<5)scanf("%lf",&a[i++]);D)while(i<5)scanf("%lf",a+i);7.以下程序的输出结果是()main(){ charss[16]="test\0\n\"";printf("%d,%d\n",strlen(ss),sizeof(ss));}A)4,16 B)7,7C)16,16 D)4,78.以下说法正确的是()A)宏定义是C语句,所以要在行末加分号B)可以使用#undef命令来终止宏定义的作用域C)在进行宏定义时,宏定义不能层层置换D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换9.以下程序的输出结果是()#includemain(){struct stru{int a,b;char c[6];};printf("%d\n",sizeof(stru));}A)2 B)4C)8 D)1010.若有如下定义:int s[3];则下面表达式中不能代表数组元素s[1]的地址的是()A)&s[1] B)&s[0]+1C)s+1 D)s++第八套1.若以下对fun函数的调用是正确的:x=fun(fun(a,b,c),(a+b,a+c),a+b+c);则fun函数的形参个数为()A)3 B)4C)5 D)62.若有说明:int*p, m=5; n;,以下正确的程序段是()A)p=&m;scanf("%d",&p)B)p=&n;scanf("%d",&p)C)scanf("%d",&p)p=&n;D)p=&n;p=&m;3.以下程序调用findmax函数返回数组中的最大值findmax(int*a,int n){ int*p,*s;for(p=a,s=a;p-a if()s=p;return(*s);}main(){ intx[5]={12,21,13,6,18};printf("%d\n",findmax(x,5));}在下划线处应填入的是()A)p>s B)*p>*sC)a[p]>a[s] D)p-a>p-s4.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是()A)p=2*(int*)malloc(sizeof(int));B)p=(int*)calloc(2*sizeof(int));C)p=(int*)malloc(2* sizeof(int));D)p=2*(int*)calloc(sizeof(int));5.下列程序的输出结果是()main(){char *p1,*p2,str[50]="xyz";p1="abcd";p2="ABCD";strcpy(str+2,strcat(p1+2,p2+1));printf("%s",str);}A)xyabcAB B)abcABzC)Ababcz D)XycdBCD6.以下叙述中不正确的是()A)一个变量的作用域完全取决于变量定义语句的位置B)全局变量可以在函数以外的任何部位进行定义C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用D)一个变量说明为static存储类是为了限制其他编译单位的引用7.交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算符()A)~ B)&C)^ D)|8.fscanf函数的正确调用形式是()A)fscanf(fp,格式字符串,输出表列);B)fscanf(格式字符串,输出表列,fp);C)fscanf(格式字符串,文件指针,输出表列);D)fscanf(文件指针,格式字符串,输入表列);9.以下程序的运行结果是()# define MAX 10int a[MAX],i;main(){ printf("\n");sub1();sub3(a);sub2();sub3(a);}sub2(){ int a[MAX],i,max;max=5;for(i=0;i }sub1(){for(i=0;i }sub3(int a[]){ int i;for(i=0;i printf("\n");}A)0 2 4 6 8 10 12 14 16 180 1 2 3 4B)0 1 2 3 40 2 4 6 8 10 12 14 16 18C)0 1 2 3 4 5 6 7 8 90 1 2 3 4D)0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 18第一套答案:1.C 2.D 3.2 4.C 5.B 6.677第二套答案:1.C 2.B 3.B 4.B 5.D 6.B 7.B 8.D 9.B 10.B 第三套答案: 1.D 2.A 3.A 4.B 5.D 6.B 7.A 8.C 9.C 10.C 第四套答案:1.C 2.A 3.A 4.C 5.B 6.A 7.B 8.A 9.B 10.B 第五套答案:1.B 2.D 3.B 4.D 5.B 6.C 7.D 8.B 9.B第六套答案:1.C 2.C 3.C 4.B 5.C 6.B 7.A 8.A 9.C 10.D 第七套答案:1.D 2.B 3.C 4.C 5.D 6.C 7.A 8.B 9.D 10.D 第八套答案:1.A 2.D 3.B 4.C 5.D 6.B 7.C 8.D 9.D。
c语言习题集及答案C语言习题集及答案C语言是一种广泛应用于系统软件和应用软件开发的高级语言,学习C语言对于计算机专业的学生来说至关重要。
为了帮助大家更好地掌握C语言的知识,我们整理了一套C语言习题集及答案,供大家参考和练习。
1. 请编写一个C程序,实现输入两个整数,输出它们的和。
```c#include <stdio.h>int main() {int a, b;printf("请输入两个整数:");scanf("%d %d", &a, &b);printf("它们的和为:%d\n", a + b);return 0;}```2. 编写一个C程序,实现输入一个整数,判断它是否为偶数。
```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;}```3. 编写一个C程序,实现输入一个字符,判断它是大写字母、小写字母还是数字。
```c#include <stdio.h>int main() {char ch;printf("请输入一个字符:");scanf("%c", &ch);if (ch >= 'A' && ch <= 'Z') {printf("%c是大写字母\n", ch);} else if (ch >= 'a' && ch <= 'z') {printf("%c是小写字母\n", ch);} else if (ch >= '0' && ch <= '9') {printf("%c是数字\n", ch);} else {printf("%c是其他字符\n", ch);}return 0;}```以上是我们整理的部分C语言习题及答案,希望能帮助大家更好地掌握C语言的知识。
C语言入门练习题一、基础知识篇1.1 变量与常量1. 定义一个整型变量并赋值为10。
2. 声明一个浮点型常量,其值为3.14。
3. 将字符型变量 'A' 赋值给另一个字符型变量。
1.2 数据类型1. 将一个整型变量转换为浮点型变量。
2. 将一个长整型变量赋值给一个短整型变量。
3. 编写一个程序,输出不同数据类型所占的字节数。
1.3 运算符1. 计算5加3乘2的结果。
2. 判断两个整型变量是否相等。
3. 使用自增运算符使变量i的值增加1。
二、控制结构篇2.1 顺序结构1. 编写一个程序,输出1到10的整数。
2. 输出用户输入的两个整数中的较大值。
3. 计算并输出圆的面积(给定半径)。
2.2 选择结构1. 判断一个整数是正数、负数还是零。
2. 根据用户输入的成绩,输出对应的等级(A、B、C、D、E)。
3. 编写一个程序,实现石头剪刀布的游戏。
2.3 循环结构1. 计算1到100所有整数的和。
2. 输出所有的水仙花数(一个三位数,其各位数字的立方和等于该数本身)。
3. 使用循环结构输出九九乘法表。
三、函数篇3.1 函数定义与调用1. 编写一个函数,计算两个整数的和。
2. 定义一个函数,实现字符串的复制。
3. 创建一个函数,判断一个数是否为素数。
3.2 递归函数1. 使用递归函数计算斐波那契数列的第n项。
2. 编写一个递归函数,实现字符串的逆序输出。
3. 利用递归函数求解汉诺塔问题。
四、数组篇4.1 一维数组1. 初始化一个包含10个整数的数组,并输出其元素。
2. 计算一维数组中所有元素的和。
3. 找出一维数组中的最大值和最小值。
4.2 二维数组1. 创建一个3行4列的二维数组,并输出其元素。
2. 计算二维数组对角线元素的和。
3. 实现矩阵的转置。
五、指针篇5.1 指针基本操作1. 声明一个整型变量和一个指向该变量的指针,并输出指针所指向的值。
2. 使用指针实现两个整数的交换。
3. 编写一个函数,通过指针参数修改传入的字符串。
c语言试卷集(10套)-试题及答案C语言试卷集(10套)-试题及答案试卷一一、选择题(每题2分,共20分)1. C语言中,用于表示逻辑“真”的值是()。
A. 0B. 1C. -1D. 任意非零值答案:B2. 下列哪个选项是C语言中的合法变量名?()A. 2variableB. variable2C. variable_2D. variable!答案:C3. C语言中,用于定义一个整型数组的语句是()。
A. int array[10];B. int [10] array;C. int 10 array;D. int array=10;答案:A4. 下列哪个选项是C语言中的合法字符串常量?()A. "Hello"B. 'Hello'C. "HelloD. Hello答案:A5. C语言中,用于表示逻辑“假”的值是()。
A. 0B. 1C. -1D. 任意非零值答案:A6. 下列哪个选项是C语言中的合法浮点数常量?()A. 3.14B. 314.C. .314D. 3.14E答案:A7. C语言中,用于定义一个整型变量的语句是()。
A. int x;B. var x;C. x int;D. int = x;答案:A8. 下列哪个选项是C语言中的合法字符常量?()A. 'A'B. "A"C. 'AB'D. "AB"答案:A9. C语言中,用于定义一个字符数组的语句是()。
A. char array[10];B. char [10] array;C. char 10 array;D. char array=10;答案:A10. C语言中,用于表示字符常量的是()。
A. 'A'B. "A"C. AD. "A"答案:A二、填空题(每题3分,共15分)1. C语言中,用于定义一个整型变量并初始化为0的语句是()。
习题七
一、选择题
1.若有定义:int x,*pb;则正确的赋值表达式是
A)pb=&x B)pb=x C)*pb=&x D)*pb=*x 2.若有以下程序:
#include“stdio.h”
main()
{
printf(“%d\n”,NULL)
}
程序的输出结果是
A)因变量无定义输出不定值B)0
C)-1 D)1
3.若有以下程序:
#include“stdio.h”
int sub(int x,int y,int *z)
{ *z=y-x;}
main()
{
int a,b,c;
sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);
printf(“%d,%d,%d \n”,a,b,c)
}
程序的输出结果是
A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7 4.若有以下程序:
#include“stdio.h”
main()
{
int k=2,m=4,n=6,*pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf(“%d\n”,n)
}
程序的输出结果是
A)4 B)6 C)8 D)10
5.若指针p已正确定义并指向如图所示储存单元:
则执行语句*p++后,*p的值是:
A)20 B)30 C)21 D)31
6.若指针p已正确定义并指向如图所示储存单元:
p↑
则执行语句*++p的值是:
A)20 B)30 C)21 D)31 7.若指针p已正确定义并指向如图所示储存单元:
则执行语句++*p的值是:
A)20 B)30 C)21 D)31 8.若有以下程序:
#include“stdio.h”
void prtv(int *x)
{
printf(“%d\n”,++*x);
}
main()
{
int a=25;
prtv(&a);
}
程序的输出结果是
A)23 B)24 C)25 D)26 9.若有以下程序:
#include“stdio.h”
main()
{
int **k,*a,b=100;
a=&b;k=&a;printf(“%f\n”,**k)
}
程序的输出结果是
A)运行出错B)100 C)a的地址D)b的地址
二、填空题
1.以下程序段的输出结果是_________
int *var,b;
b=100;var=&b;b=*var+10;
printf(“%d\n”,*var);
2.以下程序的输出结果是_________
#include“stdio.h”
int ast(int x, int y, int *cp,int *dp)
{ *cp=x+y;*dp=x-y;}
main()
{
int c,d;
ast(4,3,&c,&d)
printf(“%d %d\n”,c,d)
}
3.若有定义:char ch;
⑴使指针p可以指向字符型变量的定义语句是____[1]___
⑵使指针p指向变量ch的赋值语句是____[2]___
⑶通过指针p给变量ch读入字符的scanf函数调用语句是____[3]___
⑷通过指针p给变量ch赋字符A的语句是____[4]___
⑸通过指针p输出ch中字符的语句是____[5]___
4.若有如图所示五个连续的int类型的储存单元并赋值如图,且已定义:int *p,*s;其中p指向储存单元a[1]。
p↑
⑴通过指针p,给s赋值,使其指向最后一个储存单元a[4]的语句是____[1]___
⑵s指向储存单元a[4],移动指针s,使之指向中间的储存单元a[2]的表达式是____[2]___
⑶已知k=2,指针s指向储存单元a[2],表达式*(s+k)的值是____[3]___
⑷指针s指向储存单元a[2],不移动指针s,通过s引用储存单元a[3]的表达式是
____[4]___
⑸指针s指向储存单元a[2],p指向储存单元a[0],表达式s-p的值是____[5]___
三、编成题
1.请编写函数,其功能是对传送过来的两个浮点数求出和值与差值,采用指针共享形式调用函数。
2.请编写函数,其功能是对传送过来的三个数选出最大值和最小值,采用指针共享形式调用函数。