c语言左对齐_C语言期末考试小帮助

C语言

今天是第14周了,大家的课程也少了不少,这也意味着考试即将来临,各位西农儿做好了考试的准备吗?我们也精心准备了几道历年的考题来帮助大家复习!

LV1      简单   

题目1

描述:编写程序计算(1+1/2+1/3+1/4+…+1/n)的结果,其中变量n从键盘输入,要求n是大于0的整数。

要求:

输入:n

输出:公式(1+1/2+1/3+1/4+…+1/n)的计算结果。

输入样例:10

输出样例:sum=2.928968

     这题是一道简单题,我们可以很轻易的看出需要一个循环来反复累加,并且需要一个判断语句来验证是否输入的小于零。

       下面是一个示例:

#include
int main( )
{
    int i=1, n;
    do
    {
        scanf("%d",&n);
    }
    while(n<0);
    double sum=0;
    while (i<=n)
    {
        sum+=1.0/i;
        i++;
    }
    printf("sum=%lf",sum);
    return 0;

}

可以看到,声明玩完变量后用do while循环确认输入为大于零的数,接下来用1.0将i转变成浮点型再加到sum中,就完成了题一。

LV2    普通

题目2

2、打印800到1000之内尾数为7的所有质数

描述:

打印800到1000之内尾数为7的所有质数。质数又称素数。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是一个质数除了1和它本身以外不再有其他的因数。

要求:

输出的数据左对齐,每两个数据之间间隔2个空格,且每输出5个数据换一行。

    可以看出,我们需要遍历从800到1000的数,先确定他是不是尾数为7,再确定他是不是质数,我们可以用一个循环方便的实现这一点。

代码如下:

#include

#include

int main()

{

int i, j, flag, count = 0 ;

for(i=800; i<=1000; i++)

{

if(i%10==7)

{

flag=0;

for(j=2; j<=i-1; j++)

{

if(i%j==0)

{

flag=1;

break;

}

}

if(flag == 0)

{

printf("%-5d", i);

count++;

if(count%5==0)

{

printf("\n");

}

}

}

}

return 0;

}

     可以看出我们的代码中设立了一个flag来确认这个数字是否是尾数为7的质数,并通过i的不断自增来实现800到1000的遍历。count来实现每5个数换行的操作,就完成了题二。

LV3    困难

题目3

描述:

从键盘上输入5条学生信息记录,利用函数指针实现这5个学生成绩的升序和降序排列,并输出排序后的结果,要求使用函数调用、函数指针以及结构体数组编程实现。

要求:

1、学生信息包括学号、姓名和成绩三部分,共有5个学生信息记录,要求使用结构体数组存储。

2、实现“大于”函数,该函数比较两个学生成绩的大小,若第一个学生成绩大于第二学生,则返回1,否则返回0,要求函数原型为:int greater(const void *p, const void *q)。

3、实现“小于”函数,该函数比较两个学生成绩的大小,若第一个学生成绩小于第二学生,则返回1,否则返回0,要求函数原型为:int lessthan(const void *p, const void *q)。

4、实现学生信息输入函数,该函数用于从键盘输入学生信息,函数原型为:void input_student(struct student a[], int n)。

5、实现学生信息输出函数,该函数用于向屏幕输出学生信息,函数原型为:void output_student(struct student a[], int n)。

       可以看出,这道题目明显比之前的题目复杂,但是也是C语言运用的结合,我们应该先定义结构体student再进行解题,大于函数与小于函数都是排序的灵活运用,所有代码最关键的是测试我们对结构体的理解。

代码如下:

#include
#include
#define N 5
struct student
{
    long num;
    char name[20];
    float score;
};
int greater(const void *p, const void *q);
int lessthan(const void *p, const void *q);
void input_student(struct student a[], int n);
void output_student(struct student a[], int n);
int main(void)
{
    struct student CIE_CS[N];
    int (*fun)(const void *p, const void *q);
    input_student(CIE_CS, N);
    printf("Sort results with descending order:\n");
    fun=greater;
    qsort(CIE_CS, N, sizeof(struct student), fun);
    output_student(CIE_CS, N);
    printf("Sort results with ascending order:\n");
    fun=lessthan;
    qsort(CIE_CS, N, sizeof(struct student), fun);
    output_student(CIE_CS, N);
    return 0;
}
int greater(const void *p, const void *q)
{
    const struct student *x=p;
    const struct student *y=q;
    return (x->score>y->score);
}
int lessthan(const void *p, const void *q)
{
    const struct student *x=p;
    const struct student *y=q;
    return (x->scorescore);
}
void input_student(struct student a[], int n)
{
    int i;
    for(i=0; i    {
        scanf("%ld", &a[i].num);
        scanf("%s", a[i].name);
        scanf("%f", &a[i].score);
    }
}
void output_student(struct student a[], int n)
{
    int i;
    for(i=0; i    {
        printf("%ld ", a[i].num);
        printf("%s ", a[i].name);
        printf("%f ", a[i].score);
        printf("\n");
    }

}

        正如我们刚刚所思考的一样,先声明结构体数组,这之中还声明了一个函数指针,再将greater和lessthan先后赋给该指针,先后进行排序并输出。

2fdaf4f001128419691d828ab109ed8d.gif

虽然这三题的难度有高有低,但是这些题目的宗旨都是考c语言的理解与运用,我们只要认真看书,了解书上的例题与讲解,就一定没有问题!最后祝各位C语言期末考试考出优异的成绩!

作者:唐津晨

审核:叶卓涵

指导:沈钊

4e4c3a1a85c06d32af2ae5e4d9b51c36.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值