C语言测试题2
c语言二级考试题及答案

c语言二级考试题及答案### C语言二级考试题及答案#### 单项选择题1. 题目:以下哪个选项是C语言中合法的变量名?- A. 2variable- B. variable-name- C. $variable- D. variable_name答案:B2. 题目:C语言中,以下哪个选项是正确的字符串字面量? - A. "Hello, World!"- B. 'Hello, World!'- C. "Hello World"- D. 'Hello World'答案:A3. 题目:在C语言中,以下哪个选项是正确的整型常量? - A. 0x1A- B. 1.2E3- C. 0123- D. 0b1010答案:A#### 填空题1. 题目:在C语言中,以下代码段的输出结果是____。
```cint a = 5;printf("%d", a++);```答案:52. 题目:以下代码段中,变量`b`的值是____。
```cint a = 10, b;b = a % 3;```答案:13. 题目:以下代码段中,变量`c`的值是____。
```cfloat a = 2.5, b = 4.5;int c = a + b;```答案:7#### 编程题1. 题目:编写一个C语言程序,计算并输出以下数列的前10项之和:1, 1/2, 1/3, 1/4, ...```c#include <stdio.h>int main() {double sum = 0.0;for (int i = 1; i <= 10; i++) {sum += 1.0 / i;}printf("Sum of the first 10 terms: %f\n", sum); return 0;}```2. 题目:编写一个C语言程序,实现两个整数的交换。
c语言练习2

练习2一、选择题1.下面关于语句的说法中,正确的是( A B D)。
A、对程序中使用的变量、数组、函数等进行定义、声明的语句属于说明性语句B、表达式后面加;号构成表达式语句C、复合语句中不允许包含另一条复合语句D、对程序执行流程起控制作用的语句属于控制语句2.下面语句中,错误的是( B )。
A、m=x>y>z;B、float x=y=z;C、m=x,m>y;D、{k=m>n;k?:x,y;}3.下面不正确的if语句形式是( A )。
A、if (x=y;) m++;B、if (x<=y) m++;C、if (x-y) m++;D、if ( x ) m++;4.下面不正确的if语句形式是( C )。
A、if (x=y) ;B、if (x==y) m=0,n=1;C、if (x>=y) m=0 else n=1;D、if ( x!=y ) m=n;5.下面程序的运行结果是(A)。
void main(){int x=7,y=8,z=9;if(x>y)x=y,y=z; z=x;printf("x=%d y=%d z=%d\n",x,y,z);}A、x=7 y=8 z=7B、x=7 y=9 z=7 D、x=8 y=9 z=7 D、x=8 y=9 z=86.下面程序的运行结果是(B)。
void main(){int x=6,y=6;if(++x<y++)printf(“%d\n”,x++);elseprintf(“%d\n”,y++);}A、6B、7C、8D、97.下面程序的运行结果是(D)。
void main(){int x=1,y=2,z=3,m=1if(!x)m--;else if(!y)m=2;else if(!z);else m=3;printf(“m=%d\n”,m);}A、0B、1C、2D、38.在下面的if语句中,功能上具有等价关系的两条if语句是(B)。
c语言试题及答案 (2)

C语言部分一、选择题(每小题2分,共10分)(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。
错选或漏选均不得分)。
1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D,E )A、*(a+1)为元素6的地址这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。
B、*(a[1]+1)的值为2为8,故B不正确C、**(a+1)+2的值为8这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确;D、a[0]与a相同因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。
E、a[1][2]的值为10它是指第二行的第三个元素,为10,正确2、对函数的正确使用方法描述( A,C,D )。
A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组B、实参数组元素和形参数组元素类型可以不一致C、形参数组长度可以不指定D、形参数组长度可以大于实参数组长度E、数组名做参数属于值传递3、对静态变量的正确描述( A,B,D,E )A、静态局部变量在静态存储区内分配单元()B、静态外部变量可以赋初值,也可以不赋初值C、静态外部变量的作用与外部变量相同D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。
E、静态局部变量只赋一次初值4、下列描述正确的是( A ,C)。
A、由main 函数及其参数argc和* argv[]可以实现命令行方式B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中//先写缓冲区数据到文件中,再释放文件指针C、字符数组并不要求它的最后一个字符是‘\0’//是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。
《C语言程序设计(第2版)》试题库 期末试卷二

期末试卷二一、单项选择题(每题1分,共45分)1.下列变量名中,哪个是合法的()A.C&D B.string$C.char D._2132.C语言程序的基本单位是()A.程序行B.语句C.函数D.字符3.表达式a+b%3的值是()(设a=13.6,b=10)A.14.6 B.15C.15.9 D.16.64.保存一个C语言源程序的快捷键是()A.F1 B.F2 C.F3 D.F45.字符串”tc20\nlib\101\\\’”含有多少个字符( )A.10 B.11 C.12 D.136.Putchar()函数可以向终端输出一个()A. 整型变量或表达式值B. 实型变量值C. 字符串D. 字符或字符型变量值7.以下所列的C语言常量中,错误的是()A.0xFF B.2*5 C.2.5 D.04568.下列不合法的C语言赋值表达式是()A.a+=b-c B.a+b=cC.a=b=c=1 D.a*=++b+c9.下列程序运行后的输出结果是()main(){ int y=3,x=3;printf(“%d\n”,++x+y++);}A.5 B.8 C.7 D.610.若已正确定义x和y为double类型,则表达式x=1,y=x+3/2的值是()A.1 B.2 C.2.0 D.2.511.在C语言中运算对象必须是整型的运算符是()A.% B./ C.= D.*12.若有以下定义:char a; int b; float c;则表达式a*b-c值的类型为()A.int B.char C.double D.float13.下列正确的C语言赋值语句的是()A.x=3,y=5 B.a=b=1 C.i++; D.y=int(x)14.有如下程序段:int a1,a2;char c1,c2;scanf("%d%c%d%c",& a1,&c1,&a2,&c2);若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入是()(<CR>表示回车) A.10A 20B<CR> B.10 A 20 B<CR>C.10 A20B<CR> D.10A20 B<CR>15.有如下程序,输入数据:12345m678<CR>后,x的值是()#include <stdio.h>main( ){ int x; float y;scanf("%3d%f", &x,&y);}A.12345 B.123 C.45 D.34516.有如下程序,对应正确的数据输入是()main( ){ float a, b;scanf("%f%f", &a,&b);printf("a=%f,b=%f\n",a,b);}A.2.04<CR> B.2.04,5.67<CR>5.67<CR>C.a=2.04,b=5.67<CR> D.2.045.67<CR>17.有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,& c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式是()A.132<CR> B.1,3,2<CR>C.a=1,b=3,c=2<CR> D.a=1 b=3 c=2<CR>18.已知字母A的ASCII码是65,以下程序的执行结果是()main( ){char c1='A', c2='Y';printf("%d,%d\n", c1, c2);}A.A,Y B.65,65 C.65,90 D.65,8919.以下程序的执行结果是()main( ){ int a=2,b=5;printf("a=%d,b=%d\n", a, b);}A.a=%2,b=%5 B.a=2,b=5C.a=%%d,b=%%d D.a=%d,b=%d20.最适合解决选择结构“若x>0, 则y=1;否则y=0;”的语句是()A.switch B.嵌套的if-else C.if-else D.if21.设整型变量x,y和z的值依次为3,2和1,则下列程序段的输出结果是()if(x>y)x=y;if(x>z)x=z;printf(″%d,%d,%d\n″,x,y,z);A.1,1,1 B.1,2,1 C.1,2,3 D.3,2,122.执行下列程序段后,变量x的值是()int a=8,b=7,c=6,x=1;if(a>6) if(b>7) if(c>8) x=2;else x=3;A.0 B.1 C.2 D.323.运行下列程序的输出结果是()main(){ int a1=1,a2=1,a3=1,a4=1;if (a1>0) a3++;if (a1>a2) a3--;else if (a1= =a2) a3++;else a3--;printf(″%d,%d,%d,%d\n″,a4,a3,a2,a1);}A.1,1,1,1 B.1,2,3,4C.4,3,2,1 D.1,3,1,124.执行下列语句后,整型变量x的值是()switch (x=1) { case 0:x=10;break;case 1:switch (x=2) {case1:x=20;break;case2:x=30;}}A.30 B.20 C.10 D.125.以下说法中正确的是()A.continue和break只能用在循环体中B.continue只能用在循环体中C.break只能用在循环体中D.continue只能用在循环体外26.执行下列程序段的输出是()m=8;while (m>=5) m--,--m,n=m--- m;pritnf (″%d,%d″,m,n);A.2, 0 B.5,-1 C.5,0 D.5,127.设整型变量x的值为1,执行下列循环语句后,变量x 的值是()do x++; while (x++<2);A.2 B.3 C.4 D.528.执行下列语句后,变量k的值是()for (k=0;k<=5;k++) do k++;while (k<5);A.5 B.6 C.7 D.829.下列程序段中,不能使变量m的值等于10的程序段是()A.m=0; B.do m=0;while (m++<9); while (m++<10);C.for (m=8;m<10;m++); D.m=0;L:m++;if (m<10)goto L;30.下列语句中不正确的是()A.static int a[5]={1,2,3,4,5};B.static int a[5]={1,2,3};C.static int a[]={0,0,0,0,0};D.static int a[5]={0*5};31.说明:int a[10];则对a数组元素的正确引用是()A.a[10] B.a[3.5] C.a(5) D.a[10-5] 32.下面程序的运行结果是()main(){ int a[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printf(“%2d”,a[i]);}}A.-4 0 4 0 4 B.-4 0 4 0 3C.-4 0 4 4 3 D.-4 0 4 4 033.以下程序的输出结果是()main(){ int n[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf(“%d\n”,n[1]);}A.1 B.3 C.2 D.434.下面程序的输出结果是()main(){char s[]=”cat and mouse”;int j=0;while(s[j]!=’\0’) ++j;printf(“%d\n”,j);}A.11 B.0 C.12 D.1335.下面程序的运行结果是()#include <stdio.h>main(){char a[10]=”student”;char b[10]=”boy”;int n;n=strlen(a)+strlen(b);printf(“%d”,n);}A.7 B.10 C.12 D.2036.以下程序的输出结果是()void fun(int a,int b,int c){ a=456;b=567;c=678;}main(){ int x=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}A.30,20,10 B.10,20,30C.456,567,678 D.678,567,45637.以下说法中正确的是()A.C语言程序总是从第一个定义的函数开始执行。
c语言二级考试题库及详解答案

