C语言试题1.docx
《C语言试题1.docx》由会员分享,可在线阅读,更多相关《C语言试题1.docx(17页珍藏版)》请在冰豆网上搜索。
C语言试题1
1.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用
八进制表示的字符常量'\101'是(a)。
A、字符A
B、字符a
C、字符e
D、非法的常量
2.下列程序段的输出结果为(c)。
floatk=0.8567;printf("%4.1f%%",k*100);
A、85.6%
B、85.6%%
C、85.7%
D、.857
3.下面的scanf函数输入数据,使得a=10,b=15,s1='S',s2='s',x1=1.5,x2=-3.75,x3=67.8,
正确的键盘输入方法是(a).
(用"[CR]"表示回车,U表示空格)
main()
{inta,b;
floatx1,x2,x3;
chars1,s2;
scanf("%5d%5d%c%c%f%f%*f%f",&a,&b,&s1,&s2,&x1,&x2,&x3);
4.C语言的if语句中,用作判断的表达式为(a)。
A、任意表达式
B、算术表达式
C、逻辑表达式
D、关系表达式
5.以下程序的输出结果是:
(a)
main()
{intm=5;
if(m++>5)printf("%d\n",m);
elseprintf("%d\n",m--);
}
A、6
B、5
C、7
D、4
6.以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);(c)。
A、3次
B、循环次数不定
C、4次
D、是无限循环
7.以下程序的执行结果是(b)。
main()
{intnum=0;
while(num<=2){num++;printf("%d,",num);}}
A、0,1,2
B、1,2,3,
C、1,2,3,4,
D、1,2,
8.以下不能正确进行字符串赋初值的语句是(a)。
A、charstr[5]="good!
";
B、charstr[5]={'g','o','o','d'};
C、char*str="good!
";
D、charstr[]="good!
";
9.函数调用:
strcat(strcpy(str1,str2),str3)的功能是(d)。
A、将串str1复制到串str2中后再连接到串str3之后
B、将串str2连接到串str1之后再将串str1复制到串str3中
C、将串str1连接到串str2之后再复制到串str3之后
D、将串str2复制到串str1中后再将串str3连接到串str1之后
10.以下函数的类型是(c)。
fff(floatx)
{
return5;
}
A、void类型
B、与参数x的类型相同
C、int类型
D、无法确定
11.设有如下函数
fac(intx)
{
floaty=1.0;
return(x*y);
}
则函数的类型为(a).
A、int型
B、float型
C、无法确定
D、void型
12.设有宏定义#definePI3.14和#defineS(r)PI*r*r,则S
(2)的值为(b).
A、6.28
B、12.56
C、3.14
D、9.42
13.下列关于指针定义的描述,错误的是(a)。
A、指针是一种变量,该变量用来存放某个变量的值
B、指针是一种变量,该变量用来存放某个变量的地址值
C、指针变量的类型与它所指向的变量类型一致
D、指针变量的命名规则与标识符相同
14.以下程序的输出结果是(a).
main()
{charstr[]="ABCD",*p=str;printf("%d\n",*(p+3));}
A、68
B、不确定的值
C、字符D的地址
D、0
15.对结构体类型的变量的成员的访问,无论成员是何种数据类型都可使用
的运算符是(b)。
A、&
B、.
C、*
D、->
1.在C语言中,各种类型的整型数据在内存中都占2个字节。
W
2.若有inti=10,j=2;则执行完i*=j+8;后ⅰ的值为28。
W
3.格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.W
4.C语言程序中输入一个中间带有空格的字符串时,可以用scanf函数.W
5.设d=1,e=2,f=3,则逻辑表达式!
(d+e)+f&&e+f*2的值为0.W
6.已知a=4,b=2,c=3,d=5,表达式a>b?
a:
cc:
d的值为4.R
7.语句if(a>b)printf("%d",a);elseprintf("%d",b);可以用语句printf("%d",a>b?
a:
b);取代.R
8.在do-while循环中,任何情况下都不能省略while.R
9.break语句能够终止当前进行的多层循环.W
10.continue语句对于while和do-while循环来说,意味着转去计算While表达式.R
11.对静态变量的初始化不是在编译阶段完成的.W
12.gets函数是用来输入一个字符的函数.W
13.设有数组定义:
chararray[]="hello";则数组array所占的内存空间为5字节.W
14.当全局变量与局部变量同名时,在局部变量的作用域范围之内,局部变量起作用.R
15.C语言中,通过函数调用只能获得一个返回值.W
16.数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.W
17.被包含文件与其所在的文件(即用#include命令的源文件),在预编译后,成为同一个文件.R
18.如果需要向函数内传递多个值,用数组和用指针效果是一样的.R
19.两个类型相同的结构体变量,可以互相赋值.R
20.C语言中,在打开文件时,必须说明文件的使用方式,"wb+"只能用于文件的写.W
1.intx;x=-3+4%-5*3,则x的值为__9___.
2.下列语句输出的结果是__-1___.
unsignedintb=65535;printf("%d",b);
3.x=5,y=8时,c语言表达式5-2>=x-1<=y-2的值是_1____.
4.设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是___3__.
for(x=0,y=0;y!
=123&&x<3;x++)
scanf("%d",&y);
5.连接字符串的函数是__strcat___,只写函数名即可.
6.从函数的形式上看,函数分为无参函数和__有参函数___两种类型.
7.定义int*p,a[5];将数组a的首地址赋给指针变量p的语句是__
p=a
p=&a[0]
p=a;
p=&a[0];
8.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是__34___。
structstud{charname[10];floats[4];doubleave;}a,*p;
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数fun(str,i,n),从字符串str中删除第i个
字符开始的连续n个字符(注意:
str[0]代表字符串
的第一个字符)。
------------------------------------------------*/
#include"stdio.h"
#include"string.h"
main()
{
charstr[81];
inti,n;
voidfun(charstr[],inti,intn);
voidTestFunc();
printf("请输入字符串str的值:
\n");
scanf("%s",str);
printf("你输入的字符串str是:
%s\n",str);
printf("请输入删除位置i和待删字符个数n的值:
\n");
scanf("%d%d",&i,&n);
while(i+n-1>strlen(str))
{
printf("删除位置i和待删字符个数n的值错!
请重新输入i和n的值\n");
scanf("%d%d",&i,&n);
}
fun(str,i,n);
printf("删除后的字符串str是:
%s\n",str);
TestFunc();
}
voidfun(charstr[],inti,intn)
{
/*********Begin**********/
while(str[i+n-1])
{
str[i-1]=str[i+n-1];
i++;
}
str[i-1]='\0';
/**********End**********/
}
voidTestFunc()
{
FILE*IN,*OUT;
chari[200];
/*charo[200];*/
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
fscanf(IN,"%s",i);
fun(i,2,8);
fprintf(OUT,"%s\n",i);
fclose(IN);
fclose(OUT);
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),
tt指向一个M行N列的二维数组,求出二维数组每列
中最小元素,并依次放入pp所指一维数组中。
二维
数组中的数已在主函数中赋予。
------------------------------------------------*/
#include"conio.h"
#include"stdio.h"
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
/*********Begin**********/
inti,j;
for(j=0;j{
pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];
}
/**********End**********/
}
main()
{
intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}};
voidNONO();
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;i{
for(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:
\n");
for(k=0;kprintf("\n");
NONO();
}
voidNONO()
{
inti,j,array[3][4],p[4];
FILE*rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
fscanf(rf,"%d",&array[i][j]);
fun(array,p);
for(j=0;j<4;j++)
{
fprintf(wf,"%7d",p[j]);
fprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求1到20的阶乘的和。
------------------------------------------------------*/
#include"stdio.h"
voidfun()
{
intn,j;
floats=0.0,t=1.0;
for(n=1;n<=20;n++)
{
/**********ERROR**********/
s=1;
for(j=1;j<=n;j++)
/**********ERROR**********/
t=t*n;
/**********ERROR**********/
s+t=s;
}
/**********ERROR**********/
printf("jiecheng=%d\n",s);
}
main()
{
fun();
}
1.t=1;
t=1.0;
2.t=t*j;
t*=j;
t=j*t;
3.s=s+t;
s+=t;
s=t+s;
4.printf("jiecheng=%f\n",s);
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
编写一个函数,该函数可以统计一个长度为3的字符串在另
一个字符串中出现的次数。
例如:
假定输入的字符串为:
asdasasdfgasdaszx67asdmklo,字符
串为:
asd,则应输出n=4。
------------------------------------------------------*/
#include"stdio.h"
#include"string.h"
#include"conio.h"
intfun(char*str,char*substr)
{
/**********ERROR**********/
inti,n=0
/**********ERROR**********/
for(i=0;i<=strlen(str);i++)
if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2]))
/**********ERROR**********/
++i;
returnn;
}
main()
{
charstr[81],substr[4];
intn;
printf("输入主字符串:
");
gets(str);
printf("输入子字符串:
");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf("n=%d\n",n);
}
1.inti,n=0;
2.for(i=0;i<=strlen(str)-3;i++)
for(i=0;i3.n++;
n+=1;
n=n+1;
++n;
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
计算平均成绩并统计90分以上的人数,输入的成绩为负时程序结束。
-------------------------------------------------------*/
#include"stdio.h"
main()
{
intn,m;floatgrade,average;
/***********FILL***********/
average=n=m=_____;
while
(1)
{
scanf("%f",&grade);
/***********FILL***********/
if(_______)break;
n++;
average+=grade;
/***********FILL***********/
if(grade<90)_____;
m++;
}
if(n)printf("%f\n%d\n",average/n,m);
}
1.0
0.0
2.grade<0
0>grade
3.continue
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
求出二维数组中的最大元素值。
-------------------------------------------------------*/
#include"stdio.h"
/***********FILL***********/
intmax_value(intm,intn,int______)
{
inti,j,max;
max=array[0][0];
for(i=0;ifor(j=0;j/***********FILL***********/
if(maxreturn(max);
}
main()
{
inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
/***********FILL***********/
printf("maxvalueis%d\n",_____);
}
1.array[][4]
array[3][4]
2.max=array[i][j]
3.max_value(3,4,a)