题目汇编Chen.docx
《题目汇编Chen.docx》由会员分享,可在线阅读,更多相关《题目汇编Chen.docx(16页珍藏版)》请在冰豆网上搜索。
题目汇编Chen
二、程序填空题
1、下列程序的功能为:
接收键盘上的输入,直到按↙键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格,请填空使程序完整。
并提交提交t1.c文件和t1.exe文件
main()
{
charcx,front=’\0’;
while(
(1)!
=’\n’){
if(cx!
=’’)putchar(cx);
if(cx==’’)
if(
(2))
putchar((3))
front=cx;
}
#include"stdio.h"
main()
{
charcx,front='\0';
printf("012345678901234567890\n");
while((cx=getchar())!
='\n'){
if(cx!
='')putchar(cx);
if(cx=='')
if((cx=getchar())=='')
putchar(cx);
front=cx;
}
}
2.在字符串中删除所有数字字符,请填空使程序完整。
并提交提交t2.c文件和t2.exe文件
#include
#include"string.h"
intf(chars[])
{
inti=0;
__
(1)______;
while(s[i]!
='\0')
if(s[i]>='0'&&s[i]<='9')
{
strcpy(s+i,s+i+1);
count=count+1;
}
else
___
(2)____;
returncount;
}
main()
{intm;charstr[80];
gets(str);
__(3)_____;
printf(“删除数字字符后的字符串\n”);
puts(str);
printf(“所删除的数字字符个数:
%d\n",m);
}
#include
#include"string.h"
intf(chars[])
{
inti=0;
intcount=0;
while(s[i]!
='\0')
if(s[i]>='0'&&s[i]<='9')
{
strcpy(s+i,s+i+1);
count=count+1;
}
else
i++;
returncount;
}
main()
{intm;charstr[80];
gets(str);
m=f(str);
printf(“删除数字字符后的字符串\n”);
puts(str);
printf(“所删除的数字字符个数:
%d\n",m);
}
2.以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
请填空。
并提交提交t2.c文件和t2.exe文件
#include
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<_
(1)___;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={10,12,3,8,54,36,7,22,19,100};
inti,s=0;
___
(2)______;
for(i=0;i<10;i++)
printf("%5d",____(3)_);
}
#include
voidreverse(inta[],intn)
{inti,t;
for(i=0;i{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={10,12,3,8,54,36,7,22,19,100};
inti,s=0;
reverse(b,10);
for(i=0;i<10;i++)
printf("%5d",b[i]);
}
1、下列程序的功能为:
下面的程序是利用插入排序法对输入的N个整数按从小到大排序。
插入排序的基本思想:
将数组元素分为已排序和未排序部分;从第二个元素起,与前面已排好序的元素进行比较(第一次将a[1]与a[0]比较);若当前为i元素,则与前面已排好序的i-1个元素进行比较,若比j元素大,则插在j元素的后面,请填空使程序完整。
并提交提交t1.c文件和t1.exe文件
[代码]
#include
#defineN10
main()
{inti,j,temp,a[N];
for(i=0;ifor(i=1;i{
temp=;/*保留要插入的元素*/
for(j=i-1;&&j>=0;j--)
a[j+1]=a[j];/*找要插入的位置,同时将大于a[i]的元素往后移*/
j++;
a[j]=;
}
for(i=0;i}
#include
#defineN10
main()
{inti,j,temp,a[N];
for(i=0;ifor(i=1;i{
temp=a[i];/*保留要插入的元素*/
for(j=i-1;temp=0;j--)
a[j+1]=a[j];/*找要插入的位置,同时将大于a[i]的元素往后移*/
j++;
a[j]=temp;
}
for(i=0;i}
三、程序调试题(本大题3小题,每题10分,共30分)
1.程序调试题1(B_3_1.C)
调试要求:
下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括B_3_1.c文件和B_3_1.exe文件)保存。
下列程序的功能说明:
判定一数能否被另一数整除。
代码:
main()
{
intx,y;
printf(“inputx,y:
”);
scanf(“%d,%d”,x,y);
if(x/y)
printf(“NO”);
else
printf(“YES”);
}
main()
{
intx,y;
printf("inputx,y:
");
scanf("%d,%d",&x,&y);
if(x%y)
printf("NO\n");
else
printf("YES\n");
}
2.程序调试题2(B_3_2.C)
调试要求:
请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括B_3_2.c文件和B_3_2.exe文件)保存。
下列程序的功能说明:
统计字符串str中字符‘#’与数字字符的个数。
代码:
#include
main()
{
charstr[81];
intn1,n2;
gets(str);
for(i=0;str[i]!
=‘\0’;i++){
if(str[i]=‘#’)
n1++;
if(str[i]>=0&&str[i]<=9)
n2++;}
printf(“#=%d,digit=%d\n”,n1,n2);
}
#include
main()
{
charstr[81];
inti,n1=0,n2=0;
gets(str);
for(i=0;str[i]!
='\0';i++)
{
if(str[i]=='#')
n1++;
if(str[i]>='0'&&str[i]<='9')
n2++;}
printf("#=%d,digit=%d\n",n1,n2);
}
3、调试要求:
下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括B_3_3.c文件和B_3_3.exe文件)保存。
功能说明:
十进制数转换成十六进制数
#include
intDtoH(intn,charstr[])
{
inti,d;
for(i=0;n<=16;i++)
{
d=n%16;
if(d<=10)
str[i]='0'+d;
else
str[i]=’A’+d-10;
n/=16;
}
returni-1;
}
main()
{inti,k,n;charstr[80];
scanf("%d",&n);
k=DtoH(n,str);
for(i=k;i>=0;i--)
printf("%c",str[i]);printf("\n");
getch();
}
#include
intDtoH(intn,charstr[])
{
inti,d;
for(i=0;n!
=0;i++)
{
d=n%16;
if(d<10)
str[i]='0'+d;
else
str[i]='A'+d-10;
n/=16;
}
returni-1;
}
main()
{inti,k,n;charstr[80];
scanf("%d",&n);
k=DtoH(n,str);
for(i=k-1;i>=0;i--)
printf("%c",str[i]);printf("\n");
getch();
}
2.程序调试题2(B_3_2.C)
调试要求:
请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括B_3_2.c文件和B_3_2.exe文件)保存。
下列程序的功能说明:
下列程序的功能为:
查找100至999之间所有符合以下条件的数:
是另一数的平方;至少有两位数是相同的。
如数144,它是12的平方,其中有两位4。
代码:
main()
{
intn,m,a,b,c;
for(n=10;n<=31;n++)
{
m=n*n;
a=m/10;
b=m/10%10;
c=m/100%10;
if(a==b&&b==c&&a==c)
printf("%d",n);
}
}
#include"stdio.h"
main()
{
intn,m,a,b,c;
for(n=10;n<=31;n++)
{
m=n*n;
a=m%10;
b=m/10%10;
c=m/100%10;
if(a==b||b==c||a==c)
printf("%d",m);
}
}
调试要求:
请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括B_3_2.c文件和B_3_2.exe文件)保存。
下列程序的功能说明:
]以下程序输入整数n和n个整数,将n个整数向前移动一个位置,第一个数字移到最后,并输出移动位置后的结果。
该程序有错误,请改正。
/*如输入:
12345*/
/*则输出:
23451*/
代码:
#include
voidmain()
{
inta[100],n,i,t;
printf(“”)
scanf("%d",&n);
for(i=0;iscanf("%d",a[i]);
t=a[0];
for(i=0;ia[i]=a[i-1];
a[n-1]=t;
for(i=0;iprintf("%d\t",a[i]);
}
#include
voidmain()
{inta[100],n,i,t;
printf("Pleaseinputn:
\n");
scanf("%d",&n);
printf("Pleaseinputdata:
\n");
for(i=0;iscanf("%d",&a[i]);
t=a[0];
for(i=0;ia[i]=a[i+1];
a[n-1]=t;
for(i=0;iprintf("%d\t",a[i]);
}
2.程序调试题2(B_3_2.C)
调试要求:
请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括B_3_2.c文件和B_3_2.exe文件)保存。
下列程序的功能说明:
程序的功能是判断一个输入的正整数是否是回文数,如:
123321是回文数,12321也是回文数。
代码:
main()
{
inta[20],i,j;longd;
printf("\n");
scanf("%ld",&d);
for(i=0;d;d/=10,i++)
a[i]=d/10;
for(j=0;j
if(a[j]!
=a[i-1-j])
continue;
if(j>=i/2)
printf("is回文\n");
}_
#include
voidmain()
{
inta[20],i,j;longd;
printf("\n");
scanf("%ld",&d);
for(i=0;d;d/=10,i++)
a[i]=d%10;
for(j=0;j
if(a[j]!
=a[i-1-j])
break;
if(j>=i/2)
printf("is回文\n");
}
3、调试要求:
下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括B_3_3.c文件和B_3_3.exe文件)保存。
功能说明:
以下程序的功能:
利用公式求ex的值。
ex的数学公式是ex≈1+x+x2/2!
+x3/3!
+…+xn/n!
,设n=15
#include
doubleex(floatx)
{doubles=1.0,t=1.0;
inti=1;
while(i<=15)
{
t=x/i;
s=s+t;
i++;}
returns;
}
main()
{
floatx;
doublee;
scanf("%f",&x);
e=ex(x,e);
printf("e(%f)=%f\n",e);
}
3.
请提交B_3_3.c文件和B_3_3.exe文件
#include
doubleex(floatx)
{doubles=1.0,t=1.0;
inti=1;
while(i<=15)
{t=t*x/i;
s=s+t;
i++;}
returns;}
main()
{floatx;
doublee;
scanf("%f",&x);
e=ex(x);
printf("e(%f)=%f\n",x,e);
}
四、编程题(本大题2小题,每题20分,共40分)
1.编程题1(B_4_1.C)
编程要求:
请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括B_4_1.C文件和B_4_1.exe文件)。
功能说明:
编写一个程序,输入一行字符,统计其中的英文字母个数(统计字母频数)
如输入:
abc12345Abc
则输出:
6
#include
main()
{inti,len,s=0;
chara[20];
clrscr();
gets(a);
puts(a);
len=strlen(a);
for(i=0;i<=len-1;i++)
{if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z')
s=s+1;
}
printf("s=%d",s);
}
2.编程题2(B_4_2.C)
编程要求:
请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括B_4_2.C文件和B_4_2.exe文件)。
百元买百鸡问题。
假定小鸡每只5角,公鸡每只2元,母鸡每只3元。
现有100元钱要买100只鸡,列出所有可能的购鸡方案。
voidmain()
{
intx,y,z;
for(x=0;x<=33;x++)
for(y=0;y<=50;y++)
{z=100-x-y;
if((3*x+2*y+0.5*z)==100)
printf("%9d,%9d,%9d\n",x,y,z);
}
}
1.编程题1(B_4_1.C)
编程要求:
请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括B_4_1.C文件和B_4_1.exe文件)。
功能说明:
最多从键盘输入80个字符,遇到回车键就结束,将输入的字符串按奇偶位置拆分,奇数位字符在前偶数位字符在后重新组成新的字符串输出,例如输入:
ab12cd3456fg,则经过程序处理后输出:
a1c35fb2d46g。
#include"stdio.h"
#include"string.h"
main()
{
chars[100],d[100],c[100];
inti,j,k;
i=j=k=0;
while((s[i]=getchar())!
='\n')
{if((i+1)%2)d[j++]=s[i++];
elsec[k++]=s[i++];
}
d[j]=c[k]='\0';
strcat(d,c);
strcpy(s,d);
puts(s);
}
2、输入1个整数,则输出小于该整数的所有素数。
如输:
:
9则输出1,2,3,5,7
#include
main()
{
intxi,j,temp;
scanf("%d",&x);
for(i=1;i<=x;i++)
{temp=0;
for(j=2;j<=i-1;j++)
{
if(i%j==0)
{
temp=1;
break;
}
}
if(temp==0)printf("theprimeis%d",i);
}
}