c语言二级考试题库及详解答案C语言二级考试题库及详解答案一、选择题1. 在C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. 3numberD. variable#答案:B2. C语言中,整型变量int所占的字节数是:A. 1字节B. 2字节C. 4字节D. 8字节答案:C(注:实际字节数可能因编译器和平台而异,但通常为4字节)3. 下列哪个不是C语言的控制语句?A. ifB. switchC. forD. goto答案:B(注:switch也是C语言的控制语句,此题有误)二、填空题1. 在C语言中,若要定义一个整型数组,可以使用以下语法:___________。
答案:int array_name[array_size];2. C语言中,用于计算两个数的乘积的运算符是:___________。
答案:*三、简答题1. 简述C语言中数组和指针的区别。
答案:数组是一种数据结构,用于存储相同类型的元素集合。
指针是一个变量,它存储了另一个变量的内存地址。
数组名可以作为指针使用,但数组本身不是指针。
数组的大小在定义时确定,而指针可以指向不同大小的内存块。
2. 解释C语言中的递归函数。
答案:递归函数是一种函数,它在执行过程中调用自己。
递归函数通常用于解决可以分解为相似子问题的问题。
递归函数必须有一个明确的终止条件,以避免无限递归。
四、编程题1. 编写一个C语言程序,实现求1到100的和。
答案:```c#include <stdio.h>int main() {int sum = 0, i;for(i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum);return 0;}```2. 编写一个C语言函数,实现字符串反转。
答案:```cvoid reverseString(char *str) {int len = 0;while(str[len] != '\0') {len++;}for(int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - 1 - i];str[len - 1 - i] = temp;}}```五、论述题1. 论述C语言中函数的作用和重要性。
c语言习题2

