全国计算机等级考试二级C语言程序设计上机高频考题Word格式文档下载.docx
《全国计算机等级考试二级C语言程序设计上机高频考题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言程序设计上机高频考题Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。
voidmain()
{inti,a,n,t=0;
/*****1*****/
s=0;
//ints=0;
scanf("
a,&
n);
for(i=1;
i<
=n;
i++){
/*******2******/
t=t*10+i;
//t=t*10+1;
s=s+t;
}
s=s*a;
s);
3.
在考生目录下,有Modify.c程序,该程序中"
运行时输入n,输出n各位数字之和(如n=1308则输出12,n=-3204
则输出9)。
math.h>
{intn,s=0;
scanf("
%d"
n=fabs(n);
/********1*******/
while(n>
1){//n
s=s+n%10;
/********2******/
n=n%10;
//n=n/10;
}
printf("
4.
输入1个字符串,输出其中所出现过的大写英文字母。
如运行时
输入字符串"
FONTNAMEandFILENAME"
,应输出"
FONTAMEIL"
。
#include<
{charx[80],y[26];
inti,j,ny=0;
gets(x);
for(i=0;
x[i]!
='
\0'
;
i++)
if(x[i]>
A'
x[i]<
Z'
){
for(j=0;
j<
ny;
j++)
/*****1*****/
if(y[i]==x[j])continue;
//if(y[j]==x[i])break;
if(j==ny){y[ny]=x[i];
ny++;
}
/*****2*****/
26;
i++)//i<
ny
%c"
y[i]);
printf("
\n"
);
5.
/*****N****/"
的下一行
中有错误,请改正(注意:
输入x、eps,计算多项式1-x+x*x/2!
-x*x*x/3!
+...的和直到末项的
绝对值小于eps为止。
voidmain()
{floatx,eps,s=1,t=1,i=1;
%f%f"
x,&
eps);
do{/*****1****/
t=-t*x/++i;
//t=-t*x/i++;
s+=t;
/*****2****/
}while(fabs(t)>
=eps)//少;
%f\n"
6.在考生目录下,有Modify.c程序,该程序中"
的下
一行中有错误,请改正(注意:
分别统计字符串中所有英文字母中的各元音字母个数。
ctype.h>
{chara[80];
intn[5]={0},i;
gets(a);
for(i=0;
a[i]!
=’\0’;
i++)
switch(tolower(a+i)){//switch(tolower(a[i]))
case'
a'
:
n[0]++;
break;
e'
n[1]++;
i'
n[2]++;
o'
n[3]++;
/*****2*****/
U'
n[4]++;
//‘u’
5;
i++)printf("
n[i]);
7.在考生目录下,有Modify.c程序,该程序中"
不得加行、减行、加句、减句,否则后果自负)
输入n(0<
10)后,输出1个数字金字塔。
如输入n为4,
则输出:
1
222
33333
4444444
{inti,j,n;
n);
//&
n
for(i=1;
for(j=1;
=n+1-i;
j++)
putchar('
'
for(j=1;
=2*i-1;
putchar((char)(i+48));
/******2*****/
putchar(\n);
//‘\n’
8.在考生目录下,有Modify.c程序,该程序中"
的下一行中
运行时输入10个数,然后分别输出其中的最大值、最小值。
{floatx,max,min;
/********1*******/
for(inti=1;
=10;
i++){//C中不能这样用,改为:
inti;
for(i=1;
i<
%f"
x);
/*******2********/
if(i=1){max=x;
min=x;
}//i==1
if(x>
max)max=x;
if(x<
min)min=x;
%f,%f\n"
max,min);
9.在考生目录下,有Modify.c程序,该程序中"
运行时输入n,输出n的所有质数因子(如n=13860,则输出2、2、3、3、
5、7、11)。
voidmain()
{intn,i;
/******1******/
i=1;
//i=2;
while(n>
1)
if(n%i==0)
{printf("
%d\t"
i);
n/=i;
else
/********2*******/
n--;
//i++;
10.在考生目录下,有Modify.c程序,该程序中“/*****N*****/”的下一行中有错误,
不得加行、减//行、加句、减句,否则后果自负)。
输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的
大写字母后,输出该字符串。
string.h>
stdlib.h>
charstr;
//char*str
str=(char*)malloc(n);
gets(str);
strlen(str);
i++)//i=0
if(str[i]>
str[i]<
z'
)str[i]=str[i]-32;
puts(str);
(二)
上机填充题
1.在考生目录下,有Modify.c程序,该程序中"
____N____"
是根据程序功能需要
填充部分,请完成程序填充(注意:
输入m、n(要求输入数均大于0),输出它们的最大公约数。
____1___);
//m<
0||n<
0
for(____2____;
n%k!
=0||m%k!
k--);
//k=m<
n?
m:
2.在考生目录下,有Modify.c程序,该程序中"
是根据程序功能需要填充
部分,请完成程序填充(注意:
函数f将1个整数首尾倒置,程序输出结果应为"
54321-76543"
intf(intn)
{intm,y=0;
m=fabs(n);
while(m!
=0){
y=y*10+m%10;
1;
//m=m/10
if(n>
=0)returny;
else2;
//return(-y);
voidmain()
{printf("
f(12345));
f(-34567));
3.3.
输入1个整数后,输出该数的位数若输入3214则输出4,输入-23156
则输出5)。
{intn,k=0;
while
(1){//n%10
k++;
2;
//n=n/10
4.在考生目录下,有Modify.c程序,该程序中"
是根据程序功能需要填充部分,请完成程序填充(注意:
运行时输出下列结果。
abcdefg
abcde
abc
a
{inti,j;
chark;
=4;
i;
j++)putchar('
1;
//k=’a’
for(j=9-2*i;
j>
0;
j--){
k=(char)k++;
printf(“%c”,2);
//k-1
putchar('
\n'
5.在考生目录下,有Modify.c程序,该程序中"
部分,请完成程序填充(注意:
输入整数n(n>
0)求m,使得2的m次方小于或等于n、2的m+1次方大于或等于n。
voidmain()
{inti=0,t=1,n;
while(_____1________);
//scanf(“%d”,&
n),n<
=0
while(!
(t<
=n&
t*2>
=n)){
_____2_____//t=t*2;
i++;
对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。
#definef(x)x*x-5*x+sin(x)
voidmain()//运行结果:
49.455978
{inti;
floatmax;
_____1_____//max=f
(1);
for(i=2;
______2______//if(f(i)>
max)max=f(i);
max);
是根据程序功能需要填充
函数f除去数组中的负数,输出结果为:
1346
voidf(int*a,int*m)
{inti,j;
*m;
if(a[i]<
0){
for(j=i--;
*m-1;
j++)a[j]=a[j+1];
_____1_____;
//*m=*m-1;
{inti,n=7,x[7]={1,-2,3,4,-5,6,-7};
_______2_______;
//f(x,&
for(i=0;
n;
i++)
%5d"
x[i]);
8.
输入n和平面上n个点的坐标,计算各点间距离的总和。
#definef(x1,y1,x2,y2)sqrt(pow(x2-x1,2)+pow(y2-y1,2))
1//#include<
malloc.h>
或#include<
{float*x,*y,s=0;
inti,j,n;
scanf("
x=(float*)malloc(sizeof(float)*n*2);
y=x+2;
//n
i++)scanf("
x+i,y+i);
n-1;
for(j=i+1;
s+=f(x[i],y[i],x[j],y[j]);
%.2f\n"
9.
调用函数f,求二维数组a中全体元素之和。
floatf
(1)//float**x,intm,intn//运行结果:
78.00
{floaty=0;
inti,j;
m;
i++)for(j=0;
y=y+*(*(x+i)+j);
returny;
{floata[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*b[3];
inti;
3;
i++)b[i]=2;
a[i][0]或a[i]
f(b,3,4));
10.
调用函数f,求a数组中最大值与b数组中最小值之差。
floatf(float*x,intn,intflag)//运行结果:
11
{floaty;
inti;
//y=x[0]
for(i=1;
if(flag*x[i]>
flag*y)
y=x[i];
returny;
{floata[6]={3,5,9,4,2.5,1},b[5]={3,-2,6,9,1};
f(a,6,1)-2));
//f(b,5,-1)
11.
调用函数f计算代数多项式
1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时的值。
floatf(float,float*,int);
//运行结果:
81.930756
{floatb[5]={1.1,2.2,3.3,4.4,5.5};
f(1.7,b,5));
floatf
(1)//floatx,floata[],intn
{floaty=a[0],t=1;
i++){
t=t*x;
y=y+a[i]*t;
2;
//returny
12.
调用函数f用以求1元2次方程x*x+5*x-2=0的实根。
//运行结果:
0.37-5.37
intf(floata,floatb,floatc,float*x1,float*x2)
{if(b*b-4*a*c<
0)1;
//return1;
*x1=(-b+sqrt(b*b-4*a*c))/2/a;
*x2=(-b-sqrt(b*b-4*a*c))/2/a;
return0;
}
{floatu1,u2;
floata=1,b=5,c=-2;
if(f
(2))printf("
实数范围内无解\n"
//f(a,b,c,&
u1,&
u2)
elseprintf("
%.2f%.2f\n"
u1,u2);
13.
在考生目录下,有Modify2.c程序,该程序中"
函数f将数组循环左移k个元素,输出结果为:
4567123
voidf(int*a,intn,intk)
{inti,j,t;
k;
1;
//t=a[0]
for
(2)//j=1;
j++
a[j-1]=a[j];
a[n-1]=t;
{inti,x[7]={1,2,3,4,5,6,7};
f(x,7,3);
7;
printf("
}
14.
不得加行、减行、加句、减句,否则后果自负)。
调用函数f,将字符串中的所有字符逆序存放,然后输出。
例如,输入字符串为"
123456"
,则程序的输出结果为"
654321"
string.