最新c语言全真模拟题及答案.docx
《最新c语言全真模拟题及答案.docx》由会员分享,可在线阅读,更多相关《最新c语言全真模拟题及答案.docx(20页珍藏版)》请在冰豆网上搜索。
最新c语言全真模拟题及答案
一、填空题
第1题
以下do-while语句中循环体的执行次数是【3】.
a=10;
b=0;
do{b+=2;a-=2+b;}while(a>=0);
第2题
设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【10】.
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
第3题
定义inta[2][3];表示数组a中的元素个数是【6】个.
第4题
函数的【递归】调用是一个函数直接或间接地调用它自身.
第5题
设a=3,b=4,c=4,则表达式a+b>c&&b==c&&a||b+c&&b==c的值为【1】.
第6题
intx=4,y=z=2;z=x==(y=z);则z的值为【4】.
第7题
intx=2,y=3,z=4;则表达式x+y&&z的值为【1】.
第8题
若有以下定义,则计算表达式y+=y-=m*=y后的y值是【—16】.
intm=5,y=2;
二、单项选择
第1题
为表示关系x≥y≥z,应使用C语言表达式
A:
(x>=y)&&(y>=z)
B:
(x>=y)AND(y>=z)
C:
(x>=y>=z)
D:
(x>=z)&(y>=z)
第2题
C语言函数内定义的局部变量的隐含存储类别是
A:
static
B:
auto
C:
register
D:
extern
第3题
若有说明inta[3][4];则对a数组元素的正确引用是()。
A:
a[2][4]
B:
a[1,3]
C:
a[1+1][0]
D:
a
(2)
(1)
第4题
从循环体内某一层跳出,继续执行循环外的语句是
A:
break语句
B:
return语句
C:
continue语句
D:
空语句
第5题
下列()表达式的值为真,其中a=5;b=8;c=10;d=0
A:
a*2>8+2
B:
a&&d
C:
(a*2-c)||d
D:
a-b第6题
以下程序的执行结果是________.
main()
{intw=1,x=2,y=3,z=4;
w=(wx:
w;
w=(wy:
w;
w=(wz:
w;
printf("%d",w);}
A:
1
B:
2
C:
3
D:
4
第7题
若变量已正确定义,执行语句scanf("%d,%d,%d",&k1,&k2,&k3);时,___是正确的输入
A:
2030,40
B:
203040
C:
20,3040
D:
20,30,40
第8题
在C语言中,一维数组的定义方式为:
类型说明符数组名()。
A:
[常量表达式]
B:
[整型表达式]
C:
[整型常量]或[整型表达式]
D:
[整型常量]
第9题
以下不能正确进行字符串赋初值的语句是()。
A:
charstr[5]="good!
";
B:
charstr[]="good!
";
C:
char*str="good!
";
D:
charstr[5]={'g','o','o','d',0};
第10题
C语言中,逻辑"真"等价于
A:
大于零的数
B:
非零的数
C:
大于零的整数
D:
非零的整数
三、程序(程序填空、程序设计)
第1题
功能:
统计一个字符串中的字母、数字、空格和其它字符的个数。
#include"stdio.h"
main()
{
chars1[80];inta[4]={0};
intk;
/***********SPACE***********/
voidfun(chars[],intb[]);
gets(s1);
/***********SPACE***********/
fun(s1,a);
puts(s1);
for(k=0;k<4;k++)
printf("%4d",a[k]);
}
voidfun(chars[],intb[])
{
inti;
for(i=0;s[i]!
='\0';i++)
if('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z')
b[0]++;
/***********SPACE***********/
elseif('0'<=s[i]&&s[i]<='9')
b[1]++;
/***********SPACE***********/
elseif(s[i]=='')
b[2]++;
else
b[3]++;
}
第2题
功能:
输入三个整数x,y,z,请把这三个数由小到大输出。
#include
voidmain()
{
intx,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{t=x;x=y;y=t;}/*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;}/*交换z,y的值*/
printf("smalltobig:
%d%d%d\n",x,y,z);
}
第3题
功能:
输出100到1000之间的各位数字之和能被15整除的所有数,
输出时每10个一行。
#include
voidmain()
{
intm,n,k,i=0;
for(m=100;m<=1000;m++)
{
【k=0】;
n=m;
do
{
k=k+n%10;
n=n/10;
}
【while(n!
=0)】;
if(k%15==0)
{
printf("%5d",m);i++;
if(i%10==0)printf("\n");
}
}
}
第4题
学生变量定义如下:
structstudent
{
charnumber[6];
charname[6];
intscore[3];
}stu[2];
功能:
输入学生成绩并显示。
#include
structstudent
{
charnumber[6];
charname[6];
intscore[3];
}stu[2];
voidoutput(structstudentstu[2]);
voidmain()
{
inti,j;
/***********SPACE***********/
for(i=0;i<2;________________)
{
printf("请输入学生%d的成绩:
\n",i+1);
printf("学号:
");
/***********SPACE***********/
scanf("%s",________________.number);
printf("姓名:
");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("成绩%d.",j+1);
/***********SPACE***********/
scanf("%d",________________.score[j]);
}
printf("\n");
}
output(stu);
}
voidoutput(structstudentstu[2])
{
inti,j;
printf("学号姓名成绩1成绩2成绩3\n");
for(i=0;i<2;i++)
{
/***********SPACE***********/
________________("%-6s%-6s",stu[i].number,stu[i].name);
for(j=0;j<3;j++)
printf("%-8d",stu[i].score[j]);
printf("\n");
}
}
答案:
【1】i++或++i或i=i+1
【2】&stu[i]
【3】&stu[i]
【4】printf
第5题
功能:
5个学生选修4门课程,计算个人与各科平均成绩及全班平均成绩,并在屏幕上显
示出来。
#defineM5/*定义符号常量人数为5*/
#defineN4/*定义符号常量课程为4*/
#include"stdio.h"
main()
{
inti,j;
voidaver(floatsco[M+1][N+1]);
staticfloatscore[M+1][N+1]={{78,85,83,65},{88,91,89,93},{72,65,54,75},{86,88,75,60},{69,60,50,72}};
aver(score);
clrscr();
printf("学生编号课程1课程2课程3课程4个人平均\n");
for(i=0;i{
printf("学生%d\t",i+1);
/***********SPACE***********/
for(j=0;j<________________;j++)
printf("%6.1f\t",score[i][j]);
printf("\n");
}
for(j=0;j<8*(N+2);j++)
printf("-");
printf("\n课程平均");
for(j=0;jprintf("%6.1f\t",score[i][j]);
printf("\n");
getch();
}
voidaver(floatsco[][N+1])
{
inti,j;
/***********SPACE***********/
for(i=0;i<________________;i++)
{
for(j=0;j{
sco[i][N]+=sco[i][j];
sco[M][j]+=sco[i][j];
sco[M][N]+=sco[i][j];
}
/***********SPACE***********/
sco[i][N]________________N;
}
for(j=0;j/***********SPACE***********/
sco[M][________________]/=M;
sco[M][N]=sco[M][N]/M/N;
}
答案:
【1】N+1或1+N或5
【2】M或5
【3】/=
【4】j
第6题
功能:
计算平均成绩并统计90分以上人数。
#include"stdio.h"
voidmain(){
intsum=0;
intscore[10];
intcount=0;
inti=0;
for(i=0;i<10;i++)
{
printf("请输入第%d个人的成绩",i+1);
scanf("%d",&scors[i]);
sum+=score[i];
if(score[i]>90)
{
count++;
}
}
printf("平均分%f,有%d个90分以上。
",(sum*1.0)/10,count);
}
第7题
功能:
写一个函数,求一个字符串的长度,在main函数中输入字
符串,并输出其长度。
#include
#include
voidmain()
{
intf(charstr[]);
intl;
charstr[10];
gets(str);
l=f(str);
printf("%d",l);
}
intf(charstr[])
{
intz;
z=strlen(str);
return(z);
}
第8题
找出x,y,z三个数中的最大、最小值
#include
intmain()
{
inti,n,max,min;
for(i=0;i<3;i++)
{
scanf("%d",&n);
if(i==0)//初始化max,min
max=min=n;
if(maxmax=n;
if(min>n)//最小值
min=n;
}
printf("maxnumber%dminnumber%d\n",max,min);//输出最大最小值
}
第9题
功能:
删除一个字符串中的所有数字字符。
#include
voiddelnum(char*s)
{
inti,j;
/***********SPACE***********/
for(i=0,j=0;【s[i]!
=】'\0';i++)
/***********SPACE***********/
if(s[i]<'0'【||】s[i]>'9')
{
/***********SPACE***********/
【s[j]=s[i]】;
j++;
}
s[j]='\0';
}
main()
{
char*item;
printf("\ninputastring:
\n");
item="";
gets(item);
/***********SPACE***********/
【delnum(item)】;
printf("\n%s",item);
}
第10题
功能:
从键盘为一维整型数组输入10个整数找出其中最小的数并输出。
#include"stdio.h"
intfun(intx[],intn)
{
/**********Program**********/
intmin;
inti;
min=x[0];
for(i=0;i{
ifmin>x[i];
min=x[i];
}
returnmin;
/**********End**********/
}
main()
{
inta[10],i,min;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
min=fun(a,10);
printf("%d\n",min);
}
第11题
功能:
从键盘输入一个三位数,判断是否"水仙花数"。
说明:
所谓"水仙花数"是指一3位数,其各位数字立方和
等于该数本身。
intfun(intn)
{
inta,b,c;
a=n%10;
b=n/10%10;
c=n/100;
if(a*a*a+b*b*b+c*c*c==n)
return1;
elsereturn0;
}
第12题
功能:
判断m是否为素数。
#include
#include
voidmain()
{inti;
intfun(int);
for(i=2;i<=200;i++)
if(fun(i))printf("%4d",i);
getch();
}
intfun(intn)
{inti,t;
t=sqrt(n);
for(i=2;i<=t;i++)
if(n%i==0)return0;
return1;
}
第13题
功能:
求1到w之间的奇数之和。
(w是大于等于100小于等
于1000的整数)
inti;
longintsum=0;
for(i=1;i<=w;i++)
if(i%2!
=0)sum=sum+i;
returnsum;
第14题
功能:
编写函数fun计算下列分段函数的值:
x^2+x+6x<0且x≠-3
f(x)=x^2-5x+60≤x<10且x≠2及x≠3
x^2-x-1其它
fun(doublex)
{
if(x<0&&x!
=-3)
{
returnx*x+x+6;
}
elseif(x<10&&x!
=2&&x!
=3)
{
returnx*x-5*x+6;
}
elsereturnx*x-x-1;
}
第15题
功能:
求1到100之间的偶数之积。
mislead误导misledmisledvoidsum()
{
inti,sum=0;
for(i=1;i<=100;i++)
{
if(i%2==0)
sum=sum+i;
}
printf("sum=%d",sum);
}
main()
{
sum();
}
第16题
saw锯sawedsawed/sawn功能:
求一组数中大于平均值的数的个数。
let让letlet例如:
给定的一组数为1,3,6,9,4,23,35,67,12,88时,函
数值为3。
tell告诉toldtold
spread传播spreadspreadintal=0;
for(inti=0;ial+=a[i];
intav=al/N;
intnum=0;
for(intj=0;jif(av//al最后为个数
swing摇摆swungswung第17题
功能:
输入m的值,计算如下公式的值:
y=1/2+1/4+
dive跳水,俯冲dived/dovedived1/6+...+1/2m。
例如:
若m=9,则应输出:
1.414484
cut割cutcut#include
doublefun(intm)
{
inti;
doubled;
for(i=1,d=0;i<=m;i++)
d+=0.5/i;
returnd;
}
intmain()
{
printf("m=9result=%lf\n",fun(9));
return0;
}
may可以might×功能:
编写函数fun求1!
+2!
+3!
+……+n!
的和
become变成becamebecome
inti;
doublesum=0;
doublejc=1;
for(i=1;i<=n;i++)
{
jc=jc*i;
sum=sum+jc;
}
if(n==0)sum=1;
returnsum;