一、填空共18题(共计60分)第1题(2.0分)以下程序的输出结果是【1】.main(){ int a=0a+=(a=8);printf("%d\n",a);}答案:=======(答案1)=======16第2题(2.0分)有以下程序:main(){ char c;while((c=getchar())!='?') putchar(--c);}程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为【1】答案:=======(答案1)=======X第3题(2.0分)有以下定义和语句struct date{ int day;int month;int year;union{ int share1;float share2;}share;}a;则sizeof(a)的值是【1】.答案:=======(答案1)=======10第4题(2.0分)有以下语句段int n1=10,n2=20;printf("【1】",n1.n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空.n1=10n2=20答案:=======(答案1)=======n1=%d\nn2=%d第5题(2.0分)执行下面的程序段,写出运行后的输出结果为【1】. main(){int i;for (i=0;i<3;i++)switch(i){case 0:printf("%d",i);case 2:printf("%d",i);default:printf("%d",i);}}答案:=======(答案1)=======000122第6题(2.0分)以下程序运行后的输出结果是【1】.main( ){ char c; int n=100;float f=10; double x;x=f*=n/=(c=50);printf("%d %f\n",n,x);}答案:=======(答案1)=======2 20.0第7题(2.0分)以下程序运行后的输出结果是【1】.#include <string.h>void main(){ char ch[]="abc",x[3][4];int i;for(i=0;i<3;i++)strcpy(x[i],ch);for(i=0;i<3;i++)printf("%s",&x[i][i]); printf("\n");}答案:=======(答案1)=======abcbcc第8题(2.0分)以下循环体的执行次数是【1】.main(){int i,j;For(i=0,j=1;i<=j+1; i+=2,j--)Printf("%d\n",i);}答案:=======(答案1)=======1第9题(2.0分)有以下程序main( ){int t=1, i=10;for(; i>=0; i--) t*=i;printf("%d\n",t);}执行后输出结果是【1】答案:=======(答案1)=======第10题(4.0分)下面程序的功能是:使一个字符串按逆序存放,请填空. #include <string.h>main ( ){ char m,str[10];int i,j;gets(str);for(i=0,j=strlen(str);i【1】 ;i++,j--){ m=str[i];str[i]=【2】 ;str[j-1]=m;}printf("%s\n",str);}答案:=======(答案1)=======<j=======(答案2)=======str[j-1]第11题(4.0分)以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果.请填空.int fun( int n){ int m=0,f=1,i;for(i=1; i<=n; i++){ m+=i*f;f=【1】 ;}return m;}main(){ printf("m=%d\n", 【2】 ); }答案:=======(答案1)=======-f=======(答案2)=======fun(10) 第12题(4.0分)下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请填空.main(){ int a,max= 0;scanf ("%d",&a);while(【1】){ if (【2】) max= a;scanf("%d",&a);}printf("%d" ,max );}答案:=======(答案1)=======a=========或=========a!=0=======(答案2)=======max<a第13题(4.0分)下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数.若找到,打印此数后退出循环;若未找到,打印 " not exist " .请填空.main( ){int i, a;for (i=1; i<=10; i++){scanf("%d",&a);if(【1】) {printf("%d", a); break;}}if(【2】) printf(" not exist \n");}答案:=======(答案1)=======a%7 = = 0=======(答案2)=======i>10第14题(4.0分)下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环.请填空.main(){long int num;scanf("%ld",&num);do{ if(【1】) printf("%ld",num);scanf("%ld",&num);}while(【2】);}答案:=======(答案1)=======num/100%10==3=======(答案2)=======num第15题(4.0分)以下fun函数把ch中的大写字母转换成字母序列中的下一个大写字母,字母Z转换成字母A,其它字符不变,返回转换后的字母或其它字符.请填空. char fun(char ch){if(ch= ='Z') ch=【1】;else if(ch>='A'&&ch<='Y') ch=【2】;return ch;}答案:=======(答案1)======='A'=======(答案2)=======ch+1第16题(6.0分)设有以下程序main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%2d ",a[i][j]); printf("\n");}}运行以上程序,输出3行结果.问:第1行的输出为【1】; 第2行的输出为【2】;第3行的输出为【3】.答案:=======(答案1)=======1 2 3=======(答案2)=======0 5 6=======(答案3)=======0 0 9第17题(6.0分)下面程序的功能是将从键盘输入的一对数,由小到大排序输出.当输入一对相等数时结束循环,请填空.#include <stdio.h>main(){ int a,b,t;scanf("%d%d",&a,&b);while(【1】){ if (【2】){ t=a;a=b;b=t;} printf("%d,%d",a,b);【3】;}}答案:=======(答案1)=======a!=b=========或=========b!=a=======(答案2)=======a>b=========或=========b<a=======(答案3)=======scanf("%d%d",&a,&b)第18题(6.0分)以下程序运行后的输出结果第1行是【1】第2行是【2】第3行是【3】main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d ",a[i][j]);printf("\n");}}答案:=======(答案1)=======1 2 3=======(答案2)=======0 5 6=======(答案3)=======0 0 9二、单项选择共20题(共计40分)第1题(2.0分)以下能对二维数组a进行正确初始化的语句是________. A:int a[2][]={{1,0,1},{5,2,3}};B:int a[][3]={{1,2,3},{4,5,6}};C:int a[2][4]={{1,2,3},{4,5},{6}};D:int a[][3]={{1,0,1},{},{1,1}};答案:B第2题(2.0分)已知有预处理命令#include<stdio.h>和声明 char s[10]= "Thank you"; int i;,要求输出字符串"Thank you",以下选项中不能达到要求的语句是________.A:puts(s);B:printf("%s" , s[10]) ;C:for(i=0; s[i]!= '\0' ; i++) printf("%c" , s[i]);D:for(i=0; s[i]!= '\0' ; i++) putchar(s[i]); 答案:B第3题(2.0分)语句while(!E )中的表达式!E等价于( )A:E= =0B:E! =0C:E! =1D:E= =1答案:A第4题(2.0分)表达式"(a=4*5, b=a*2), b-a, a+=2"的值是( ). A:2B:20C:22D:42答案:C第5题(2.0分)下列程序执行后的输出结果是( ).main( ){int x='f';printf("%c \n",'A'+(x-'a'+1));}A:GB:HC:ID:J答案:A第6题(2.0分)以下程序输出的结果是( ).main(){ int i,sum=0;for(i=1; i<=10; i++) ;sum=sum+i;printf("%d",sum);}A:55B:10C:11D:以上皆非答案:C第7题(2.0分)以下程序段循环执行的次数是( ).int k=0;while(k = 1) k++;whileA:无限次B:有语法错,不能执行C:一次也不执行D:执行1次答案:A第8题(2.0分)有关下述语句输出的判断中,正确的是( ).Char x='\x66';Printf("%d",x);A:赋值非法B:输出值不确定C:输出值为66D:输出值为102答案:D第9题(2.0分)若函数f的定义如下:void f(void){ printf(("That's great!"); )则调用函数f的正确形式是( ).A:f;B:f( );C:f(void);D:f(1);答案:B第10题(2.0分)设有:int c1=1,c2=2,c3; 则执行c3=c1/c2后,c3的值是( ).A:0B:1/2C:0.5D:1答案:A第11题(2.0分)printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列.如果字符串长度大于5,则输出按方式( ).A:从左起输出该字串,右补空格B:按原字符长从左向右全部输出C:右对齐输出该宇串,左补空格D:输出错误信息答案:B第12题(2.0分)以下叙述正确的是( ).A:do-while语句构成的循环不能用其它语句构成的循环来代替.B:do-while语句构成的循环只能用break语句退出.C:用do-while语句构成的循环,在while后的表达式为非零时结束循环.D:用do-while语句构成的循环,在while后的表达式为零时结束循环.答案:D第13题(2.0分)下列叙述中不正确的是( ).A:每个C程序文件中都必须有一个main()函数B:在C程序中main()函数的位置是固定的C:C程序可以由一个或多个函数组成D:在C程序的函数中不能定义另一个函数答案:B第14题(2.0分)以下程序运行时输出的结果是( ).int x=1;main( ){ printf("%d",f(x)); }#define x 2;int f(int y){ return x+y; }A:1B:2C:3D:4答案:C第15题(2.0分)程序执行后的输出结果是( ).main( ){ int i,n=0;for(i=2;i<5;i++){ do{ if(i%3) continue;n++;} while(!i);n++;}printf("n=%d\n",n);}A:n=5B:n=2C:n=3D:n=4答案:D第16题(2.0分)以下选项均以fun函数定义的头部,其中错误的是________. A:int fun(int x, int y[ ])B:int fun(int x, int y[x])C:int fun(int x, int y[3])D:int fun(int x, int *y)答案:B第17题(2.0分)设有:int i=8;j=10; m=i++;n=++j;执行printf("%d, %d, %d, %d",i ,j,m,n);后,屏幕上显示( )A:8,11,9,10B:9,11,8,11C:9,11,8,10 D:8,10,9,11答案:B第18题(2.0分)以下程序的输出结果是( ).main(){ int i=0,a=0;while(i<20){ for(;;){ if((i%10)==0) break;else i--;}i+=11; a+=i;}printh("%d\n",a);}A:21B:32C:33D:11答案:B第19题(2.0分)若程序中已有相应的声明,下列语句中错误的是________. A:printf(i= =4 ? "%6d\n" : "%6d" , i);B:i= =4 ? printf("%6d\n" , i) : printf("%6d" , i); C:for(i=10; ; i--) if(i = =1) break;D:for(i=10; ; i--) if(i --); break;答案:D第20题(2.0分)以下程序的输出结果是( ).main(){int m=6;If(m++>6)printf("%d\n",m);elseprintf(%d\n",--m);}A:7B:6C:5D:4答案:B一、填空共18题(共计60分)第1题(2.0分)以下函数的功能是:求x的y次方,请填空.double fun( double x, int y){ int i;double z;for(i=1, z=x; i<y; i++) 【1】 ;return z;}答案:=======(答案1)=======z*=x第2题(2.0分)设a=2,b=3,x=3.5,y=2.5 求表达式(float)(a+b)/2+(int)x%(int)y的值【1】.答案:=======(答案1)=======3.5第3题(2.0分)执行语句:for(i=10 ; i++<4 ; );后,变量 i的值是:【1】. 答案:=======(答案1)=======11第4题(2.0分)若有声明"int a=5,b=2;",则表达式"b+=(float)(a+b)/2"运算后b的值为【1】.答案:=======(答案1)=======5.5第5题(2.0分)以下程序运行时,输出结果是【1】.#include <stdio.h>void fun(int x){ if(x/2>0) fun(x/2);printf("%d",x%2);}main ( ){ fun(20); putchar('\n'); }答案:=======(答案1)=======10100第6题(2.0分)以下程序运行后的输出结果是【1】#define N 2#define M N+1#define NUM 2*M+1int fib(int n){return ( n<3 ? 2 : fib(n-1)+fib(n-2) );}main( ){printf("%5d%5d\n",NUM,fib(5));}答案:=======(答案1)=======6 10 第7题(2.0分)以下程序运行后的输出结果是【1】.main( ){ int a=3,b=4,c=5,t=99;if(b<a&&a<c) t=a;a=c;c=t;if(a<c&&b<c) t=b;b=a;a=t;printf("%d%d%d ",a,b,c);}答案:=======(答案1)=======4 5 99第8题(2.0分)下列程序的输出结果是【1】.Main(){double d=3.2;Int x,y ;X=1.2;Y=(x+3.8)/5.0;Printf("%f\n",d*y);}答案:=======(答案1)=======第9题(2.0分)设y是int型变量,请写出判断y为奇数的关系表达【1】. 答案:=======(答案1)=======y%2==1第10题(4.0分)表达式-7/2的结果是【1】表达式7%-2的结果是【2】答案:=======(答案1)=======-3=======(答案2)=======1第11题(4.0分)下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请填空.#include "stdio.h"main(){ int m=0,n=0;char c;while((【1】)!='\n'){ if(c>='A' && c<='Z') m++ ;if(c>='a' && c<='z') n++;}printf("%d\n",【2】? n:m);}答案:=======(答案1)=======c=getchar( )=======(答案2)=======m<n=========或=========n>m第12题(4.0分)题号:948下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空.main(){ int a, b, c, i;a=c= 【1】 ;for(i=0;i<10;i+=2){ a+=i;【2】 ;c+=b;}printf("偶数之和=%d\n",a);printf("奇数之和=%d\n",c);}答案:=======(答案1)==============(答案2)=======b=i+1第13题(4.0分)设有以下程序int x1=30,x2=40;main(){ int x3=10,x4=20;sub(x3,x4);sub(x2,x1);printf("%d,%d\n%d,%d\n",x3,x4,x1,x2);}sub(int x,int y){x1=x;x=y;y=x1;}运行后,第一行的结果是【1】,第二行的结果是【2】.答案:=======(答案1)=======10,20=======(答案2)=======40,40第14题(4.0分)#include<stdio.h>main(){int j,k,s,m;for(k=1;k<10;k++){s=1;m=k+2;for(j=k;j<m;j++,k++)s+=j;} printf("s=%d,k=%d",s,k); }程序输出结果【1】,【2】.答案:=======(答案1)=======S=16=======(答案2)=======k=10第15题(4.0分)下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变,请填空.main(){ char a[]="clanguage",t;int i, j, k;k=strlen(a);for(i=0; i<k-2; i+=2)for(j=i+2; j<k; 【1】 )if( 【2】 ){ t=a[i]; a[i]=a[j]; a[j]=t; }puts(a);printf("\n");}答案:=======(答案1)=======j+=2=======(答案2)=======a[i]>a[j]第16题(6.0分)设有以下程序ff(int k){ static int i=1;int j=0;return ++i+k+j++;}main(){ int i,n=0;for(i=0;i<3;i++){ n+= ff(i); printf("%d\n",n); }}运行以上程序,输出3行结果.问:第1行的输出为【1】; 第2行的输出为【2】;第3行的输出为【3】.答案:=======(答案1)=======2=======(答案2)=======6=======(答案3)=======12第17题(6.0分)设有以下程序main( ){ int a[3][3],i,j;for(i=0; i<3; i++)for(j=0; j<3; j++)scanf("%d",&a[i][j]);for(i=0; i<3; i++)for(j=0; j<3; j++)a[i][j]=a[(a[i][j]+1)%2+1][(a[j][i]+2)%2+1];}若输入的数据为:1 3 5 7 9 2 4 6 8 执行程序后,a[0][0]=【1】, a[1][1]=【2】, a[2][2]=【3】.答案:=======(答案1)=======2=======(答案2)=======2=======(答案3)=======6第18题(6.0分)阅读以下程序main(){ char *str[3]={"Fortrain ","Prolog","Pascal "};char **p;int i;p=str;for(i=0;i<3;i++,p++)printf("%c\n ",(*(*p+3)+1));}该程序第1行、第2行及最后一行的输出分别为【1】、【2】和【3】.答案:=======(答案1)=======u=======(答案2)=======m=======(答案3)=======d二、单项选择共20题(共计40分)第1题(2.0分)一个C语言程序是由________.A:一个主程序和若干子程序组成B:函数组成C:若干过程组成D:若干子程序组成答案:B第2题(2.0分)若有声明"float f=123.45678;",则执行语句"printf("%.3f",f);"后,输出结果是________.A:1.23e+02 B:123.457C:123.45678D:1.234e+02答案:B第3题(2.0分)已知函数fun的定义如下:void fun(int x[ ], int y ){ int k;for(k=0; k<y; k++)x[k]+=y;}若main函数中有声明int a[10]={10};及调用fun函数的语句,则正确的fun函数调用形式是________.A:fun(a[ ], a[0]);B:fun(a[0 ], a[0]);C:fun(&a[0], a[0]);D:fun(a[0], &a[0]);答案:C第4题(2.0分)为了判断两个字符串s1和s2是否相等,应当使用( ). A:if (s1= =s2)B:if (s1=s2)C:if ( strcpy (s1,s2) )D:if ( strcmp( s1,s2)= =0 )答案:D第5题(2.0分)关于函数返回值,以下叙述中正确的是( ).A:函数返回值的类型由函数体函数体内return语句包含的表达式的类型决定B:函数返回值的类型由函数头部定义的函数类型决定C:若函数中有多个return语句,则函数的返回值是排列在最后面的return语句中表达式的值D:若函数中没有return语句,则函数没有返回值答案:B第6题(2.0分)以下程序的输出结果是( ).main( ){int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A:1B:0C:非0的数D:-1答案:A第7题(2.0分)以下叙述正确的是( ).A:一个用C语言编写的程序在运行时总是从main函数开始逐条执行B:main函数是系统库函数C:main函数中每行只能出现一条语句D:main函数必须出现在所用其它函数之前答案:A第8题(2.0分)设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是 ( )A:a&&bB:a<=bC:a||b+c&&b-cD:!((a<b)&&!c‖1)答案:D第9题(2.0分)若有声明"int x=2, y=1, z=0;",则下列关系表达式中有语法错误的是________.A:x>y=2B:z>y>xC:x>y==1D:x==(x=0, y=1, z=2)答案:A第10题(2.0分)运行下面程序,输出的结果是( ).main (){ int u=24,v=16,w;while(v){ w=u%v; u=v; v=w; }printf("%d\n",u);}A:6B:7C:8D:9答案:C第11题(2.0分)在以下各组标识符中,均可以用作变量名的一组是( ). A:a01,Int tB:table_1,a*.1C:0_a,W12D:for,point答案:A一、单选题1、有如下程序main(){int a=5,b=-3,c=4;Printf("%d%d\n",(++a,b++),c-2);}运行该程序的输出结果是( ).A) -42 B) -22C) -4 2D) -2 2答案:B2、设 int x=1, y=1; 表达式(!x||y--)的值是( ).A) 0B) 1C) 2D) -1答案:D3、以下程序段fun(int x, int y, int *z){ *z=x*x+y*y; }main(){ int a=20;fun(3,4,&a);printf("%d",a);}其输出结果是( ).A) 0B) 20C) 25D) 无定值答案:C4、如果a=1,b=2,c=3,d=4, 则条件表达式a>b?a:c>d?c:d 的值为( ).A) 1B) 2C) 3D) 4答案:D。
C语言期末考试题目2

指针一、单项选择题1。
已知:int a,*y=&a;则下列函数调用中错误的是。
A) scanf("%d”, &a);B)scanf("%d”,y);C)printf("%d", a);D) printf("%d",y);2。
说明语句”int (*p)();"的含义是。
A) p是一个指向一维数组的指针变量B) p是指针变量,指向一个整型数据C)p是一个指向函数的指针,该函数的返回值是一个整型D) 以上都不对3. 设有说明int (*p)[4];其中的标识符p是。
A)4个指向整型变量的指针变量B) 指向4个整型变量的函数指针C) 一个指向具有4个整型元素的一维数组的指针D)具有4个指向整型变量的指针元素的一维指针数组4。
已知:char s[10], *p=s,则在下列语句中,错误的语句是.A) p=s+5;B)s=p+s;C) s[2]=p[4];D)*p=s[0];5。
已知:char s[100];int i;则引用数组元素的错误的形式是.A) s[i+10]B)*(s+i)C) *(i+s)D) *((s++)+i)6。
已知:char s[6], *ps=s;则正确的赋值语句是。
A)s="12345";B)*s=”12345"; C)ps=”12345";D)*ps=”12345”;7。
已知:char a[3][10]={”BeiJing”,"ShangHai","TianJin"},*pa=a;不能正确显示字符串"ShangHai”的语句是。
A)printf(”%s”,a+1);B) printf("%s",*(a+1));C)printf(”%s",*a+1);D)printf(”%s",&a[1][0]);8。
C语言试卷2及答案

