当前位置:首页 » 编程语言 » 开发者猩球c语言考试题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

开发者猩球c语言考试题

发布时间: 2023-01-25 02:13:00

c语言考试题 急急急!!!

a
a
c
c
c

a
b
d
d
d

a(2^16-1) 与bingofwl 不同
b(字符常量是单引号括起来的一个字符) 与bingofwl 不同
c 与bingofwl 不同

b
c
a
d
b
b

㈡ 帮忙给个《C语言程序设计》 练习题 答案 这次考试题就在其中。。。。

1A(B 中第四个选项首行是数字,D选型有关键字) 2D 3A 4A 5C(我在TC上运行的) 6A 7D 8D(0147是8进制转换成十进制即103即‘g’) 9D(属自动类型转换) 10 D 11C 12A(条件运算符运算方式是从右向左的) 13B(算术运算符-的优先级高于关系运算符<=,最后是逻辑判断 为真1,假0)14C
15 D(考察逗号运算符) 16D

㈢ C语言考试题

我来回答下把:
1.1
2.9
解释:t = (a>b)?a:b等价于t = ((a>b)?a:b),这下应该知道了把
3.96 `(和~键是同一个键)
解释:a=96;96是那个字符的ACSII码值的十进制表示,它的十六进制表示的ASCII码值为60,你可以对96进行除16取余法得到60,然后你去查看下字符的ASCII码 16进制表示的那个表就会发现,它对应的是这个字符,所以就是他了,别和单引号混淆就好,单引号的ASCII码十六进制表示为27
4.a[0] a[1] a[2]
5.1600
6.文本文件 二进制文件 [这个拿的不是很准]
7.fopen fclose fseek

下面:
1.C
解释:a+=a-=a*=a,首先要知道+=,-=,*=的优先级是相同的,但是他们的结合性是由右向左的,所以,他相当于a+=a-=(a=a*a),你还要知道,这是在同一条语句中多次修改同一个变量的值,这里有结合性,可以保证,但是有的时候并不可以,因为语言中明确规定,求值顺序未定义,一般尽可能不要在同一条语句里多次修改同一个变量的值,有的时候还和编译器有关的,a+=a-=(a=a*a)相当于a+=(a=a-(a=a*a)),在a=(a+(a=a-(a=a*a))),所以为0
2.B
3.D
解释:你定义一个带参数的宏#define ADD(x) (x)+(x)
你要知道,宏替换是机械化的替换,不会很智能化的,也就是说
在这里,替换的时候是替换成了这样d=(a+b)+(a+b)*c;所以最后就是80了
4. A
解释:这样理解把, char a[5]; char *p=a;这个是把数组的首地址赋给指针p来初始化指针,你后面再加一句p="abcd";不就是对指针的赋值吗,使指针不再指向数组的首地址,而是指向了字符串的首地址了.相信char *p="abcd";很常见把,呵呵...
5.C
解释:因为k=2,然后执行关系表达式k==0,结果显然判断结果为假,所以不执行循环体
6.C
7.A
指针是不能相加的

8.D
解释:这个应该好好解释下,这个题还好了
struct st{ int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’},*p; p=&a[0];
A p++->n B p->n++ C (*p).n++ D ++p->n
分析:首先你要知道,这是定义了一个结构体数组,这个static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’}写的易读一点就是static struct st a[3]={{5,&a[1]},{7,&a[2]},{9,'\0'}},是不是明了了好多.
你做这个题目之前还需要明白一点,即箭头操作符的优先级高于++运算符,然后分析选项
选项A.p++是后缀加,所以执行(p++)->n(即p++->n) 相当于执行p->n,即得到的值是5
选项B. p->n++相当于(p->n)++,由于是后缀加,所以得到的值也是5
选项C.(*p).n++ 就是相当于((*p).n)++,更相当于(p->n)++,所以和上面的是一样的,也是5,为什么它相当于它呢,这就要你看看箭头操作符的由来了,箭头操作符的由来就是为了结合解引用操作符*和点操作符.于一起的.来简化书写,增加可读性
选项D.++p->n 相当于++(p->n),由于是前缀加,所以得到的值为6了
9.C,选择W会格式化
10. B ,数组名其实就相当于一个指针,这里对指针做运算,加1使指针下移

写出运行结果:
1.
10623-9003
2.
6 7 8

填空题:
1.
#include <stdio.h>
#include <math.h>
2. 2
3.break;
4.k+1

编程题:
1.代码如下:
#include<stdio.h>
int main()
{
int i,n;
long s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
s*=i;
printf("%ld",s);
return 0;
}

2.代码如下

#include<stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=100;i++)
s+=i;
printf("%d",s);
return 0;
}

应该没错把,楼主有什么问题可以发消息给我

㈣ C语言程序设计考试题

  1. main函数

  2. scanf函数,printf函数

  3. -60

  4. 6 ,4, 2

  5. &&, || , !

  6. B 66

  7. 2 1

  8. 6

  9. main

  10. 5

㈤ C语言考试题

1、因为1和2都默认为整型数,整型是没有小数点的,所以1/2=0.5=0(这里会自动强制类型转换)
2、++分为两种情况,一种是前缀的,一种是后缀的,当为前缀自增时,变量会增1,表达式的值也会增1;而++是后缀时,表达式值扔不变,变量的值也不变,只有当该表达式执行完以后,变量的值才会增1。
k++则是后缀自增的,所以在执行时表达式k++=11,k=11;执行完这一步,k=12
3、同上,++x=4.2,x=4.2;

㈥ 求c语言试题及答案!急啊!

c语言考试题(一)

一、 单项选择题(每题2分,共20分)
1、以下选项中属于C语言的数据类型是( )
A.复数型 B.逻辑型 C.集合型 D.双精度型
2、一个C程序的执行是从( )
A.main()函数开始,直到main()函数结束 B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束 D.main()函数开始,直到最后一个函数结束
3、设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( )
A.3 B.0C.-12D.9
4、若有 char c[5]={'c','d','\0','e','\0'};则执行语句printf("%s",c);结果是( )。
A.cd\0e B.'c''d' C.cd D.cd e
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
6、以下有宏替换不正确的叙述( ).
A.宏替换不占用运行时间 B.宏名无类型
C.宏替换只是字符串替换 D.宏名必须用大写字母表示
7、执行char str[10]=”Ch\nina”; strlen(str)的值是( )
A.5 B.6 C.7 D.9
8、下面程序的输出结果是:( )
#define POWER(x) (x*x)
main()
{int i=4; printf("%d",POWER(i-2)); }
A. -9 B. -7 C. 5 D. -6
9、在定义int a[3][4][2];后,第10个元素是( )
A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]
10、下面程序的输出结果是:( )
typedef struct
{long x[2];<br>short y[4];<br>char z[8];<br>}MYTYPE;
MYTYPE a;
main()
{ printf("%d\n",sizeof(a));}
A. 2 B. 8 C. 14 D. 24
二、 填空题(每空1分,共11分)
1、字符串"A"在内存中占用的字节数为 。
2、C语言中的标识符只能由字母、下划线和 组成。
3、若有定义语句“ int a=25,b=14,c=19;",以下语句的执行结果是
if(a++<=25&&b--<=2&&c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);
else printf("###a=%d,b=%d,c=%d\n",a,b,c);
4、有如下定义a[]="B\172\\\'a%%";则执行语句printf("%d",strlen(a));的结果为 。
5、若有定义:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3];则*(*(p+1)+2)的值为 ,*p[2]的值为 。若数组的首地址为2000,则p[1]指向的地址为 。
6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y 的结果是 。
7、设x、y都是int型变量,初值都为1,则执行表达式:--x&&y++后,y的值为 。
8、语句for(i=1;i==10;i++)continue;循环的次数是 。
9、以下程序输出 。
main()
{enum em {em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
三、 写程序结果(每题5分,共35分)

1、#include
main()
{int x,y,z;<br>x=1,y=2,z=3; x+=y+=z;<br>printf("1:%d\n",z+=x>y?x++:y++);<br>x=0x02ff;y=0xff00;<br>printf("2:%d\n",(x&y)>>4|0x005f);<br>x=y=z=-1; ++x||++y&&++z;<br>printf("3:%d,%d,%d\n",x,y,z);<br>}
2、#define f(x) x*x
main()
{int a=6,b=2,c;<br>c=f(a+b)/f(b);<br>printf(“%d\n”,c);<br>}
3、fun(int k)
{ printf("%d",k);
if(k>0)
fun(k-1);
}
main( )
{ int w=5; fun(w); printf("\n"); }
4、#include
main()
{int x=1,y=0;<br>switch(x)<br>{ case 1:<br>switch(y)<br>{ case 0:printf(“first\n”);break;<br>case 1:printf(“second\n”);break;<br>}
case 2:printf(“third\n”);
}
}
5、#include
main()
{ int k=4;
func(k); func(k);
}
func(int a)
{ static int m=0;
m+=a;
printf("%d",m);
}
6、struct st
{ int x;
int *y;
}*p;
int s[]={30,20};
struct st a[]={1,&s[0],2,&s[1]};
main()
{ p=a; printf("%d,",p->x);
printf("%d\n",++(*(++p)->y));
}
7、假定在当前盘目录下有2个文本文件,其名称和内容如下:
文件名: a1.txt a2.txt
内容: ABCDEF# abcdef#
#include "stdio.h"
main()
{FILE *fp;<br>void fc();<br>if((fp=fopen("a1.txt","r"))==NULL)<br>{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
if((fp=fopen("a2.txt","r"))==NULL)
{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
}
void fc(fp1)
FILE *fp1;
{char c;<br>while((c=fgetc(fp1))!='#')putchar(c);<br>}

四、 程序填空(每空2分,共14分)

1、下面程序求矩阵a的主对角线元素之和,请填空。
main()
{ int a[3][3]={2,4,6,8,10,12,14,16,18};
int sum=0,i,j;
for(i=0;i<3; ① )
for(j=0; ② ;j++)
if(i= =j) sum=sum+ ③ ;
printf("sum=%d\n",sum);
}
2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中, 复制时’\0’也要复制过去,’\0’后面的字符不用。
coy(char s1[],char s2[])
{ int i;
for(i=0;s2[i]!= ① ;i++)
s1[i]=s2[i];
② ;
}
3、下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。
main()
{ char a[]="students",t; int i,j;
for(i=1;i<7;i+=2)
for(j=i+2;j<8; ① )
if( ② )
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
}

c语言考试题(二)

一. 填空题(每题2分,共20分)
1. C语言基本数据类型有:_______________________________;
构造类型有:_____________________________________。 P.13

2. C语言源程序注注释符号是:________________________________,
为表明层次结构,C语言源程序通常采用_____________________格式编写。P.4

3. 源程序TEST.C经编译产生的目标文件是:________________________;
经连接处理后,产生的可执行文件是:__________________________。

4. strlen(“1234 \ 0xy)的值为:_____________________________;
sizeof(float)的值为:____________________________

5. 二维数组a[10] [50]最后一行的首地址为:_________________________;
最后一个元素的首地址为:____________________________________。

6. C标准库函数中,数学函数的原型在:________________头文件中,自定义头文件D :\ MYC \ MY . H应如何包含到源程序文件中:_________________________。P.130

7. 已知函数定义为:int stat(inta,float *p)
{……………}
则此函数的两个参数类型分别是_______________ 、 _____________________。

8. 设int x,y,z=4;
x=y=++z;
x=(y>z)?x+2;x++;则x的值是:_________;
设int a=0,b=0,c=0;c=++a | | b++; ,则a、b、c值分别是:_____________。

9. 与if (x=0) 等价的写法是if ( ! x );
判断两个(float)变量x,z是否相等一般:if ( fabc(x-z)<1e-6 )。

10.已知赋值语句zhang.year=1985;可判断zhang是_______________类型的变量;
定义文件指针的C语句是:_________________________________。

二. 单项选择题 (每题1分,共10分)
1. 组成C程序的基本单位是____________________________。
A.函数 B.标识符 C.表达式 D.语句

2. 设int类型的数据长度为2字节,则该类型数据的取值范围是__________________。
A.0至65536 B.0至65535
C.-32767至32768 D.-32768至32767

3. 在C语言中,逻辑值“真”是用_____________________表示的。
A.预定义为真值的宏 B.非零数
C.正数 D.非零整数

4. C语言对于嵌套if语句规定else总是与_____________________匹配。
A.与最外层的if B.与之前最近的if
C.与之前最近的不带else的if D.与最近的{ }之前的if

5. 数组定义char a[10]={`a`,`b`,`c`}:包括了几个元素____________________。
A.3 B.9 C.4 D.10

6. 数组名作为实参传给被调用的函数时,形参获得的是_____________________。
A.该数组第一个元素的值 B.该数组所有元素的值
C.该数组第一个元素的首地址 D.该数组所有元素的首地址

7. 为表示关系x ≥ y ≥z,正确的C语言表达式为_________________________。
A.(x>=>y>=z) B.(x>=y)AND(y>=z)
C.(x>=y)&&(y>=z) D.(x>y)&(y>=z)

8. 根据定义int a[ ]={1,2,3},i,*p=a; 从语法分析_________________是不正确的。
A. a[p-a] B.*(&a) C.p D.*(*(a+i))

9. 若有语句scanf(“%d%d”,&a,&b);要使变量a,b分别得到12和34;正确的输入形式为____________________________。
A.12 34 B.12,34 C.1234 D.12:34

10.union uex {int i;float f;char c;}ex;则sizeof(ex)的值是____________________。
A.4 B.5 C.6 D.7

三. 分析程序,写出运行结果。(每题4分,共20分)
1. 源程序如下,运行时假定键盘输入字符串为``2004``
#include
void main(void)
{
int n=0;
char c;
while( (c=getchar( )) ! =`\n` ) /*字符型数字*/
{
if (c>=`0`&&c<=`9` )
n = n*10 + c- `0` ; /*数字*/
}
printf(“value=%d|n” ,n);
}
结果为: value=2004 。

2. 源程序如下:
#include
void main(void)
{
int num[9]={399,398,397,396,395,299,290,311,301};
int score[9]={81,85,59,77,90,66,89,93,73};
int iMax,iPos,i;
iPos=0;
iMax=score[iPos];
for(i=1;i<9;i++)
if(score>iMax)
{
iPos=i;
iMax=score[iPox];
}
printf(“num=%d,score=%d”,num[iPos];score[iPos]);

结果为: num=311, score=93 。

3. 源程序如下,运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10
#include
void main(void)
{
int i,a[10];
int *p;
p=a;
for(i=0;i<10;i++)
scanf(“%d“,p++);
for(p=a;p< SPAN>;p++)
if (*p%2)printf(“%3d”,*p);
}
结果为: 1 3 5 7 9 。

4. 源程序如下,两次运行,分别输入数据13和21
#include
#include
void main(void)
{
int n,s;
scant (“%d”,&n);
s=panan( n);
if(s==1)printf(“yes\n”);
else printf(“no\n);
}
int panan(int n)
{
int k,j;
k=(int)sqrt((double)n);
for(j=2;j<=k,j++)
{
if(n%j==0) break;
}
if(j>k) retum(1);
else retum(0);
}
结果为 yes
no

5.源程序如下,运行时假定键盘输入字符为:AxByCz
#include
#include
void main(void)
{
char str[80];
int i;
gets(str);
for(i=0;str!=`\0`;i++)
if(str>=`a`&&str<=`z`) str-=32;
else if (str>=`A`&&str<=`Z`) str+=32;
puts(str);
}
结果为: aXbYcZ 。

四. 下列程序中每个划线处有一个错误,改正划线 中的错误,使其实现题目要求。(每体4分,共20分)
1. 求 s=1+2+3+、、、、、、、+100
include 改正为_________________________。
void sum (void) 改正为_________________________。
{
int s,i;
for (s=0,i=1;i<=100;i++)
{
s=s+ i ++; 改正为__________________________。
}
printf (“s=%f”,s) 改正为__________________________。
}

2. 源程序实现求x
#include
double pow(float . int) 改正为_________________________。
void main(void)
{
int i, n;
float x;
scanf (“%f,%d”,&x,&n);
for (i=1; i<9;i++)
printf(“%d,%e\n”, i, pow(i,x);
} 改正为______________________。
double v v pow(float x, int n)
{
int i;
double p=0; 改正为______________________。
for (i=1; i< i++)>改正为_______________________。
p*=x;
retum(p);
}

3. 源程序实现排升序。
#include
void main(void)
{
int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;
for (i=0; i<9; i++)
{
iMin=0; 改正为_______________________。
for (j=i+1; j<10;j++)
if(a[iMin]< iMin="j;">改正为_______________________。

if (iMin==i) 改正为_________________________。
{ iTemp=a;
a[iMin]=a; 改正为_________________________。
a[iMin]=iTemp;
}
}
for(i=0; i<10; i++)
printf(“%4d”, a):
}

4. 源程序为求平均值。
#include
void main(void)
{
int i, sum; 改正为____________________。
float avg;
int sc[10], *p=sc;
for (i=0, i<10; i++) 改正为____________________。
{
scanf(“%d”, p++);
sum+= *p; 改正为____________________。
}
avg = sum/ 10; 改正为___________________。
printf(“avg=%f”, avg);
}
5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1项之和
#include
void main(void>
{
float exp , x , t;
int i, n;
scanf(“%f, %d”,&x, &n);
t=0; 改正为___________________。
exp=1.0;
for(i=1 ; i<=n; i++)
{
if(t<1e-6) loop; 改正为__________________。
t+=x/i; 改正为___________________。
exp*=t; 改正为___________________。
}
printf(“\n%15.6f”, exp);
}
五. 编程题 (每题6分,共30分)
1. 根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。
#include
void swap (int *, int *);
void main (void)
{
int x, y;
scanf(“%d, %d”, &x, &y);
swap( &x, &y);
printf(“%d, %d”, x, y);
}
void swap( )
{

}

2. 设某班人数36人,参加C语言考试,用一维数组score[36]存放考试成绩,已给出一部分程序,完善以下程序,使其实现统计并输出不及格人数及百分比。
#include
void main (void)
{ int i;
float scoer[36], precent;
int count=0;
for (i=0; i<36; i++)
{
scanf(“%f”, &score);

}

3. 完善以下程序使其实现由键盘任意输入一串字符,统计其中大写字母个数iA、小写字母个数ia、其他字符个数iother。
#include
#include
void main (void)
{
char str [80];
int i, iA=0, ia=0, iother=0;

}

4. 完善以下程序使其实现求方阵主和辅对角线元素之和及其转置矩阵,设方阵用二维数组a表示,转置矩阵用t表示,sl和s2表示主和辅对角线元素之和。
#include
void main(void)
{
int a[3] [3]={1,3,5,7,9,11,13,15,11};
int i, j, s1, s2;
int t[3] [3];
printf(“%d, %d,\n”,s1, s2);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf(“%3d”, t [j]);
}

5. 已知字符数组str[80],编写返回指针的子函数,实现在其中查找字符ch首次出现的位置。
#include
#include
#include
char *lstrchar(char*, char);
void main(void)
{
char c, *p, str[80];
gets (str);
scanf(“%c”, &c);
p=lstrchar(str,c);
if(p==NULL) printf(“char %c not found\n”c);
else printf(“The position is %d”, p-str);
char “lstrchar( )
{ }

历年全国计算机二级考试c语言真题及答案
http://jsj.lsxy.com/UploadFiles/20064222324839.rar

㈦ C语言选修课考试题求解!在线等答案!!!跪求啦!!!

1.
int sum=0;
for(int i=1;i<=100;i++)
sum+=i;
printf("%d\n",sum);

2.
void max_2(int *num1_p,int *num2_p)
{
int *pointer;
if( *num1_p > *num2_p )
pointer= num1_p, num1_p= num2_p, num2_p=pointer;
}
main()
{ int num1,num2;
int *num1_p=&num1, *num2_p=&num2;
printf(“Input the first number: ”); scanf(“%d”,num1_p);
printf(“Input the second number: ”); scanf(“%d”,num2_p);
printf(“num1=%d, num2=%d\n”, num1, num2);
max_2(num1_p,num2_p);
printf(“min=%d, max=%d\n”, *num1_p, *num2_p);
}

3.

int fun(int n)
{
if(n==0||n==1)
return 1;
else
return n*fun(n-1);
}
main()
{
int n;
scanf("%d",&n);
printf("%d\n",fun(n));
}

㈧ c语言考试,求答案,急!!急!!

一、选择题((1)—(40)每题1分,(41)—(50)每题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

(1) 在32位计算机中,一个字长所占的字节数为( )。
A) 1
B) 2
C) 4
D) 8

(2) 与十进制数511等值的十六进制数为( )。
A) 1FF
B) 2FF
C) 1FE
D) 2FE

(3) 能将高级语言编写的源程序转换成目标程序的是( )。
A) 编程程序
B) 编译程序
C) 解释程序
D) 链接程序

(4) 在计算机系统中,存储一个汉字的国标码所需要的字节数为( )。
A) 1
B) 2
C) 3
D) 4

(5) 下列带有通配符的文件名中,能表示文件ABC.TXT的是( )。
A) *BC.?
B) A?.*
C) ?BC.*
D) ?.?

(6) 在多媒体计算机系统中,不能用以存储多媒体信息的是( )。
A) 光缆
B) 软盘
C) 硬盘
D) 光盘

(7) DOS命令“COPY/?”的功能是( )。
A) 将当前盘当前目录中的所有文件复制到当前盘的根目录下
B) 将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下
C) 以提示方式复制文件
D) 显示COPY命令的帮助信息

(8) 在Windows环境下,若要将当前活动窗口存入剪贴板,则可以按( )。
A) Ctrl+PrintScreen键
B) Ctrl+PrintScreen键
C) Shift+PrintScreen键
D) PrintScreen键

(9) 在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是( )。
A) 将当前应用程序转为后台运行
B) 退出Windows后再关机
C) 退出Windows后重新启动计算机
D) 终止当前应用程序的运行

(10) 在Windows环境中,粘贴按钮是( )。
A) ctrl+A
B) ctrl+C
C) ctrl+X
D) ctrl+V

(11) 以下叙述中正确的是( )。
A) 构成C程序的基本单位是函数
B) 可以在一个函数中定义另一个函数
C) main()函数必须放在其它函数之前
D) 所有被调用的函数一定要在调用之前进行定义

(12) 以下选项中合法的实型常数是( )。
A) 5E2.0
B) E-3
C) .2E0
D) 1.3E

(13) 以下选项中合法的用户标识符是( )。
A) long
B) _2Test
C) 3Dmax
D) A.dat

(14) 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是( )。
A) 字符A
B)字符a
C)字符e
D)非法的常量

(15) 以下非法的赋值语句是( )。
A) n=(i=2,++i);
B)j++;
C) ++(i+1);
D)x=j>0;

(16) 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )。
A)6.500000
B)6
C) 5.500000
D) 6.000000

(17) 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是( )。
A) scanf(“%2d%2d%2d”,&i,&j,&k);
B) scanf(“%d %d %d”,&i,&j,&k);
C) scanf(“%d,%d,%d”,&i,&j,&k);
D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);

(18) 与数学式子 对应的C语言表达式是( )。
A) 3*x^n(2*x-1)
B) 3*x**n(2*x-1)
C) 3*pow(x,n)*(1/(2*x-1))
D) 3*pow(n,x)/(2*x-1)

(19) 设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是( )。
A)printf(“x=%d\n”,x);
B) printf(“x=%1d\n”,x);
C)printf(“x=%8dL\n”,x);
D)printf(“x=%LD\n”,x);

(20) 若有以下程序:
main()
{ int k=2,i=2,m;
m=(k+=i*=k);printf(“%d,%d\n”,m,i);
}
执行后的输出结果是( )。
A) 8,6
B) 8,3
C) 6,4
D) 7,4

(21) 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是( )。
A) 6
B) 0
C) 2
D) 1

(22) 有一函数, ,以下程序段中不能根据x值正确计算出y值的是( )。
A) if(x>0) y=1; B) y=0;
else if(x==0) y=0; if(x>0) y=1;
else y=-1; else if(x<0) y=-1;
C)y=0; D)if(x>=0)
if(x>=0); if(x>0) y=1;
if(x>0) y=1 ; else y=0;
else y=-1; else y=-1;

(23) 以下选项中,与k=n++完全等价的表达式是( )。
A) k=n,n=n+1
B) n=n+1,k=n
C) k=++n
D) k+=n+1

(24) 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
main()
{ int n,k;
float score ,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score); sum+=score;}
ave=sum/4.0;
printf(“NO%d:%f\n”,n,ave);
}
}
上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是( )。
A) sum=0.0;
B) sum+=score;
C) ave=sun/4.0;
D) printf(“NO%d:%f\n”,n,ave);

(25) 有以下程序段
int n=0,p;
do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);
此处do—while循环的结束条件是( )。
A) P的值不等于12345并且n的值小于3
B) P的值等于12345并且n的值大于等于3
C) P的值不等于12345或者n的值小于3
D) P的值等于12345或者n的值大于等于3

(26) 有以下程序
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0:m++;break;
case 1:m++;
switch(b%2)
{ default:m++;
case 0:m++;break;
}
}
printf(“%d\n”,m);
}
程序运行后的输出结果是( )。
A) 1
B) 2
C) 3
D) 4

(27) C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。
A) void
B) int
C) float
D) double

(28) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是( )。
A) p=q;
B) *p=*q;
C) n=*q;
D) p=n;

(29) 有以下程序
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) 9
C) 21
D) 9.0

(30) 有以下程序
void fun(char *c,int d)
{ *c=*c+1;d=d+1;
printf(“%c,%c,”,*c,d);
}
main()
{ char a=’A’,b=’a’;
fun(&b,a); printf(“%c,%c\n”,a,b);
}
程序运行后的输出结果是( )。
A)B,a,B,a
B) a,B,a,B
C) A,b,A,b
D) b,B,A,b

(31) 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i
for(j=i+1,j
if(a[i]
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=o;i<10;i++) print(“%d,”,aa[i]);
printf(‘\n”);
}
程序运行后的输出结果是( )。
A)1,2,3,4,5,6,7,8,9,10
B) 10,9,8,7,6,5,4,3,2,1,
C) 1,2,3,8,7.6.5.4.9,10
D) 1,2,10,9,8,7,6,5,4,3

(32) 有以下程序
int f(int n)
{ if (n==1) return 1;
else return f(n-1)+1;
}
main()
{ int i,j=0;
for(i=i;i<3;i++) j+=f(i);
printf(“%d\n”,j);
}
程序运行后的输出结果是( )。
A) 4
B) 3
C) 2
D) 1

(33) 有以下程序
main()
{ char a[ ]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\0’}; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”i,j);
}
程序运行后的输出结果是( )。
A)9,9
B)8,9
C)1,8
D)9,8

(34) 以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
void reverse(int a[ ],int n)
{ int i,t;
for(i=0;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);
}
程序运行后的输出结果是( )。
A) 22
B) 10
C) 34
D) 30

(35) 有以下程序
main()
{ int aa[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) 19
C) 13
D) 20

(36) 有以下程序
#include
main()
{ char *p=“abcde\Ofghjik\0”;
printf(“%d\n”,strlen(p));
}
程序运行后的输出结果是( )。
A) 12
B) 15
C) 6
D) 5

(37) 程序中头文件typel.h 的内容是:
#define N 5
#define M1 N*3
程序如下:
#define “type1.h”
#define M2 N*2
main()
{ int i;
i=M1+M2; printf(“%d\n”,i);
}
程序编译后运行的输出结果是:( )。
A) 10
B) 20
C) 25
D) 30

(38) 有以下程序
#include
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen(“d1.dat”“w”);
fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”j);
fclose(fp);
fp=fopen(“d1.dat”, “r”);
fp=fscanf(fp,“%d%d”,&k,&n); printf(“%d%d\n”,k,n);
fclose(fp);
}
程序运行后的输出结果是( )。
A) 20 30
B) 20 50
C) 30 50
D) 30 20

(39) 以下叙述中错误的是( )。
A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B) 在程序结束时,应当用fclose函数关闭已打开的文件
C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D) 不可以用FILE定义指向二进制文件的文件指针

(40) 有以下程序
#include
main(int argc,char *argv[])
{ int i,len=0;
for(i=1;iprintf(“%d\n”,len);
}
程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:
ex1 abcd efg 10<回车>
则运行的结果是:( )。
A) 22
B) 17
C) 12
D) 9

(41) 有以下程序
int fa(int x)
{ return x*x; }
int fb(int x)
{ return x*x*x; }
int f(int (*f1)(),int (*f2)(),int x)
{ return f2(x)-f1(x); }
main()
{ int i;
i=f(fa,fb,2); printf(“%d\n”,i);
}
程序运行后的输出结果是( )。
A) -4
B) 1
C) 4
D) 8

(42) 有以下程序
int a=3;
main()
{ int s=0;
{ int a=5; s+=a++; }
s+=a++;printf(“%d\n”,s);
}
程序运行后的输出结果是( )。
A) 8
B) 10
C) 7
D) 11

(43) 有以下程序
void ss(char *s,char t)
{ while(*s)
{ if(*s==t) *s=t-‘a’+’A’;
s++;
}
}
main()
{ char str1[100]=“abcddfefdbd”,c=’d’;
ss(str1,c); printf(“%s\n”,str1);
}
程序运行后的输出结果是( )。
A) ABCDDEFEDBD
B) abcDDfefDbD
C) abcAAfefAbA
D) Abcddfefdbd

(44) 有以下程序
struct STU
{ char num[10]; float score[3]; };
main()
{ struct stu s[3]={{“20021”,90,95,85},
{“20022”,95,80,75},
{“20023”,100,95,90}},*p=s;
int i; float sum=0;
for(i=0;i<3,i++)
sum=sum+p->score[i];
printf(“%6.2f\n”,sum);
}
程序运行后的输出结果是( )。
A) 260.00
B) 270.00
C) 280.00
D) 285.00

(45) 设有如下定义:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正确的赋值语句是( )。
A) p=&a;
B) p=data.a;
C) p=&data.a;
D) *p=data.a;

(46) 有以下程序
#include
struct NODE
{ int num; struct NODE *next; };
main()
{ struct NODE *p,*Q,*R;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p->num=10; q->num=20; r->num=30;
p->next=q;q->next=r;
printf(“%d\n”,p->num+q->next->num);
}
程序运行后的输出结果是( )。
A) 10
B) 20
C) 30
D) 40

(47) 若有以下说明和定义
typedef int *INTEGER;
INTEGER p,*q;
以下叙述正确的是( )。
A) P是int型变量
B) p是基类型为int的指针变量
C) q是基类型为int的指针变量
D) 程序中可用INTEGER代替int类型名

(48) 有以下程序
main()
{ unsigned char a,b,c;
a=0x3; b=a|0x8; c=b<<1;
printf(“%d%d\n”,b,c);
}
程序运行后的输出结果是( )。
A) –11 12
B) –6 –13
C) 12 24
D) 11 22

(49) 有以下程序
#include
main()
{ char *p,*q;
p=(char*)malloc(sizeof(char)*20); q=p;
scanf(“%s%s”,p,q); printf(“%s%s\n”,p,q);
}
若从键盘输入:abc def<回车>,则输出结果是:( )。
A) def def
B) abc def
C) abc d
D) d d

(50) 以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。
#include
void f(char p[][10],int n)
{ char t[20]; int i,j;
for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])<0)
{ strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{ char p[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”};int i;
f(p,5); printf(“%d\n”,strlen(p[0]));
}
程序运行后的输出结果是( )。
A) 6
B) 4
C) 5
D) 3

二、填空题(每空2分,共40分)
请将答案分别写在答题卡中序号为【1】至【20】的横线上,答在试卷上不得分。

1、计算机软件分为系统软件和应用软件,操作系统属于 [1] 。

2、在DOS环境下,代表键盘和显示器的设备文件名为 [2] 。

3、支持Internet基本服务的协议是 [3] 。

4、从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为 [4] 。

5、某微型机的运算速度为2MIPS,则该微型机每秒执行 [5] 条指令。

6、设有定义:int n,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf(“%d, ” [6] );
printf(“%d\n”, [7] 。);

7、以下程序运行后的输出结果是 [8] 。
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d,%d \n”,x,y);
}

8、以下程序运行后的输出结果是 [9] 。
main()
{ int x=15;
while(x>10 && x<50)
{ x++;
if(x/3){x++;break;}
else continue;
}
printf(“%d\n”,x);
}


9、有以下程序:
#include
main()
{ char c;
while((c=getchar( ))!=’?’) putchar(--c);
}
程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为 [10] 。

10、以下程序运行后的输出结果是 [11] 。
void fun(int x,int y)
{ x=x+y;y=x-y;x=x-y;
printf(“%d,%d,”,x,y); }
main()
{ int x=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}

11、以下函数的功能是计算s=1+ + +……+ ,请填空。
double fun(int n)
{ double s=0.0,fac=1.0; int i;
for(i=1,i<=n;i++)
{ fac=fac [12] ;
s=s+fac;
}
return s;
}


12 fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。
#include
#define N 100
int fun(int(*a)[N])
{ int row,col,max,min;
for(row=0;row{ for(max=a[row][0],col=1;colif( [13] )max=a[row][col];
if( row==0)min=max;
else if( [14] )min=max;
}
return min;
}

13、函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include
int sstrcmp(char *s,char *t)
{ while(*s&&*t&& *s== [15] )
{ s++;t++;}
return [16] ;
}

14、下面程序的运行结果是 [17] 。
#define N 10
#define s(x) x*x
#define f(x) (x*x)
main()
{ int i1,i2;
i1=1000/s(N); i2=1000/f(N);
printf(“%d %d\n”,i1,i2);
}

15、下面程序的运行结果是: [18] 。
void swap(int *a,int *b)
{ int *t;
t=a; a=b; b=t;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf(“%d%d\n”,*p,*q);
}

16、下面程序的运行结果是: [19] 。
typedef union student
{ char name[10];
long sno;
char sex;
float score[4];
}STU;
main()
{ STU a[5];
printf(“%d\n”,sizeof(a));
}

(17) 函数sstrcmp()的功能是对两个字符串进行比较。当s 所指字符串和t所指字符相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include <stdio.h>
int sstrcmp(char *s,char *t)
{while(*s&&*t&&*s==【19】)
{s++;t++; }
return 【20】;
}

㈨ C语言考试 急 谢谢!

1c 2b 3c 4b 5d 6c 7a 8b 9b 10a
11c 12a 13b 14d 15d 16a 17d 18b 19a 20b
在机器上运行了,没问题。

㈩ C语言考试题

12 . 变量a是int类型,并执行了语句:a=’A’+1.6;则正确的叙述是(D)。
A . a的值是字符C B . 不允许字符型和浮点型相加
C . a的值是浮点型 D . a的值是字符’A’的ASCII值加上1

13 . t为int类型,进入下面的循环之前,t的值为0。以下说法中正确的是( C )。
while(t=1) {……}
A.循环控制表达式的值为0 B.循环控制表达式的值为1
C.循环控制表达式不合法 D.以上说法都不对
14 . 若定义x为double型变量,则能正确输入x值的语句是。 C
A.scanf(“%f”,x); B.scanf(“%f”,&x);
C.scanf(“%lf”,&x); D.scanf(“%5.1f”,&x);
15 . 下面四个选项中,均是不合法的用户标识符的选项是 (B)。答案是C
A . A P_0 do B . float 1a0 _A
C . b-a goto int D . _123 temp INT
16 . 若变量c为char类型,能正确判断出c为小写字母的表达式是( D )。
A. ’a’<=c<=’z’ B. (c>=’a’)||(c<=’z’)
C. (‘a’<=c)and(‘z’>=c) D. (c>=’a’)&&(c<=’z’)
17、设变量a是整型,f是实型,i是双精度型,则表达式(10+'a'+i*f )的值的数据类型为( A )。
A、int B、float C、double D、不确定
18、以下说法正确的是( BD )。
A、 在循环语句中break和continue的用法完全一致
B、 在多层循环中,一个break 语句只能外跳一层
C、 在多层循环中,一个continue语句能结束该层循环
D、 break语句可以用于循环和switch语句外的其他语句
19、在scanf函数的格式控制中,格式说明的类型与输入项的类型应该一一对应匹配。如果类型不匹配,系统将( B )。
A.不予接受
B.并不给出出错信息,但得不到正确的数据
C.能接收到正确的数据
D.给出出错信息,不予接收输入
20、以下程序的输出结果是 (A) ;不知楼主为啥给出答案是A,显然是C吗!在C语言中,当输入设定位数不够时,自动的会按给定数的位数输出,不信你可以写程序试一下结果。
int a=1234;
printf(“%2d\n”,a);
A、12 B、34 C、1234 D、提示出错,无结果