大学计算机基础期末考试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

猜你喜欢

转载自blog.csdn.net/STL_CC/article/details/107043718