扬州大学试题纸系课程C语言程序设计(A)卷2002—2003学年第2学期班级_________学号________姓名__________得分___________一、选择题(每题分,共30分):1、已知:char a; int b; float c; double d;则执行语句:c=a+b+c+d; 后,变量c的类型为。
A. charB. intC. floatD. double2、已有定义int x; float y; 且执行scanf(“%2d%f”,&x,&y);语句时,从第一列开始输入数据12345 67<回车>,则y的值是。
A. 无定值B. 345.00000C.D.3、设有以下程序段int x=0; s=0;while (!x!=0) s+=++x;printf(“%d”,s);则。
A. 运行程序段后输出0B. 运行程序段后输出1C. 程序段中的控制表达式是非法的D. 程序段执行无限次4、若i为整型变量,则以下循环执行次数是。
for(i=2; i==0;) printf(“%d”, i--);A. 无限次B. 2次C. 1次次5、假设char ch=’a’, *p=&c h; ,以下语句中,有语法错误的是.A. (*p)++;B. ch+=—‘a’+’A’;C. toupper(ch)=ch;D. ch++;6、若说明:char *language[ ]={“VFP”,”C”,”VB”,”VC”,”JAVA”};则language[2]的值是。
A. 一个字符B. 一个地址C. 一个字符串D. 一个不定值7、C语言程序中,当调用函数时。
A. 实参和虚参可以共用存储单元B. 实参和虚参各占一个独立的存储单元C. 可以由用户指定是否共用存储单元D. 由计算机系统自动确定是否共用存储单元8、在程序中要使用语句:printf(“%s\n”, STRING);输出提示信息:“OK! ”(包括双引号),则应使用宏定义语句。
全国c语言二级考试真题及答案

