估計每一場考試題目都不一樣,但是還是有一定模擬參考價值的,可以當作模擬考試做一做。
每道題後面附帶檢查數據,便於大家檢查自己的程序是否正確
程序完善題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