一、选择题
1.下列变量说明语句中,正确的是()。
A、char a;b;c;
B、char:a b c;
C、int x;z;
D、int x,z;
2.设以下变量均为int类型,则值不等于7的表达式是()。
A、(x=6,x+1,y=6,x+y)
B、(x=y=6,x+y,y+1)
C、(y=6,y+1,x=y,x+1)
D、(x=y=6,x+y,x+1)
3.x,y,z,t均为整型变量,则执行以下语句后,t的值为:()
x=y=z=1;
t=++x||++y&&++z;
A、0
B、1
C、2
D、不定值
4.如果int a=2,b=3,c=0,下列描述正确的是()。
A、a&&b>c的结果为假
B、!a!=(b!=c)表达式的值为1
C、a||(b=c)执行后b的值为0
D、a>b!=c和a>(b!=c)的执行顺序是一样的
5.从键盘输入的整数中找出最小值min,输入0时结束.请在A处填写正确语句()。#include "stdio.h"
main()
{ int min=0,a;
do{
scanf("%d",&a);
if(min>a) min=a;
}while(___A___);
printf("%d",min);
}
A、a=0
B、a==0
C、a>0&&a<0
D、a!=0
6.设有如下程序段:
int k=10;
while(k==0)
k--;
则下述说明中正确的是().
A、循环体一次也不执行
B、循环体执行一次
C、死循环
D、循环体执行10次
7.static char str[10]="China";数组元素个数为()。
A、6
B、9
C、5
D、10
8.函数调用:strcat(strcpy(str1,str2),str3)的功能是()。
A、将串str1复制到串str2中后再连接到串str3之后
B、将串str2连接到串str1之后再将串str1复制到串str3中
C、将串str1连接到串str2之后再复制到串str3之后
D、将串str2复制到串str1中后再将串str3连接到串str1之后
9.C语言程序中必须有的函数是()。
A、#include "stdio.h"
B、main
C、printf
D、scanf
10.程序运行结束后,屏幕上输出值为().
static int x=10;
main( )
{ int x=3;
f( );
x- -;
printf("%d",x);
}
f( )
{ x++;
}
A、10
B、2
C、11
D、3
11.file1.c中有命令,#include
A、a在file1.c中应用extern说明.
B、a在file1.c中有效,不必用extern说明.
C、a在file1.c中不生效
D、a在file1.c和file2.c中均不生效.
12.若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。
A、*p=*q;
B、n=*q;
C、p=n;
D、p=q;
13.以下程序的输出结果是().
main()
{char str[ ]="ABCD",*p=str;printf("%d\n",*(p+3));}
A、68
B、不确定的值
C、字符D的地址
D、0
14.使用共用体变量,不可以().
A、同时访问所有成员
B、进行动态管理
C、节省存储空间
D、简化程序设计
15.以下字符中不是转义字符的是()。
A、'\c'
B、'\b'
C、'\\'
D、'\a'
16.设a=12,且a定义为整型变量。执行语句a+=a-=a*=a;后a的值为()。
A、0
B、144
C、132
D、12
17.已定义float x=1.25,y=3.37;
根据下面的输出结果,正确的输出语句是().
y+x=4.62,y-x=2.12
A、printf("y+x=%6.2f,y-x=%6.2f\n",y+x,y-x);
B、printf("y+x=%f,y-x=%f\n",y+x,y-x);
C、printf("y+x=%.2f,y-x=%.2f\n",y+x,y-x);
D、printf("y+x=%5.2f,y=%5.2f\n",y+x,y-x);
18.执行下面程序段后,b的值为().
int s=35;
char t='A';
int b;
b=((s&&4)&&(t<'a'));
A、1
B、3
C、2
D、0
19.若k是整型,则以下程序段的执行结果是:()
k=-3;
if(k<=0) printf("####")
else printf("&&&&");
A、####
B、有语法错误,无结果
C、&&&&
D、####&&&&
20.设j和k都是int类型,则下面的for循环语句()。for(j=0,k=0;j<=9&&k!=876;j++) scanf("%d",&k);
A、最多执行9次
B、是无限循环
C、循环体一次也不执行
D、最多执行10次
21.以下正确的描述是().
A、只能在循环体内和switch语句内使用break语句
B、continue语句的作用是终止整个循环的执行
C、从多层嵌套的外层循环中退出时,只能使用goto语句
D、在循环体内使用break和continue语句的作用相同
22.以下能对一维数组a进行正确初始化的语句是()。
A、int a[10]={};
B、int a[]={0};
C、int a[10]={10*1};
D、int a[10]=(0,0,0,0,0)
23.以下正确的说法是().
A、函数的类型决定返回值的类型
B、定义函数时,形参的类型说明可以放在函数体内
C、return后面不能为表达式
D、如果形参与实参的类型不一致,以实参类型为准
24.以下程序的输出结果为()。
int func(int x,int y)
{
return(x+y); }
main()
{
int a=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
}
A、9
B、15
C、13
D、函数调用出错
25.以下正确的说法是()。
A、用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
B、用户若需调用标准库函数,调用前必须重新定义
C、系统根本不允许用户重新定义标准库函数
D、用户可以重新定义标准库函数,若如此,该函数将失去原有含义
26.在#include命令中,文件名可用双引号或尖括号括起来,对于二者的下列说法中正确的是().
A、用尖括号时,直接按系统标准方式检索文件目录.
B、用双引号时,直接按系统标准方式检索文件目录.
C、用双括号和尖括号时,都不检查源文件所在的文件目录.
D、以上说法都不对.
27.当说明一个结构体变量时系统分配给它的内存是()。
A、成员中占内存量最大者所需的容量
B、结构中第一个成员所需内存量
C、结构中最后一个成员所需内存量
D、各成员所需内存量的总和
28.以下程序段给数组所有的元素输入数据,请选择正确答案填入()。
#include
main()
{ int a[10],i=0;
while(i<10) scanf("%d",(_______));
.
.
.
}
A、&a[i+1]
B、a+i
C、a+(i++)
D、&a[++i]
29.在定义构造数据类型时,不能()。
A、末尾不写分号
B、说明存储类型
C、初始化
D、说明变量
30.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。
A、x+n=I;
B、x==5;
C、x=n/2.5;
D、5=x=4+1;
31.下述错误的C语言常量是:().
A、0xf
B、5.
C、090
D、.25
32.根据下面的程序,使a=123,c1='o',c2='k'哪一种是正确的键盘输入方法?()。(规定用字符串[CR]表示回车,U表示空格)
main()
{int a;
char c1,c2;
scanf("%d%c%c", &a,&c1,&c2);
}
A、123UoUk[CR]
B、123ok[CR]
C、123Uok[CR]
D、123oUk[CR]
33.已知键入a=4,b=3,执行下面程序输出的结果是().
main()
{ int a,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a>b) s=b;
s=s*s;
printf("%d\n", s);
}
A、13
B、9
C、16
D、15
34.执行下面程序段后,i的值是().
int i=10;
switch(i)
{case 9: i+=1;
case 10: i--;
case 11: i*=3;
case 12: ++i;
}
A、28
B、10
C、9
D、27
35.以下不是无限循环的语句为()。
A、while(1){x++;}
B、for(;;x++=i);
C、for(i=10;;i--) sum+=i;
D、for(y=0,x=1;x>++y;x=i++) i=x;
36.下面程序段运行的结果是().
x=-1;
do{
x=x*x;
}while (!x);
A、循环执行一次
B、有语法错误
C、死循环
D、循环执行两次
37.若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
A、3
B、无确定值
C、4
D、2
38.若定义int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g; 则数值为4的表达式是 ().
A、a[4]
B、a[g-c]
C、a['d'-'c']
D、a['d'-c]
39.以下叙述中正确的是()。
A、可以在一个函数中定义另一个函数
B、main()函数必须放在其它函数之前
C、构成C程序的基本单位是函数
D、所有被调用的函数一定要在调用之前进行定义
40.下述函数的功能是().
int fun(char *x)
{ char *y=x;
while(*y++);
return y-x-1;
}
A、比较两个字符串的大小
B、求字符串存放位置
C、求字符串的长度
D、将字符串x连接到字符串y后面
41.在执行"文件包含"命令时,下列说法正确的是().
A、作为一个源程序编译,得到一个目标文件.
B、一个 include 命令可指定多个被包含文件.
C、在编译时作为两个文件联结.
D、被包含的文件可以是源文件或目标文件.
42.在说明语句:int *f();中,标识符f代表的是()。
A、一个返回值为指针型的函数名
B、一个用于指向函数的指针变量
C、一个用于指向一维数组的行指针
D、一个用于指向整型数据的指针变量
43.下面程序的输出结果应该是().
char s[ ]="ABCD";
main()
{char *p;
for ( p=s;p
printf("%s",p);
}
A、DCBA
B、ABCDBCDCDD
C、ABCDABCABA
D、ABCD
44.设有如下定义: struct sk {int a; float b;} data,*p; 若要使p指向data中的a域,正确的赋值语句是()。
A、p=(struct sk*) data.a;
B、*p=data.a;
C、p=&data.a;
D、p=&data,a;
二、填空题
1.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量c中的值是 ____ .
c=(a-=(b-5)); c=(a%11)+(b=3);
2.getchar()函数只能接收一个__.
3.当a=1,b=2,c=3时,执行以下程序段后b=___. if (a>c) b=a; a=c; c=b;
4.若输入字符串:abcde<回车>,则以下while循环体将执行 _0__ 次.
while((ch=getchar())=='e') printf("*");
5.字符串的结束标志是__.
6.如果函数不要求返回值,可用____来定义函数为空类型.
7.将函数funl 的入口地址赋给指针变量p的语句是__.
8.设有以下共用体类型说明和变量定义,则变量d在内存所占字节数是 ____。
union stud { short int num; char name[8];float score[3]; double ave; } d,stu[3];
9.设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句: a*=16+(b++)-(++c); 后,a的值是 __.
10.若所用变量都已正确定义,请填写以下程序段的输出结果___.
for(i=1;i<=5;i++);
printf("OK");
11.c语言表达式!(4>=6)&&(3<=7)的值是____.
12.设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是_____.
for (x=0,y=0;y!=123&&x<3;x++)
scanf ("%d",&y);
13.按内存排列顺序, 数组char a[2]中的所有元素是a[0]和__ ___.
14.函数不可以进行嵌套定义,但可以进行嵌套_____.
15.将数组a的首地址赋给指针变量p的语句是_____.
16.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 ___。
struct stud { char num[6]; float s[4]; double ave; } a,*p;
17.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是_____.
18.设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&&b+c/2 后,t的值是__.
19.若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 12 8 2 10 7 5 1 3 该数组的元素中,数值最小的元素的下标值是_____.
20.在c程序中,只能给指针变量赋NULL值和_____值.
21.以下程序的输出结果为_____,
#include "stdio.h" main(){int a=010,j=10;printf("%d,%d\n",++a,j--);}.
三、判断题
1.在C语言中,各种类型的整型数据在内存中都占2个字节。
2.表达式 (j=3, j++) 的值是4.
3.格式字符%e以指数形式输出实数数字部分小数位数7位.
4.char c[6]="abcde"; printf("%3s", c)表示输出的字段的宽度为3位,如果被输出的数据的位数大于3,只输出3位数.
5.设d=1,e=2,f=3,则逻辑表达式!(d+e)+f&&e+f*2的值为0.
6.已知a=1,b=2,c=3,d=4,则条件表达式a>b?a:(c>d?c:d)的值为4.
7.已知a=3,b=4,c=5.则逻辑表达式a+b>c && b==c值为0.
8.do-while循环由do开始,while结束,循环体可能一次也不做。
9.对于for(表达式1;表达式2;表达式3)语句来说,continue语句意味着转去执行表达式2.
10.在do-while循环中,任何情况下都不能省略while.
11.对静态变量的初始化不是在编译阶段完成的.
12.定义 int x[5],n;则x=x+n;或x++;都是正确的.
13.语句 char ch[12]={"C Program"};与语句 char ch[ ]="C Program";具有不同的赋初值功能.
14.数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.
15.变量根据其作用域的范围可以分作局部变量和全局变量.
16.当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区.
17.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。
18.设有如下定义:int *p; *p=100;则 printf("%d",p); 的输出结果是100.
19.使几个不同的变量共占同一段内存的结构,称为"结构体"类型.
20.在打开文件时,必须说明文件的使用方式,"wb+"表示以读/写方式打开一个二进制文件.
21.在C程序中,%作为运算符时,是只能用于整数运算。
22.若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。
23.格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.
24.char c[6]="abcde"; printf("%3s", c)表示输出的字段的宽度为3位,如果被输出的数据的
位数大于3,只输出3位数.
25.设x=1,y=2,z=3,则逻辑表达式x-y>z&&y!=z的值为0.
26.运算符的级别由高向低依次为!->算术运算符->关系运算符->逻辑运算符->赋值运算符.
27.已知a=3,b=4,c=5,则逻辑表达式!(a>b) && !c||1的值为1.
28.for循环语句只能用于循环次数确定的情况下.
29.break语句能够终止当前进行的多层循环.
30.for循环的三个表达式都可以省略.
31.下列程序段是否正确:
int a[10];
....
a++;
32.定义一维数组的形式为:类型说明数组名[表达式],其中表达式必须是整型常量.
33.字符串"Da lian"在内存中的存储长度是7.
34.数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.
35.字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面.
36.静态局部变量是在编译时被初始化的,故它只被赋初值一次.
37.被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去.
38.假设有int a[10], *p;则p=&a[0]与p=a等价。
39.typedef可以定义生成新的数据类型.
40.用fopen("file","r+");打开的文件"file"可以进行修改。
41.若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"。
42.整型变量在全部范围内可以用字符格式输出.
43.已知a=3,b=4,c=5,则逻辑表达式!(a+b)+c-1 && b+c/2的值为0.
44.语句if(a>b) printf("%d",a); else printf("%d",b);可以用条件表达式a>b?a:b取代.
45.已知a=4,b=2,c=3,d=5,表达式a>b?a:c 46.continue语句对于while和do-while循环来说,意味着转去计算While表达式. 47.for语句的循环体至少执行一次. 48.定义char s[9];gets(s);若输入的字符串是Turbo c↙(↙代表按回车键操作) 则输入给数组s中的字符个数是7. 49.对静态数组的初始化是在编译阶段完成的. (正确) 50.C语言中,通过函数调用只能获得一个返回值. (错误) 51.字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面. 52.被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去. 53.char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。 54.对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义。 55.函数的返回值可以通过函数中的return语句获得。 四、程序设计 1.功能:用do-while语句求1~100的累计和。 ------------------------------------------------*/ #include "stdio.h" long int fun(int n) { /*********Begin**********/ /********** End **********/ } 2.功能:编写程序,实现矩阵(3行3列)的转置(即行列互换) 例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900 #include "stdio.h" void fun(int array[3][3]) { /*********Begin**********/ /********** End **********/ } 3.功能:把20个随机数存入一个数组,然后输出该数组中的 最小值。其中确定最小值的下标的操作在fun函数中 实现,请给出该函数的定义。 ------------------------------------------------*/ #include "stdio.h" #include "stdlib.h" #define VSIZE 20 int vector[VSIZE] ; int fun(int list[],int size) { /*********Begin**********/ /********** End **********/ } 4.功能:求k!(k〈13),所求阶乘的值作为函数值返回。 (要求使用递归) ------------------------------------------------*/ #include "stdio.h" #include "conio.h" long fun(int k) { /*********Begin**********/ /********** End **********/ } 5.功能:将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 ------------------------------------------------*/ #include "string.h" #include "stdio.h" void change(char str[]) { /*********Begin**********/ /********** End **********/ } 6.功能:从低位开始取出长整型变量s中偶数位上的数,依次 构成一个新数放在t中。 例如:当s中的数为:7654321时,t中的数为:642。 ------------------------------------------------*/ #include "stdio.h" long fun (long s,long t) { /*********Begin**********/ /********** End **********/ } return t; } 五、程序改错 1.功能:有1、2、3、4个数字,能组成多少个互不相同且无重复数 字的三位数?都是多少? ------------------------------------------------------*/ #include "stdio.h" main() { int i,j,k; /**********ERROR**********/ printf("\n") /**********ERROR**********/ for(i=1;i<=5;i++) for(j=1;j<5;j++) for (k=1;k<5;k++) { /**********ERROR**********/ if (i!=k||i!=j||j!=k) printf("%d,%d,%d\n",i,j,k); } } 2.功能:以下程序把两个数按由大到小的顺序输出来. ------------------------------------------------------*/ #include "stdio.h" /***********ERROR***********/ void swap( int *p1,*p2) { int p; p=*p1; *p1=*p2; *p2=p; } main( ) { int a,b, *p,*q; printf("input a,b:"); /***********ERROR***********/ scanf("%d%d",a,b); p=&a; q=&b; if(a swap(p,q); printf("a=%d,b=%d\n",a,b); /***********ERROR***********/ printf("max=%d,min=%d\n",p,q); } 3.功能:求1到10的阶乘的和。 ------------------------------------------------------*/ #include "stdio.h" main() { int i; float s=0; float fac(int n); /**********ERROR**********/ for(i=1;i<10;i++) /**********ERROR**********/ s=fac(i); printf("%f\n",s); } float fac(int n) { /**********ERROR**********/ int y=1; int i; for(i=1 ;i<=n;i++) y=y*i; /**********ERROR**********/ return; } 4.功能:实现交换两个整数的值。 例如:给a和b分别输入3和6 ,输出为a=6 b=3 ------------------------------------------------------*/ #include "stdio.h" /**********ERROR**********/ void fun (int a, b) { int t; /**********ERROR**********/ t=a; /**********ERROR**********/ a=b; /**********ERROR**********/ b=t; } main() { int a,b; printf("enter a,b:");scanf("%d%d",&a,&b); fun(&a,&b); printf("a=%d b=%d\n",a,b); } 5.功能:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半, 还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉 一半,又多吃了一个。以后每天早上都吃了前一天剩下的一 半零一个。到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少。 ------------------------------------------------------*/ #include "stdio.h" main() { int day,x1,x2; day=9; /**********ERROR**********/ x2==1; while(day>0) { /**********ERROR**********/ x1=(x2+1)/2; x2=x1; /**********ERROR**********/ day++; } printf("the total is %d\n",x1); } 6.功能:将s所指字符串的反序和正序进行连接形成一个新串放在 t所指的数组中。 例如:当s所指的字符串的内容为"ABCD"时,t所指数组中的内容为"DCBAABCD"。 ------------------------------------------------------*/ #include "conio.h" #include "stdio.h" #include "string.h" /**********ERROR**********/ void fun (char s, char t) { int i, d; /**********ERROR**********/ d = len(s); /**********ERROR**********/ for (i = 1; i t[i] = s[d - 1 - i ]; for (i = 0; i t[ d + i ] = s[i]; /**********ERROR**********/ t[2*d] = '/0'; } main() { char s[100], t[100]; printf("\nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("\nThe result is: %s\n", t); } 六、程序填空 1.功能:计算平均成绩并统计90分以上人数。 -------------------------------------------------------*/ #include "stdio.h" main() { int n,m;float grade,average; /***********FILL***********/ average=n=m=____; while(1) { /***********FILL***********/ _ _("%f",&grade); if(grade<0) break; n++; average+=grade; /***********FILL***********/ if(grade<90)_ __; m++; } if(n) printf("%.2f%d\n",average/n,m); } 2.功能:通过函数的递归调用计算阶乘。 -------------------------------------------------------*/ #include "stdio.h" long power(int n) { long f; if(n>1) /***********FILL***********/ f= _; else f=1; return(f); } main() { int n; long y; printf("input a inteager number:\n"); /***********FILL***********/ scanf("%d",_ _); y=power(n); /***********FILL***********/ printf("%d!=%ld\n",n,__); } 3.功能:调用函数fun计算m=1-2+3-4+……+9-10,并输出结果。-------------------------------------------------------*/ #include "stdio.h" int fun( int n) { int m=0,f=1,i; /***********FILL***********/ for(i=1;__;i++) { m+=i*f; /***********FILL***********/ ___; } /***********FILL***********/ return __ ___; } main() { printf("m=%d\n", fun(10)); } 4.功能:输出连接后的字符串。 -------------------------------------------------------*/ #include "stdio.h" /***********FILL***********/ _________________ main() { char ss[10]="12345"; strcat(ss,"6789"); /***********FILL***********/ printf(___,ss); } 5.功能:从键盘上输入10个整数,输入负数不算。 -------------------------------------------------------*/ #include "stdio.h" main() { int i=0,a; do { scanf("%d",&a); /***********FILL***********/ if (_____) i++; printf("\na=%d,i=%d",a,i); } /***********FILL***********/ while(_ ___); } 1:2:3 #include } } } return 0; } 8 #include"stdio.h" int main() { int a,b[10],m=0,n=0,p; int i,j,k; scanf("%d",&a); for(i=1;i<=a;i++) { m=0; n=0; p=i; for(j=0;p!=0;j++) { b[j]=p%10; p=p/10; } for(k=0;k 第二章 若有数学式3ae bc,则不正确的C语言表达式是() A.3*a*e/b*c B.a/b/c*e*3 C.3*a*e/b/c D.a*e/c/b*3 设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为()。 A.4 B.3 C.2 D.1 下列表达式中,不满足"当x的值为偶数时值为真,为奇数时值为假"的要求的是() A.(x/2*2-x)==0 B.!(x%2) C.!(x%2==0) D.x%2==0 表达式18/4*sqrt(4.0)/8值的数据类型为()。 A.char B.double C.不确定 D.float 在C语言中,要求运算数必须是整型的运算符是( ) A.% B./ C.++ D.!= 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。 A.4 C.16 D.52 C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A.必须为下划线 B.必须为字母 C.可以是字母、数字和下划线中的任意一种 D.必须为字母或下划线 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( ) A.不知道a的值,不能确定 B.0 C.2 D.1 判断字符型变量c1是否为数字字符的正确表达式为( ) A.(c1>='0')&&(c1<='9') B.(c1>=0)&&(c1<=9) C.('0'>=c1)||('9'<=c1) D.'0'<=c1<='9' 下面四个选项中,均是合法的用户标识符的选项是()。 A._123 temp INT B.A p_o do C.b-a goto int D.float lao _A 以下关于C语言数据类型使用的叙述中错误的是( ) A.若要处理如"人员工资"的相关数据,单精度类型 B.若只处理"真"和"假"两种逻辑值,应使用逻辑类型 C.若要保存带有多位小数的数据,应使用双精度类型 D.若要准确无误差的表示自然数,应使用整数类型 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。 A.7 B.8 C.6 D.2 下面正确的字符常量是() C语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include 1、给定n 个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 2、编写程序求无理数e 的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x 的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N ×M 整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n 位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n 门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最大元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun用比较法对主程序中用户输入的具有10 个数据的数组a按由大到小排序,并在主程序中输出 排序结果。 13、编写main程序调用函数fact求解从m个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m不能小于n,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a和b分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。 19、对任意输入的x,用下式计算并输出y 的值。 5 x<10 y= 0 x=10 -5 x>10 20、求给定正整数m以内的素数之和。 例如:当m=20时,函数值为77。 21、判断整数x是否是同构数。若是同构数,函数返回1; 否则返回0。x的值由主函数从键盘读入,要求不大 上机考试习题集 1.编写程序,一次输入5个学生的3门课成绩,每输入一个学生的3门成绩后,立即统计并输出该学生的总分和平均分。 #include "stdio.h" void main() { int score[5][3], i,j; float sum[5],average[5]; printf("请分别输入三个学生的成绩:\n"); for(i=0;i<5;i++) { sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&score[i][j]); average[i]=0; sum[i]+=score[i][j]; average[i]=sum[i]/5; } } for(i=0;i<5;i++) printf("第%d个学生的总分为:%f,平均成绩为:%f\n",i+1,sum[i],average[i]); } 2 、编写程序,提示用户从键盘输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后在显示器上输出此数,以便验证处理是否正确。 #include 2020年全国计算机等级考试二级c语言上机精选题库(共80套) 第1套试题 第一题:给定程序中,函数fun的功能是:计算N*N矩阵的主对角元素和反向对角元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。 例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include 第二题:下列给定程序中,函数fun 的功能是:根据整型参n ,计算如下公式的值。 ,11=A ,1112A +=A ,1123A +=A … ,1 11-A +=A n n 例如,若n=10,则应输出0.617978。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不要更改程序的结构! #include 1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i 第一套题 上机填空: #include { int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } 第一处改错:将:void fun ( int n ) 改为double fun ( int n ) 第二处改错:s = s + (Double)a / b; 改为s = s + (double)a / b; 第二套题 上机填空题 #include 上机考试练习题 20021程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0 int celsius, fahr; /*---------*/ scanf(“%d”,&fahr); celsius=5.0*(fahr-32)/9; printf("celsius = %d\n", celsius); } 20023程序填空,不要改变与输入输出有关的语句。 输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。 interest = money(1+rate)^year - money 输入输出示例:括号内为说明 输入 1000 3 0.025 (money = 1000, year = 3, rate = 0.025) 输出 interest = 76.89 #include 2017年全国计算机等级考试C语言上机考试题库 学生练习用第41套至第60套 第四十一套 1、程序填空 下列给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后将新字符串的首地址作为函数值返回。 例如,若s所指字符串为:"asd123fgh543df",处理后新字符串为:"asdfghdf123543"。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序在文件中。 不得增行或删行,也不得更改程序的结构! ----------------------------------------------------------------------------------------------------------------- #include <> #include <> #include <> char *fun(char *s) { int i, j, k, n; char *p, *t; n=strlen(s)+1; t=(char*)malloc(n*sizeof(char)); p=(char*)malloc(n*sizeof(char)); j=0; k=0; for(i=0; i 一、选择题 1.下列变量说明语句中,正确的是()。 A、char a;b;c; B、char:a b c; C、int x;z; D、int x,z; 2.设以下变量均为int类型,则值不等于7的表达式是()。 A、(x=6,x+1,y=6,x+y) B、(x=y=6,x+y,y+1) C、(y=6,y+1,x=y,x+1) D、(x=y=6,x+y,x+1) 3.x,y,z,t均为整型变量,则执行以下语句后,t的值为:() x=y=z=1; t=++x||++y&&++z; A、0 B、1 C、2 D、不定值 4.如果int a=2,b=3,c=0,下列描述正确的是()。 A、a&&b>c的结果为假 B、!a!=(b!=c)表达式的值为1 C、a||(b=c)执行后b的值为0 D、a>b!=c和a>(b!=c)的执行顺序是一样的 5.从键盘输入的整数中找出最小值min,输入0时结束.请在A处填写正确语句()。#include "stdio.h" main() { int min=0,a; do{ scanf("%d",&a); if(min>a) min=a; }while(___A___); printf("%d",min); } A、a=0 B、a==0 C、a>0&&a<0 D、a!=0 6.设有如下程序段: int k=10; while(k==0) k--; 则下述说明中正确的是(). A、循环体一次也不执行 B、循环体执行一次 C、死循环 D、循环体执行10次 7.static char str[10]="China";数组元素个数为()。 A、6 B、9 C、5 D、10 8.函数调用:strcat(strcpy(str1,str2),str3)的功能是()。 A、将串str1复制到串str2中后再连接到串str3之后 B、将串str2连接到串str1之后再将串str1复制到串str3中 C、将串str1连接到串str2之后再复制到串str3之后 D、将串str2复制到串str1中后再将串str3连接到串str1之后 9.C语言程序中必须有的函数是()。 A、#include "stdio.h" B、main C、printf D、scanf 10.程序运行结束后,屏幕上输出值为(). static int x=10; main( ) { int x=3; f( ); x- -; printf("%d",x); } f( ) { x++; } A、10 B、2 C、11 D、3 1输入三个整数x,y,z,把这三个数由小到大输出。 # include 单项选择 ================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。 int a=10; printf("%d",a++); A、11 和 10 B、11 和 11 C、10 和 11 D、10 和 10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B 题号:45 能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 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",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } } A、死循环,不能确定次数 B、6 2019年C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项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.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a 第四章 单选 有以下程序,程序运行后的输出结果是( ) #include } int main() { int i,s=1; for(i=1;i<=3;i++) s*=fun(); printf("%d\n",s); } A.10 B.64 C.0 D.30 有以下程序,程序运行后的输出结果是() #include 第一章 以下叙述中错误的是( ) A.一个C语言程序只能有一个主函数 B.C语言编写的每个函数都可以进行独立的编译并执行 C.C语言编写的函数都可以作为一个独立的源程序文件 D.C语言编写的函数源程序,其文件名后缀可以是C 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是( ) A.C语言程序仅可以编译执行 B.C语言程序仅可以解释执行 C.以上说法都不对 D.C语言程序既可以编译执行又可以解释执行 C语言规定:在一个源程序中,main的位置( ) A.可以任意 B.必须在最后 C.必须在最开始 D.必须在系统调用的库函数后面 一个C语言程序是由( ) A.若干过程组成 B.若干子程序组成 C.函数组成 D.一个主程序和若干子程序组成 以下关于结构化程序设计的叙述中正确的是( ) A.一个结构化程序必须同时由顺序、分支、循环三种结构组成 B.在C语言中,程序的模块化是利用函数实现的 C.由三种基本结构构成的程序只能解决小规模的问题 D.结构化程序使用goto语句会很便捷 以下叙述正确的是( ) A.在C程序中,main函数必须位于程序的最前面 B.在对一个C程序进行编译的过程中,可发现注释中的拼写错误 C.C语言本身没有输入输出语句 D.程序的每行中只能写一条语句 以下叙述中错误的是( ) A.C语言编写的每个函数都可以进行独立的编译并执行 B.C语言编写的函数源程序,其文件名后缀可以是C C.一个C语言程序只能有一个主函数 D.C语言编写的函数都可以作为一个独立的源程序文件 以下叙述正确的是( ) A.C程序的书写格式是固定的,每行只能写一条语句 B.C程序中注释部分可以单独占一行 C.构成C程序的基本单位是函数,所有函数名都可以由用户命名 D.在对C语言程序进行编译时,可以发现注释行中的拼写错误 以下叙述正确的是( ) A.C语言程序是由过程和函数组成的 B.C语言函数不可以单独编译 C.C语言中除了main函数,其他函数不可作为单独文件形式存在 D.C语言函数可以嵌套调用,例如:fun(fun(x)) 一个C程序的执行是从( ) A.本程序文件的第一个函数开始,到本程序main函数结束 B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的main函数开始,到本程序文件的最后一个函数结束 D.本程序的main函数开始,到main函数结束 以下叙述不正确的是( ) A.在C程序中,注释说明只能位于一条语句的后面 B.C程序的基本组成单位是函数 C.一个C源程序可由一个或多个函数组成 D.一个C源程序必须包含一个main函数 C语言试题库 一、单项选择 第一章C语言概述 (1)一个C程序的执行是从 A、本程序的MAIN函数开始,到MAIN 函数结束。 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。 (2)以下叙述正确的是 A、在C程序中,MAIN函数必须位于程序的最前面。 B、C程序的每行中只能写一条语句。 C、C语言本身没有输入输出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3)C语言规定,在一个源程序中,MAIN主函数的位置是在: A、必须在最前面。 B、必须在系统调用的库函数的后面 C、可以在任意位置。 D、必须在最后面 (4)一个C程序是由: A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (5)以下叙述不正确的是: A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个MAIN函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 第二章数据类型、运算符与表达式 (1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为 x=(i=4, j=16, k=32) A、4 B、16 C、32 D、52 (2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case E、i f, struct, type (3)下面四个选项中,均是不合法的用户标识符的选项是 A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT (4)若有代数式3ae/bc,则正确的C语言表达式是 A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3 (5)已知各变量的类型说明如下: int k, a, b; unsinged long w=5; double x=1.42; 则以下不符合C语言语法的表达式是 A、x%(-3) B、w+=-2; C、k=(a=2,b=3,a+b) D、a+=a-=(b=4)*(a=3) 第三章简单C程序设计 (1)putchar函数可以向终端输出一个 A、整型变量表达式值 B、实型变量值 C、字符串 D、字符或字符型变量值 (2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z); B、scanf(“%2d*%d%lf”,&x,&y,&z); C、scanf(“%x%*d%o”,&x,&y,&z); D、scanf(“%x%o%6.2f”,&x,&y,&z); 1 C 语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include西工大C语言上机考试题库
C语言上机题库百科园第2章!南信大!
C语言上机题库
c语言上机题库 (1)
c语言上机考试训练题库及答案
2020年全国计算机等级考试二级c语言上机精选题库(共80套)
历年全国计算机等级考试-二级C语言上机考试题库及答案
二级C语言上机题库及答案
浙江大学C语言上机考试题库
全国计算机等级考试C语言上机考试题库 套
C语言上机题库1
C语言上机练习题及答案
大学c语言考试题库(含答案)
2019年C语言考试题库及答案
C语言上机题库百科园第4章!南信大!
C语言上机题库百科园第1章!南信大!
C语言试题库完整版
C语言上机题库