全国c语言二级考试真题及答案一、选择题(每题2分,共40分)1. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. variable-2D. variable$2答案:B2. C语言中,以下哪个关键字用于声明一个函数?A. intB. floatC. voidD. function答案:C3. 在C语言中,哪个运算符用于比较两个值是否不相等?A. ==B. !=C. =D. <=答案:B4. C语言中,哪个函数用于计算并返回一个数的平方根?A. sqrt()B. square()C. root()D. pow()答案:A5. 下列哪个选项是C语言中的正确定义一个整型数组?A. int array[5] = {1, 2, 3, 4, 5};B. int array[] = {1, 2, 3, 4, 5};C. int array[5] = {1, 2, 3};D. int array = {1, 2, 3, 4, 5};答案:B6. C语言中,以下哪个选项表示逻辑与运算?A. &&B. ||C. !D. %答案:A7. 在C语言中,哪个关键字用于声明一个结构体?A. structB. unionC. enumD. typedef答案:A8. 在C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A9. C语言中,哪个关键字用于声明一个指针?A. pointerB. ptrC. *D. ref答案:C10. 在C语言中,哪个函数用于将浮点数转换为字符串?A. sprintf()B. printf()C. scanf()D. atoi()答案:A11. C语言中,以下哪个选项是正确的文件打开模式?A. "r"B. "w"C. "a"D. "b"答案:A12. 在C语言中,哪个函数用于动态分配内存?A. malloc()B. calloc()C. realloc()D. free()答案:A13. C语言中,哪个关键字用于声明一个全局变量?A. globalB. externC. staticD. auto答案:B14. 在C语言中,哪个函数用于获取当前时间?A. time()B. date()C. localtime()D. mktime()答案:A15. C语言中,以下哪个选项是正确的位运算符?A. &B. |C. ^D. ~答案:D16. 在C语言中,哪个函数用于格式化输出?A. printf()B. scanf()C. fprintf()D. sprintf()答案:A17. C语言中,哪个关键字用于声明一个静态变量?A. staticB. externC. autoD. register答案:A18. 在C语言中,哪个函数用于计算两个数的最大公约数?A. max()B. gcd()C. pow()D. sqrt()答案:B19. C语言中,以下哪个选项是正确的递归函数定义?A. void factorial(int n) { if (n == 0) return 1; return n * factorial(n-1); }B. int factorial(int n) { if (n == 0) return 1; return n * factorial(n-1); }C. void factorial(int n) { if (n == 0) return 0; return n * factorial(n+1); }D. int factorial(int n) { if (n == 0) return 0; return n * factorial(n+1); }答案:B20. 在C语言中,哪个函数用于释放动态分配的内存?A. malloc()B. calloc()C. realloc()D. free()答案:D二、编程题(每题20分,共60分)1. 编写一个C语言函数,计算并返回两个整数的和。
C语言程序设计模拟试卷 (2)

模拟试卷一一、选择题(每题1分,共15分) 在每小题列出的四个选项中只有一个是符合题目要求的,请在正确答案前点选,错选或未选均不得分。
1. 以下选项中不合法的用户标识是:正确答案A. _123B. printfC. A$D. Dim2. 在C 语言中,char 型数据在内存中的存储形式是:正确答案A. 补码B. 反码C. 原码D. ASCII 码正确答案:D3. 设x,y,z 为int 型变量,且x=3,y=4,z=5 ,则下面表达式中值为0 的是:正确答案A. 'x'&&'y'B. !((x<y)&&!z||1)C. x||y+z&&y-zD. x<=y正确答案:B4. 若有定义:int a=2,b=4,c; 执行语句c=a/b+2.6 ;后,c 的值为:正确答案A. 2.6B. 3.1C. 3D. 2正确答案:D5. 设a 为整型变量,不能确定表达数学关系10<a<15 的为C 语言表达式是:正确答案A. 10<a<15B. a==11|| a==12|| a==13|| a==14C. a>10&&a<15D. !(a<=10)&&!(a>=15)正确答案:C6. 若i 、j 已定义为int 型,则以下程序段中语句printf( “ %d ” ,i*j); 的执行次数是:for (i=3;i>0;i-- )for (j=0;j<4;j++ )printf( “ %d ” ,i*j);正确答案A. 12B. 15C. 16D. 20正确答案:A7. 若有输入语句“ scanf( "%d%d%d",&x,&y,&z); ”,则不能使x值为5,y 值为6,z值为7的输入是:正确答案A. 5 ,6 ,7< 回车>B. 5 6 7< 回车>C. 5 6 < 回车> 7< 回车>D. 5< 回车> ,6< 回车> ,7< 回车>正确答案:A8.执行以下程序段后,x ,y 和z 的值分别是:int x=10,y=20,z=30;if(x>y) z=x; x=y; y=z;正确答案A. 10,20,30B. 20,30,30C. 20,30,10D. 20,30,20正确答案:B9. 以下程序段x = -1;do{ x=x*x;} while(!x); 正确的说法是:正确答案A. 死循环B. 循环一次C. 循环两次D. 有语法错正确答案:B10. 以下正确的函数声明形式是:正确答案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) ;正确答案:C11.若有定义char ch[8] ,则以下表达式中不能代表数组元素ch[1] 的地址是:正确答案A. &ch[0]+1B. &ch[1]C. &ch[0]++D. ch+1正确答案:C12. 若有初始化语句“ int a[5]={1,2,3,4,5}; ”,值为4 的表达式是:正确答案A. a[4]B. a[a[2]+1]C. a[a[2]]D. a[3]+1正确答案:C13. 若已有以下函数定义:float fun(float a, int b){int c;c=(int)a%b;return c;}则主调函数中语句“ printf("%f",fun(fun(fun(34,7),4),3)); ”的输出结果是:正确答案A. 2.000000B. 因参数类型与形参类型不一致,函数调用产生错误C. 2D. 因变量c 的类型与fun 函数的返回值类型不符,故输出值为随机值正确答案:A14. 已知:int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+2 ;则值为3 的表达式是:正确答案A. (*p)++B. *p++C. *++pD. ++*p正确答案:B15. 以下可作为函数fopen 中第一个参数的正确格式是:正确答案A. c:\user\file.txtB. "c:\user\file.txt"C. "c:\\user\\file.txt"D. c:user\file.txt正确答案:C二、填空题(共10题)1. 字符串存储时,末尾被系统自动加上字符。
C语言习题集2

