大學計算機基礎期末考試C語言

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

程序完善題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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章