估计每一场考试题目都不一样,但是还是有一定模拟参考价值的,可以当作模拟考试做一做。
每道题后面附带检查数据,便于大家检查自己的程序是否正确
程序完善题A
打开testa.c文件答题。判断输入的年份是否为闰年
// 程序功能:判断平闰年。
// 其中,从键盘输入年份year,判断它是否为闰年。已知符合下列条件之一者是闰年:(1)能被4整除,但不能被100整除;(2)能被400整除。
// 要求:请在指定范围内修改、补充语句(不能修改、增加、删除输入、输出语句),使程序运行能够完成指定的功能。
#include <stdio.h>
int main()
{
int year, flag;
scanf("%d", &year);
//修改范围--开始
if ((year%400==0)||(year%4==0&&year%100!=0))
flag = 1;
else
flag = 0;
if(flag)
//修改范围--结束
printf("%d 是闰年!\n", year);
else
printf("%d 不是闰年!\n", year);
return 0;
}
测试数据
闰年:2004 2008 2400 2800
非闰年:2001 2019 2100 2200
程序完善题B
打开testb.c文件答题。计算t=1-1/2+1/3-1/4+…+1/m的值。
// 程序功能:计算t=1-1/2+1/3-1/4+……+1/m的值。
// 其中,m从键盘输入。如输入5,则应输出0.783333。
// 要求:请在指定范围内修改、补充语句(不能修改、增加、删除输入、输出语句),使程序运行能够完成指定的功能。
#include <stdio.h>
double Fun(int m);
int main()
{
int m;
scanf("%d", &m);
printf("%lf\n", Fun(m));
return 0;
}
double Fun(int m)
{
double t = 1.0;
int i;
//修改范围--开始
int k;
for (i = 2; i <= m; i++)
{
if(i%2==0)
{
k=-i;
}
else
{
k=i;
}
t += 1.0 / k;
}
return t;
//修改范围--结束
}
测试数据
1 1.000000
2 0.500000
3 0.833333
5 0.783333
程序完善题C
打开testc.c文件答题。所给程序通过自定义函数,将指定字符串a复制到字符串b中,再输出字符串b。其中,字符串a从键盘输入。
// 下列程序通过自定义函数实现将指定字符串A复制到字符串B中,再输出字符串B.
// 字符串A从键盘输入.
//要求:请在指定范围内修改、补充语句(不能修改、增加、删除输入、输出语句)
#include <stdio.h>
#define N 20
void Mystrcpy(char strb[], char stra[]);
int main()
{
char a[N], b[N];
fgets(a, sizeof(a), stdin);
Mystrcpy(b, a);
puts(b);
return 0;
}
void Mystrcpy(char strb[], char stra[])// 用字符数组作参数实现字符串复制
{
//修改范围--开始
int i;
for(i=0;i<N;i++)
{
strb[i]=stra[i];
}
//修改范围--结束
}
测试数据
123456 123456
wowo我 wowo我
12345678901234567890 1234567890123456789
程序设计题A
一球从100米高度自由落下,每次落地后反弹回原高度的一半再落下,请编写一个程序teste.c,计算并输出它在第n次落地时共经过了多少米。
注意:
(1)如果输入不合法(n必须满足:1≤n≤20),则printf(“ERROR”)
(2)输入格式为:scanf("%d",&n)
(3)如果经过的路程存放在s中,则输出printf("%.2f\n",s)
#include<stdio.h>
int main()
{
int n;
float s,t;
scanf("%d",&n);
if(n<1||n>20)
{
printf("ERROR");
return 0;
}
if(n==1)
{
s=100;
}
else
{
int i;
s=100;
t=100;
for(i=1;i<n;i++)
{
s+=t;
t/=2;
}
}
printf("%.2f\n",s);
return 0;
}
测试数据
1 100.00
2 200.00
3 250.00
0 ERROR
21 ERROR
程序设计题B
勾股数又名毕氏三元数。凡是可以构成一个直角三角形三边的一组正整数,称之为勾股数,即满足aa+bb=c*c的a,b,c一组勾股数(a<b<c)。
请编写一个程序testf.c,计算并输出n(含n)以内有多少组勾股数。
注意:
(1)如果输入不合法(n必须满足:10≤n≤500),则printf(“ERROR”)
(2)输入格式为:scanf("%d",&n)
(3)如果用sum表示勾股数的组数,则输出格式为 printf("%d\n",sum)
#include<stdio.h>
int main()
{
int n,a,b,c,i,flag,sum=0;
int pf[500+50];
scanf("%d",&n);
if(n<10||n>500)
{
printf("ERROR");
return 0;
}
for(i=0;i<=520;i++)
{
pf[i]=i*i;
}
for(b=2;b<=n;b++)
{
for(a=1;a<b;a++)
{
flag=0;
c=a*a+b*b;
for(i=b;i<=n;i++)
{
if(pf[i]==c)
{
flag=1;
//printf("%d %d %d %d\n",a,b,i,c);
break;
}
}
sum+=flag;
}
}
printf("%d\n",sum);
return 0;
}
测试数据
10 2
500 386
9 ERROR
501 ERROR