C语言习题集一、单项选择题1、C语言提供的合法关键字是_______。
A、AUTOB、includeC、unsignedD、dafault2、合法的C语言标识符是__________。
A、2aB、sumC、defaultD、a+b3、下面四个选项中,不是C语言整型常量的是。
A、01B、0x11C、081D、-327684、下面四个选项中正确的实型常量是。
A、0x12B、-12345.e-3C、Ie0.5D、e-55、若a为整型变量,则下面语句。
a=-2L;printf(“%d\n”,a);A、赋值不合法B、输出值为-2C、输出为不确定值D、输出值为-26、在C语言中,要求参加运算的数必须是整数的运算符是。
A、/B、!C、%D、= =7、字符串“\\012\012”在内存中占用的字节数是个。
A、4B、5C、6D、78、下列说法中,错误的是。
A、变量的定义可以放在所有函数之外B、变量的定义可以不放在本编译单位中,而放在其他编译单位中C、变量的定义可以放在某个函数的函数头中D、变量的定义可以放在某个复合语句的开头9、下列说法中,正确的是。
A、自动型变量是分配在内存的数据区的B、寄存器型变量是分配在内存的数据区中的C、表态型变量是分配在内存的数据区中的D、外部参照型变量是分配在内存的数据区中的10、在C语言中,一个int型数据在内存中占用2个字节,则int型数据的取值范围是。
A、-128~127B、-32768~32767C、0~65536D、0~214748364711、下面不正确的字符串常量的。
A、’abc’B、”12’12”C、”0”D、” ”12、char型常量在内存中存放的是。
A、ASCII代码值B、BCD代码值C、内码值D、十进制代码值13、以下程序段。
int x=2,y=3;printf( x>y ? ”****=%d”: “###y=%d”,x,y);A、输出控制格式错误B、输出为:****x=2C、输出为:###y=2D、输出为:###y=314、以下程序的输出为。
c语言考试题目2

【考试题目】程序填空题请补充main函数,该函数的功能是:从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。
结果仍然保存在原串中。
例如,输入“abcdef”,指定字符为‘e’,则输出“abcd”。
注意:部分源程序已给出,并保存在考生文件夹下的blank1.c 文件中。
请勿改动主函数main和其他函数中的任何内容,仅在main 函数的横线上填入所编写的若干表达式或语句,并将横线去掉,同时确保答案与前后字符之间至少保留一个空格。
#include <stdio.h>#define N 80main(){int i=0;char str[N];char ch;printf("\n Input a string:\n"); gets(str);printf("\n Input a charator;\n"); scanf("%c", &ch);while(str[i]!='\0'){if(str[i]==ch)____________ ;}str[i]= ______ ;printf("\n*** display string ***\n");puts(str);}程序修改题已知一个数列从0项开始的前3项:0,0,1,以后的各项都是其相邻的前3项之和。
下列给定的程序中,函数fun()的功能是:计算并输出该数列前n项的平方根之和sum。
n的值通过形参传入。
例如,当n=10时,程序的输出结果应为23.197745。
请改正程序中的错误,使它能得出正确的结果。
注意:源程序保存在考生文件夹下的modi1.c 文件中。
不要改动main函数,不得增行或删行,也不得更改程序的结构,注释语句(/**found**/)下方的第一条语句有错误。
#include <conio.h>#include <stdio.h>#include <math.h>/**********************found***********************/fun(int n){double sum, s0, s1, s2, s; int k;sum=1.0;if (n<=2) sum=0.0;s0=0.0; s1=0.0; s2=1.0;for (k=4;k<=n;k++){ s=s0+s1+s2;sum+=sqrt(s);s0=s1;s1=s2;s2=s;}/**********************found***********************/return sum}main(){int n;printf("Input N=");scanf("%d",&n);printf("%f\n",fun(n));}程序设计题编写函数fun(),它的功能是:根据以下公式求p的值,结果由函数值带回。
国家c语言二级机试题及答案

国家c语言二级机试题及答案一、选择题(每题2分,共40分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是正确的C语言函数声明?A. int function(int a, int b);B. int function(int, int);C. int function(int a; int b);D. int function(int a, int b)答案:A3. 在C语言中,哪个运算符用于取地址?A. *B. &C. %D. #答案:B4. 下列哪个选项是C语言中合法的数组声明?A. int a[10];B. int b[2,3];C. int c[2][3];D. int d[];答案:C5. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[] = "Hello";B. char str[6] = "Hello";C. char str[5] = "Hello";D. char str[] = "Hello", "World";答案:A6. 在C语言中,以下哪个关键字用于定义一个枚举类型?A. enumB. structC. unionD. typedef答案:A7. C语言中,以下哪个选项是正确的文件包含指令?A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h" <stdio.h>D. #include <stdio.h> "stdio.h"答案:B8. 在C语言中,以下哪个选项是正确的循环语句?A. do-whileB. do...whileC. do { ... } while (condition);D. do { ... } while;答案:C9. 下列哪个选项是C语言中合法的函数原型?A. int function();B. int function(int);C. int function(int a, int b);D. All of the above答案:D10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int *ptr = 0;C. int *ptr = NULL;D. All of the above答案:D二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个指针变量。
c语言试卷和答案2

for (k=1; k<5; k++) {
if (k%2) printf(“#”);
else continue;
printf(“*”);
}
}
A)#*#* B)*#*#
程序3
#include <stdio.h>
void main()
{int i=0, n;
char s[10]= “298h01”;
n=0;
for(i=0; s[i]!= ‘\0’; i++)
if(s[i]<’9’ && s[i]>=’0’)
n=n*10+(s[i]-‘0’);
程序1【程序说明】输出1~1000之间所有满足各位数字的立方和等于它本身的数。
【程序】
#include <stdio.h>
void main()
{ int digit,k,m,s;
for(k=1;k<=1000;k++){
(24) ;
return x-1;
}
void main()
{ int y;
y=p(&x);
printf(“(%d,%d)”,x,y);
}
A)(-1,0) B)(1,-1) C)(1,0) D)出错
三、 程序填空题(每空2分,共16分)
A)p=’\0’ B)p=0 C)p=NULL D)p=EOF
(23)下列程序的输出结果是 。
#include <stdio.h>
int x;
int p( int *y)
《C语言程序设计》试题2及答案

