C笔试样题da 1.docx
《C笔试样题da 1.docx》由会员分享,可在线阅读,更多相关《C笔试样题da 1.docx(29页珍藏版)》请在冰豆网上搜索。
![C笔试样题da 1.docx](https://file1.bdocx.com/fileroot1/2022-12/28/dcd33a70-2d03-42e7-be76-4824e710ee01/dcd33a70-2d03-42e7-be76-4824e710ee011.gif)
C笔试样题da1
笔试样题1
一、程序填空题(每题12分,共36分。
将答案填写在相应的下划线处)
1.以下函数的功能是删除字符串s中的所有数字字符,请填空。
voiddele(char*s)
{
intn=_________,i;//0
for(i=0;s[i];i++)
if(________)//s[i]<’0’||s[i]>’9’
s[n++]=s[i];
s[n]=________;//’\0’
}
2.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下。
1
11
121
1331
14641
说明:
数据构成规律是第0列元素和主对角线元素均为1,其余元素为其左上方和正上方元素之和,数据的个数每行递增1。
#defineN6
voidYangHui(intx[N][N])
{
inti,j;
x[0][0]=1;
for(i=1;i{
x[i][0]=________=1;//x[i][i]
for(j=1;________;j++)//j
x[i][j]=___________;//x[i-1][j-1]+x[i-1][j]
}
}
3.以下程序是将从键盘输入的字符串逆序存放,然后输出。
(如:
输入ABCD1A,输出A1DCBA)
#include
#include
voidmain()
{
chars[81],t;
inti,j,n;
n=strlen(s);
__________________//i=0;
j=n-1;
while(_______________)//i{
t=s[i];s[i]=s[j];s[j]=t;
i++;
_________//j--;
}
printf(“%s”,s);
}
二、阅读程序题(每题8分,共32分。
将答案填写在相应的下划线处)
1.以下程序的运行结果是______________。
#include“stdio.h”
voidmain()
{
inti,j;
for(i=0;i<=3;i++)
{
for(j=0;j
printf(“%d”,i);
printf(“*\n”);
}
}
结果:
*
1*
22*
333*
2.以下程序的运行结果是______________。
#include“stdio.h”
voidmain()
{
char*s={“Computer-Level-Test”},*p;
for(p=s;*p!
=’\0’;p++)
{
if(*p==’-‘)
printf(“\n”);
else
if(*p<=’Z’&&*p>=’A’)
printf(“%c”,*p+’a’-‘A’);
else
printf(“%c”,*p);
}
}
结果:
computer
level
test
3.以下程序的运行结果是______________。
#include“stdio.h”
intf(intc)
{
staticinta=10;
intb=++a;
return(a+b+c);
}
voidmain()
{
printf(“%d”,f(f(5)));
}
结果:
51
4.以下程序的运行结果是______________。
#include“stdio.h”
voidf(int*x,inty)
{
--*x;
y++;
}
voidmain()
{
intx=3,y=0;
f(&x,y);
printf(“%d,%d”,x,y);
}
结果:
2,0
三、程序设计题(每题16分,共32分)
1.编程输出100以内所有6的倍数及它们的和。
#include
voidmain()
{
ints=0,i;
for(i=1;i<100;i++)
if(i%6==0)
s=s+i;
printf(“s=%d”,s);
}
2.已知字符串chars[50]=”Iamstudent.”,请编写程序将字符a插入到student之前,结果为”Iamastudent.”。
(说明:
要求使用循环结构)。
#include
#include
voidmain()
{
chars[50]=”Iamstudent.”;
inti,n;
n=strlen(s);
for(i=n;i>=3;i--)
s[i+1]=s[i];
s[3]=’a’;
printf(“s=%s”,s);
}
笔试样题2(2015下)
一、程序填空题(每题12分,共36分。
将答案填写在相应的下划线处)
1.以下程序计算度输出1—100之间所有是3或7的倍数之和,请填空。
#include
voidmain()
{
inti,s;
_______=0;//s
for(i=1;i<=100;i++)
if(_________________)//i%3==0||i%7==0
s=s+i;
printf(“s=%d\n”,_________);//s
}
2.以下程序输出图形。
12345
2345
345
45
5
请填空:
#include
voidmain()
{
inti,j;
for(i=1;_______;i++)//5
{
for(j=i;j<=5;j++)
printf(“%d”,_________);//j
printf(“________________”);//\n
}
}
3.以下程序利用指针输出一个字符串中所有数字字符,请填空。
#include
voidmain()
{
chars[]=”A1B2C3D4E5F6G7H8I9”;
char*p;
for(p=s;________!
=’\0’;p++)//*p
if(__________________)//*p>=’0’&&*p<=’9’
printf(“%c”,____________);//*p
}
二、阅读程序题(每题8分,共32分。
将答案填写在相应的下划线处)
1.以下程序运行后输入2,程序的输出结果是______________。
#include“stdio.h”
voidmain()
{
intcolor;
printf(“Pleaseinputcolor:
”);
scanf(“%d”,&color);
switch(color)
{
case0:
printf(“black”);
case1:
printf(“blue”);
case2:
printf(“green”);
case3:
printf(“red”);break;
default:
printf(“othercolor”);
}
}
结果:
greenred
2.以下程序的运行结果是______________。
#include“stdio.h”
voidmain()
{
inti,j=5,s;
s=0;
for(i=1;i<=5;i++)
s=s+i+j--;
printf(“%d”,s);
}
结果:
30
3.以下程序的运行结果是______________。
#include“stdio.h”
voidmain()
{
inti;
chars[]=”AaBbCcDdEeFfGgHh”;
charc;
i=0;
while(s[i]!
=’\0’)
{
c=s[i];
s[i]=s[i+1];
s[i+1]=c;
i=i+2;
}
printf(“%s”,s);
}
结果:
aAbBcCdDeEfFgGhH
4.以下程序的运行结果是______________。
#include“stdio.h”
intf(intn){
if(n==0||n==1)return1;
elsereturnn+f(n-1);
}
voidmain(){
printf(“%d\n”,f(0));
printf(“%d\n”,f
(1));
printf(“%d\n”,f(5));
}
结果:
1
1
15
三、程序设计题(每题16分,共32分)
1.编写程序,输入一个十进制整数,判断其奇偶性,如果是奇数输出1,否则输出0。
#include
voidmain(){
intx;
scanf(“%d”,&x);
if(x%2==0)
printf(“0”);
else
printf(“1”);
}
2.使用循环语句设计程序,删除字符串”0010110100100111”中所有字符’0’并输出。
要求:
(1)程序应输出11111111
(2)字符数组s最后的存储状态为:
‘1’
‘1’
‘1’
‘1’
‘1’
‘1’
‘1’
‘1’
‘\0’
……
程序基本框架如下:
#include
voidmain(){
chars[]=”0010110100100111”;
/*以下是要编写的程序段*/
inti=0,j=0;
while(s[i]){
if(s[i]!
=’0’)
{s[j]=s[i];
j++;
}
i++;
}
s[j]=’\0’;
puts(s);
}
笔试样题3(2016上)
一、程序填空题(每题12分,共36分。
将答案填写在相应的下划线处)
1.整型变量a,b,c存放着三个整数,下面程序的功能为输出其中最小的数,请填空。
#include
voidmain(){
inta,b,c,min;
scanf(“%d%d%d”,&a,&b,&c);
if(a>b)
min=________;//b
else
________;//min=a
if(_________)//min>c
min=c;
printf(“%d\n”,min);
}
2.下面程序的功能是从键盘输入学生的课程成绩,当输入负数时则程序结束。
统计并输出全班的人数和平均分,请填空。
#include
voidmain(){
floatgrade,average,sum=0;/*grade存放输入的成绩,sum保存成绩之和,
average保存平均成绩*/
intn=0;
scanf(“%d”,&grade);
while(___________){//grade>=0
n++;
sum+=__________;//grade
scanf(“%f”,&grade);
}
average=___________;//sum*1.0/n
printf(“%d,%f\n”,n,average);
}
3.字符串的有效长度就是其有效字符的个数,即数组中第1个’\0’前面的字符个数。
下面程序功能为计算给定字符串的有效长度,请填空。
#include
intmain()
{
inti,len;
charstr[20]=”china”;
for(i=0;*(___________)!
=’\0’;i++)//str+i
___________;//len=i
len=___________;//len=len+1
printf(“len=%d\n”,len);
return0;
}
二、阅读程序题(每题8分,共32分。
将答案填写在相应的下划线处)
1.有以下程序,当输入负数时则程序结束。
#include“stdio.h”
voidmain()
{
inta;
scanf(“%d”,&a);
while(a>0)
{
switch(a)
{
case5:
printf(“%d\n”,a+1);
case6:
printf(“%d\n”,a+2);break;
case7:
printf(“%d\n”,a+3);
default:
printf(“%d\n”,a+4);
}
scanf(“%d”,&a);
}
}
运行时,若输入571<回车>(表示空格),则输出结果是______________
结果:
6
7
10
11
5
2.以下程序的运行后的输出结果是______________。
#include“stdio.h”
intf()
{
intx=2;
x+=2;
returnx;
}
voidmain()
{
ints=1,i;
for(i=1;i<=2;i++)s+=f();
printf(“%d\n”,s);
}
结果:
9
三、程序设计题(每题16分,共32分)
笔试样题4(2016下)
一、程序填空题(每题12分,共36分。
将答案填写在相应的下划线处)
1.以下程序将依次输出“12345654321”,请填空。
#include
voidmain()
{
inta=12345,b=54321,_________;//c
charch=’A’;
c=a/________;//10
printf(“%4d%d”,c,5);//输出12345
printf(“%d”,ch);
c=b%______;//10000
printf(“%4d”,c);//输出4321
}
2.以下程序输入3个整型数并输出其中的中间数,如输入5、3、4,将输出4。
请填空。
#include
voidmain()
{
inta,b,c;
intmax,min;
printf(“inputa,b,c:
”);
scanf(“%d%d%d”,___________);//&a,&b,&c//顺序输入a,b,c的值
if(a>b)
{max=a;min=b;}
else
{max=b;min=a;}
if(c>max)
printf(“%d”,max);
elseif(cprintf(“%d”,_______);//c
else
printf(“%d”,_______);//min
}
3.以下程序输出一个字符串中所有字母,其他字符不输出。
如果是小写字母,输了,时转换成大写字母。
请填空。
#include
voidmain()
{
inti;
chars[]=”CProgramming.”;
charc,*p=&c;
i=_______;//0
while(s[i]!
=’\0’)
{
*p=s[i];
if(c>=’A’&&c<=’Z’)
printf(“%c”,______);//*p
elseif(c>=’a’&&c<=’z’)
printf(“%c”,______);//*p-32
i++;
}
}
二、阅读程序题(每题8分,共32分。
将答案填写在相应的下划线处)
1.以下程序运行结果是______________。
#include“stdio.h”
voidmain()
{
inta=3,b=5,c=4,t;
if(a
if(bif(a
printf(“a=%d,b=%d,c=%d,t=%d”,a,b,c,t);
}
结果:
a=5,b=4,c=3,t=3
2.以下程序的运行结果是______________。
#include“stdio.h”
voidmain()
{
inti;
inta[5]={1,2,3,4,5},t=0;
for(i=0;i<5;i++)
{
switch(a[i]%3)
{
case0:
t=t+a[i];break;
case1:
t=t-a[i];break;
default:
t=t+1;
}
}
printf(“i=%d,t=%d”,i,t);
}
结果:
i=5,t=0
3.以下程序的运行结果是______________。
#include“stdio.h”
intmax(inta,intb)
{
if(a>b)
returna;
else
returnb;
}
voidmain()
{
inti,m;
inta[5]={212,134,423,545,356};
for(i=0;i<2;i++)
m=max(a[i],a[i+1]);
printf(“i=%d,m=%d”,i,m);
}
结果:
i=2,m=423
4.以下程序的运行结果是______________。
#include“stdio.h”
intf(intn)
{
if(n==1)return1;
elsereturnn+f(n-1);
}
voidmain()
{
inti;
for(i=1;i<=4;i++)
printf(“%d”,f(i));
}
结果:
13610
三、程序设计题(每题16分,共32分)
1.编程输出100以内所有含数字4的偶数的和。
#include"stdio.h"
voidmain(){
inti,sum=0;
for(i=1;i<=20;i++)
if(i%10==4||i/10==4)
sum=sum+i;
printf("%d",sum);
}
2.由于雾霾红色预警,车辆将限号出行,规定如下:
(1)尾号是0,2,4,6,8,双日出行,例如:
AZ7Y68,WJ-2126
(2)尾号是其他数字、字母或符号的,单日出行,例如:
AZ7Y69,WJ-2127,B3300B
请完善下面的程序以实现上面描述的功能。
要求根据输入的车牌号分别输出“双日出行”或“单日出行”。
#include
voidmain()
{
chars[10];//用于存储车牌号
inti;
printf("Inputs:
");
scanf("%s",s);//输入车牌号
i=0;
while(s[i]!
='\0')//请在下面编写和完善程序
i++;
i--;
if(s[i]=='0'||s[i]=='2'||s[i]=='4'||s[i]=='6'||s[i]=='8')
printf("双日出行\n");
else
printf("单日出行\n");
}
笔试样题5(2017上)
一、程序填空题(每题12分,共36分。
将答案填写在相应的下划线处)
1.以下程序从键盘输入一个整数,输出其对应的英文星期单词,若输入的整数在1到7之外,则输出“Error!
”,请填空。
#include
voidmain()
{
intn;
printf(“Inputn:
”);
scanf(“%d”,__________);//&n
switch(n)
{
case1:
printf(“Monday\n”);break;
case2:
printf(“Tuesday\n”);break;
case3:
printf(“Wednesday\n”);break;
case4:
printf(“Thursday\n”);break;
case5:
printf(“Friday\n”);break;
case6:
printf(“Saturday\n”);break;
case7:
printf(“Sunday\n”);break;
________:
printf(“Error!
\n”);//default
}
}
2.以下程序输出一维数组中的最大元素及其下标值,请填空。
#include
intsearch(inta[],intn)/*求最大元素的下标*/
{
inti,max;
max=_______;//0
for(i=1;i{
if(a[i]>a[max])
max=_______;//i
}
returnmax;
}
voidmain()
{
inta[10]={13,1,-5,4,9,100,-8,7,-6,2};
intmax;
_______=search(a,10);//max
printf(“最大值:
%d,下标:
%d\n”,a[max],max);
}
3.以下程序定义求n!
的递归函数f(),并调用函数f()求2!
+3!
+4!
+5!
+6!
的值,请填空。
#include
intf(intn)
{
if(n==1||n==0)
return________;//1
else
returnn*f(n-1);
}
voidmain()
{
inti,s;
s=_______;//0
for(i=2;i<=6;i++)
s+=f(i);
printf(“2!
+3!
+4!
+5!
+6!
=%d\n”,__________);//s
}
二、阅读程序题(每题8分,共32分。
将答案填写在相应的下划线处)
1.以下程序的运行结果是______________。
#include“stdio.h”
voidmain()
{
inta=3,b=-3,c;
if(a
c=0;
elsec=-1;
printf(“c=%d\n”,c);
if(a
{
if(3==c)
a=a+b;
elsea=a-b;
}
printf(“a=%d,b=%d,c=%d”,a,b,c);
}
结果:
c=-1
a=3,b=-3,c=-1
2.以下程序的运行结果是______________。
#include“stdio.h”
voidmain()
{
inti,j;
ints=0;
for(i=1;i<5;i++)
{
j=i*10+6;
printf(“%d”,j);
if(0==j%4)
s=s+j;
}
printf(“\ns=%d\n”,s);
}
结果:
16263646
s=52
3.以下程序的运行结果是______________。
#include“stdio.h”
voidmain()