《C语言程序设计》试题二 (1)一、填空题 (1)二、选择题 (2)三、阅读程序题 (5)四、程序填空题 (5)五、编程题 (7)《C语言程序设计》试题二答案 (8)《C语言程序设计》试题二一、填空题1、C语言中普通整型变量的类型说明符为int ,在内存中占4字节,有符号普通整型的数据范围是-32767~32768。
2、C语言中基本的数据类型有:整形、实型、字符型。
3、设整型变量n的值为2,执行语句“n+=n-=n*n”后,n的值是-4。
4用体的各成员放到同一存储空间5、有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是a=1,b=3,c=2 。
6、有语句:char A[ ]={”I am a student”};该字符串的长度是14 ,A[3]= m。
7、符号”a”和’a’的区别‘a’是字符常量在内存中占一个字节”a”是字符串常量在内存中占两个字节。
8、下列程序的输出结果是7,1。
int ast(int x,int y,int * cp,int * dp){ *cp=x+y; *dp=x-y; }main(){ int a=4,b=3,c,d;ast(a,b,&c,&d);printf("%d,%d/n",c,d); }二、选择题1、以下选项中属于C语言的数据类型是(B)。
A. 复合型B. 双精度型C. 逻辑型D. 集合型2、以下说法中正确的是(C)。
A. C语言程序总是从第一个的函数开始执行B. 在C语言程序中,要调用的函数必须在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分3、选出下列标识符中不是合法的标识符的是(D)。
A. hot_doB. cat1C. _priD. 2ab4、下列描述中不正确的是(c)。
C语言习题选2

第一章、 数组一.选择题 1.若有语句int a[8];则下述对 a 的描述正确的是( A )。
(A )定义了一个名称为a 的一维整型数组,共有8个元素 (B )定义了一个数组a ,数组a 共有9个元素 (C )说明数组a 的第8个元素为整型变量 (D )以上可选答案都不对 2.在C 语言中,引用数组元素时,其数组下标的数据类型允许是( C )。
(A )整型常量 (B )整型表达式 (C )整型常量或整型表达式 (D )任何类型的表达式 3.下述对C 语言字符数组的描述正确的是( A )。
(A )任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占用存储空间 (B )一维数组的元素在引用时其下标大小没有限制 (C )任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间 (D )一维数组的第一个元素是其下标为1的元素 4.下述对C 语言字符数组的描述中正确的是(B )。
(A )任何一个一维数组的元素在引用时,其下标可以是整型、实型或字符型常量 (B )一维数组的元素实质上就是一个变量,代表内存中的一个存储单元 (C )如果要引用数组中的每一个元素,则直接使用该数组名称即可? (D )以上都不对 5.以下对一维整型数组a 的正确说明是(D )。
(A )int a(10); (B)int n=10,a[n]; (C) int n; scanf(“%d ”,&n);int a[n]; (D) #define SIZE 10 int a[SIZE]; 6.以下能对一维数组a 进行正确初始化的语句是( C )B? (A )int a[10]=(0,0,0,0,0);(B )int a[10]={};(C )int a[]={0};(D )int a[10]=(10*1); 7.若有说明:int a[3][4];则对a 数组元素的正确引用是( C ) (A )a[2][4] (B )a[1,3] (C )a[1+1][0] (D )a(2)(1) 8.以下能对二维数组a 进行正确初始化的语句是(B ) (A )int a[2][]={{1,0,1},{5,2,3}};(B )int a[][3]={{1,2,3},{4,5,6}}; (C )int a[2][4]={{1,2,3},{4,5},{6}};(D )int a[][3]={{1,0,1}{},{1,1}}; 9.若有说明:int a[3][4]={0};则下面正确的叙述是( D ) (A )只有元素a[0][0]可得到初值0(B )此说明语句不正确 (C )数组a 中各元素都可得到初值,但其值不一定为0 (D )数组a 中每个元素均可得到初值0 10.以下各组选项中,均能正确定义二维实型数组a 的选项是( C ) (A )float a[3][4]; float a[][4]; float a[3][]={{1},{0}}; (B )float a(3,4); float a[3][4]; float a[][]={{0};{0}}; (C )float a[3][4]; static float a[][4]={{0},{0}}; (D )float a[3][4]; float a[3][]; 11.若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为( D ) (假设a[0][0]位于数组的第一个位置上。
2022c语言二级考试题及答案

2022c语言二级考试题及答案一、选择题(每题2分,共40分)1. 下列哪个选项是C语言中的关键字?A. defineB. includeC. mainD. void答案:D2. C语言中,用于定义一个整型变量的关键字是?A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个函数用于输入一个字符?A. getc()B. getchar()C. puts()D. scanf()答案:B4. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. variable-variableD. variable$variable答案:B5. C语言中,以下哪个选项是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello World'D. 'Hello World'答案:A6. 在C语言中,以下哪个选项表示逻辑与操作?A. &&B. ||C. !D. ^答案:A7. C语言中,以下哪个选项表示逻辑或操作?A. &&B. ||C. !D. ^答案:B8. C语言中,以下哪个选项表示逻辑非操作?A. &&B. ||C. !D. ^答案:C9. 在C语言中,以下哪个选项是正确的数组声明?A. int array[5] = {1, 2, 3, 4, 5};B. int array[] = {1, 2, 3, 4, 5};C. int array[5] = {1, 2, 3};D. int array = {1, 2, 3, 4, 5};答案:B10. 在C语言中,以下哪个选项表示函数原型声明?A. int add(int a, int b);B. int add();C. int add(int, int);D. int add(int a, b);答案:A二、填空题(每题2分,共20分)1. 在C语言中,使用____关键字可以定义一个宏。
C语言测试题2

A、char name[4]="ACCP";B、char name[4]={'A','C','C','P'};
C、char name[]="ACCP";D、char name={'A','C','C','P'};
17、有如下一组数据:25,15,5,10,51为了把该组织数据按升序排序,如果采用冒泡排序法,需要比较()次(选择一项)
2、定义函数fun,接收用户输入的10个数字,筛选出其中的奇数和偶数,分别用数组存放,将奇数数组按从小到大排序后输出,将偶数数组按从大到小排序后输出
如:输入45 89 52 13 66 102 99 11 73 100
分别放入数组a[]:45 89 13 99 11 73
b[]:52 66 102 100
{
switch(n%3)
{
case 2:
putchar('2');
case 1:
putchar('i');
break;
case 0:
putchar('H');
}
n++;
}
}
A)Hi2Hi2HiB)Hi2C)Hi2iHi2iD)Hi2iHi2iHi
13、已知下列C语言代码的输出结果是2008年是闰年,已知闰年的判定规则是:能被4整除但不能被100整除的年份,或能被400整除的年份。请问在空白处可以填写的代码是()(选择一项)
18、A、10 B、15 C、9 D、11
C语言程序设计试题2

C语言程序设计试题2一、单项选择题(每题2分,共40分)1.以下叙述中正确的是。
A。
C语言系统以函数为单位编译源程序B.main函数必须放在程序开始C。
用户定义的函数可以被一个或多个函数调用任意多次D.在一个函数体内可以定义另外一个函数2.以下选项中,不能用作c语言标识符的是A.printB.FOR C。
&a D。
_003.对于以下程序片段,描述正确的是.int x = -1;do{x = x * x;}while(!x);A。
是死循环B。
循环执行两次C.循环执行一次D。
有语法错误4.已知有声明”int a=3,b=4,c=5;”,以下表达式中值为0的是。
A。
a&&b B.a<=b C.a||b&&c D。
!(!c||1)5.已知有声明"long x,y;"且x中整数的十进制表示有n位数字(4<n<10),若要求去掉整数x 十进制表示中的最高位,用剩下的数字组成一个新的整数并保存到y中,则以下表达式中能正确实现这一功能的是。
A.y=x/(10*(n—1))B.y=x%(10*(n-1))C.y=x%(long)pow(10,n—1)D.y=x%(10^(n-1))6。
已知有声明”int x,y;",若要求编写一段程序实现"当x大于等于0时y取值1,否则Y 取值-1”,则以下程序段中错误的是。
A.if(x〉=0)y=1;else y=-1;B。
y=x>=0?1:—1;C.switch()D.switch(x-abs(x)){case x〉=0:y=1;break; {case 0:y=1;break;default:y=—1; default:y=—1;}}7。
已知有声明"int m[]={5,4,3,2,1},i=0;”,下列对m数组元素的引用中,错误是.A。
m[++i] B.m[5]C。
m[2*2] D。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题1.语句int a=10,*point=&a;其值不为地址。
A. pointB. &aC. &pointD. *point2.若p为指针变量,y为变量,则y = *p++;的含义是A.y=*p;p++ B.y=(*p)++ C.y=p;p++ D.p++;y=*p 3.语句char str[]=”visual C++”;char *p=str;则p的值为A. ”visual C++”B.str的首地址C. \nD.”v”4.设有说明语句char *s[]={“student”,”Teacher”,”Father”,”Month”}, *ps=s[2];执行语句:printf(“%c,%s,%c”,*s[1],ps,*ps);则输出为A.T,Father,FB.Teaher,F,FatherC. Teacher,Father,FatherD.语法错,无输出5.下列说明或赋值语句,不正确的是A. char *p;p=”Visual C++”;B. char p1[12]={…v‟,‟i‟,‟s‟,‟u‟};C. char p2[12];p2=”Visual C++”D. char p3[]=”Visual”;6.现有int b[3][4],*p;p=(int *)b;若要指针p指向b[2][3],以下正确的是A.p+=3*4+3B.p+=2*4+3C. p+=(3*4+3)*sizeof(int)D.p+=(2*4+3)*sizeof(int)7.语句int i,*p1,**p2;以下语句语法不正确的是A.p1=&i;B. p2=&i;C.p2=&p1;D.i=‟\0x23‟;8.如下图结构体说明和变量的定义,p指向a,q指向变量b.下面不能..把结点b连接到结点a之后的语句是C. p->next=&b;D.(*p).next=q;9.下面正确的语句是A. int a[3][4],(*p)[4]; p=a;B. int a[3][4],*p[4]; p=a;C. int a[3][4],*p; p=a;D. int a[3][4],**p;*p=a;10.以“追加”方式打开文本文件a:\aa.dat,下列语句中哪一个是正确的是A.fp=fopen("a:\\aa.dat","ab");B. fp=fopen("a:\\aa.dat","a");C. fp=fopen("a:\\aa.dat","r+");D. fp=fopen("a:\\aa.dat","w");11.设有函数定义:int f1(void){return 100,150;}调用函数f1()时,A.函数返回值100B. 函数返回值150C. 函数返回二个值100和150D. 语句return 100,150;语法错.12.数组作为函数的形参时,把数组名作为实参,传递给函数的是A.该数组的首地址B. 该数组的元素个数C. 该数组中的各元素值D. 该数组的大小13.执行以下语句序列:则enum {Sun,Mon,Tue,Wed,Thu,Fri,Sat}c1,c2; //Ac1=Mon; //Bprintf(“%d”,c1);A.输出1B.输出2C.输出0D. B行语法错14.执行以下语句序列:则char *p1=”Speaking”; //Achar *p2=”English”; //Bchar *p3=”a piece of cake”; //Cchar *str[]={p1,p2,p3}; //Dprintf(“%c”,*(str[0]+1));A.输出EnglishB.输出SpeakingC.输出pD. D行语法错二、填空题1.(2*2分=4分)下面程序的运行结果为、void main( ){static int a[3][2]={{12},{14,16},{1,2}};int *p=a[1];printf(“%d\n”,*(p+1));printf(“%d\n”,*(p+3));}2.(2*2分=4分)若有以下程序段,则*(*(b+2)+1)的值为,*(*(p+1)+1)的值为static int b[3][2]={1,3,5,7,9,11};int (*p)[2];p=b;3.(1*4分=4分)下面程序的运行结果为#include<stdio.h>void sub(int *x,int i,int n){if(n<=i)sub(x,i,3*n);*x+=n++;}void main( ){int x=0;sub(&x,12,2);printf(“%d”,x);}4.(2*2分=4分)以下程序运行结果为_______ _____、void main(){char *p,*q;char str[]="Hello,World\n";q = p = str;p++;printf(“%s\n”,q);printf(“%s\n”,p);}5. (1*4分=4分)以下程序运行结果是_______ ___________ void main(){short ar[5]={1,2,3,4,5 };short * par=&ar[1];int i;for(i=0; i<4; i++){printf(“%d %d %d”,ar[i],par[i],*(ar+i));}}6.(2*2分=4分) 以下程序运行结果是_______void swap2(int *x,int *y){int t;t=*x;*x=*y;*y=t;}void main( ){ int a=100,b=200;swap2(&a,&b);printf(“%d\t%d”,a,b);}7.(3*2分=6分)void fun(int n, int *s){ int f1,f2;if(n= =1||n= =2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=2*f1+f2+1;printf(“%d\t%d”,f1,f2);}}void main( ){ int x;fun(4,&x);printf(”x=%d\n”,x);}程序输出的第一行是第二行是最后一行是8. (3*2分=6分)void f(int *q1,int *q2,int *q3){*q3=*q1+*q2;}void main( ){ int i,j,a[3][3]={1,1},*p1=a[0],*p2=a[0]+1,*p3=a[0]+2;for(i=2;i<9;i++)f(p1++,p2++,p3++);for(i=0;i<3;i++){ for(j=0;j<3;j++)printf(“%d”,a[i][i]);printf(‟\n‟);}}程序输出的第一行是第二行是最后一行是9.(2*3分=6分)int f(int x,int y){return x*y;}void main( ){ int i,j,(*fun)(int,int);fun=f;for(i=1;i<4;i++){ switch(i){case 1:case 2: j=(*fun)(i,i+1);break;case 3: j=(*fun)(i-1,i+2);break;}printf(”j=%d”,j);}}程序输出的第一行是第二行是最后一行是三、完善程序1.(2*3分=6分)以下min 函数的功能是:在非空单向链表中查找结点数据域为最小的值,并作为函数返回值.链表如下.struct NODE{int data;NODE *next;};int min(NODE *first){NODE *p;int m;p=first;m=p->data;for(p=p->next;p!=NULL;p=)if(m> )m=p->data;return m;}2.(3*2分=6分)以下程序求二维数组的平均值float average(float (*p)[4],int n){float sum=0;for(int i=0; ;i++){for(j=0;j<4;j++)sum+= ;p++;}return sum/(n*4);}void main( ){ float score[3][4]={{56,65,70,76},{89,97,52,81},{90,99,91,86}};printf(”平均值=%f ”,average( ));}3. (2*3.5分=7分)以下程序实现将以L 为头指针的链表逆置(设结点个数n>2),即将链表头当链表尾,链表尾当链表头。
如下图:head L L提示:本算法的思想是,逐个地把L的当前结点q插入新的链表头部,p为新表表头.void reverse(NODE * L){p=L->next;q=p->next;;while(q!=NULL){p->next=L;L=p;p=q;;}p->next=L;L=p;}4. (3*2分=6分)以下程序实现链表L中删除第i个元素(设1≤i≤元素个数) void Delete(NODE *L,int i){NODE *p,*q;if(i= =1) {q=L;L=L->next; } //删除第一个元素else{p=L;while(--i>1) ;q=p->next;; //删除第i个元素};}5. (4*2.5分=10分)设链表上结点的数据结构定义如下:struct PNODE{int x;PNODE *next;};设已建立了一条链表,h为链表首指针。
函数DelAdd的功能为:若链表上能找到结点的x值为value,则从链表上删除该结点(假设链表上各个结点值是不同的);否则构造一个新结点,其x 的值为value,并将新结点插入链尾。
该函数要返回链表的首指针。
PNODE *DelAdd(PNODE *h, int value){PNODE *p1, *p2;int flag=0; //值为1时,表示已删除值为value的结点p1=h;while(p1 && flag= =0){ if(p1->x= =value){ flag=1;if(p1= =h){h= ; free( p1); }else{p2->next= ; free( p1);}}else {p2=p1; p1= ;}}if(flag= =0){p1=(PNODE *)malloc(sizeof (PNODE));p1->x=value;p1->next=0;if(h= =0) h=p1;else ;}return h;}。