大一期末C语言编程题题库解析

编程题

1.求1!+2!+3!+...+20!的和.

#include

void main()

{

  int s=0,x=1;   //s第一次参与计算需要赋初值为0,x则需赋初值为1;

  for (int i = 1; i <=20; i++)

  {

   x=x*i;    //从1开始累乘,到i结束

   s=s+x;    //s累加x;

  }

  printf("sum=%d",s);

  getchar();

}

2.求一个有序数列 2/1,3/2,5/3,8/5,13/8,21/13 前20项的和


image
#include

void main()

{

  int i,n=20,a=2,b=1,s=0,t;

  for ( i = 1; i <=n; i++)

  {

    s=s+a/b;   //开始计算累加a/b,第一个值是2/1;

    t=a;     //a把自身的值赋给t

    a=a+b;    //新a的值为a+b,赋给自身,刷新a的值

    b=t;     //t是a的旧值,现在赋给b

  }

  printf("sum=%d",s);

  getchar();

}

3.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

image

#include
int age(int x)
{
    if(x==1)return 10;
        x= age(x-1)+2;
        return x;
}
void main()
{

    printf("sum=%d",age(5));
    getchar();
}

4.一个班级有25名学生,请从键盘随机输入这25名学生的某一门功课的成绩,请编程:
(一)找出该班级学生此门功课的最高分和最低分,并记录和最高分和最低分成绩的学生的编号;
(二)将班级学生此门功课的成绩按照从高到低进行排序,并输出


image
#include
/*98 97 96 86 85 20 83 87 84 
83 74 99 100 30 89 54 87 89
 98 74 89 88 87 45 10*/
(测试数据)
void main()
{
     int a[25],i,j,t,max,min,max_xuhao,min_xuhao;
    printf("输入25个成绩\n");
    for (i = 0; i < 25; i++)
    {
        scanf("%d",&a[i]);
        getchar();//实现输入清空;
    }
 /************************以上代码实现输入*****************************************************/
    max=a[0];               //此步是关键,把第一个值赋给max;
    max_xuhao=0;
    for ( i = 0; i <25 ; i++)
    {
        if(a[i]>max)        //开始从i=0判断每一个元素是否大于max
        {
            max=a[i];       //如果a[i]大于max,那他就成了max
            max_xuhao=i;    //记录最大值的序号
        }
    }
    printf("max=%d,序号=%d\n",max,max_xuhao);
    min=a[0];
    min_xuhao=0;
 /**********************以上代码实现找到最大值及其序号******************************************/    
    for ( i = 0; i <25 ; i++)
    {
        if(a[i]

5.使用指针交换两个变量的值。


image
#include
void main()
{
    int a=4,b=5,*pa,*pb;    //定义变量a,b和指针变量pa,pb;
    pa=&a;pb=&b;            //把a的地址赋给pa,b的地址赋给pb,注意取地址符号&                  
    int t=*pa;              //
    *pa=*pb;                //
    *pb=t;                  //以上代码实现交换
    printf("a为:%d\tb为:%d",a,b);
    getchar();
}

6.使用指针对三个数进行从小到大的排列


image
#include
void swap(int *m,int *n)    //定义swap函数,形参为指针变量m,n
{
    if(*m>*n)               //
    {
        int t=*m;           //
        *m=*n;              //
        *n=t;               //
    }
 /*****以上实现交换*****************************************/
}
void main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    swap(&a,&b);            //a,b比较并交换
    swap(&b,&c);            //b,c比较并交换
    swap(&a,&c);            //c,a比较并交换
 /****以上调用三次swap函数实现a,b,c的互相比较和交换**********/
 /****注意传入的是地址*************************************/
    printf("%d %d %d",a,b,c);
    getchar();
}

7.使用指针将某银行一周的钱收纳汇总

#include
/*
78943.1 2156.54 4654.4 4687.45 78965.4 1354.5 4656.8
*/
//以上为测试数据
void main()
{
    float a[7];
    printf("依次输入七天的银行钱的收纳情况");
    for (int i = 0; i < 7; i++)
    {
        scanf("%f",&a[i]);
    }
     /**以上实现输入7个数据************************/
    float sum=0,*p=a;
     /**sum需要参与首次计算,初始化为0,
      同时定义一个指针变量p,值为a的首地址**********/
    for (int i = 0; i < 7; i++)
    {
        sum+=*p;    //累加指针p所指元素的值
        p++;        //指针右移一位
    }
    printf("sum=%.2f",sum);
    getchar();
}

8.使用指针实现冒泡排序

image
#include
void main()
{
    int a[10]={6,1,8,9,4,3,2,7,5,0},*p;
    p=a;
    int i,j,t;
    for(i=0;i<10;i++)
    {
        for(j=0;j<10-1-i;j++)
        {
            if(*(p+j)>*(p+j+1))
            {   
                t=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=t;
            }
        }
    }
    for (int i = 0; i < 10; i++)
    {
        printf("%d\t",*(p+i));
    }
    getchar();
}

9.找出二维数组中每行最大的数值进行求和

//8,4,3,-8,-4,-6,-1,-2,2,4,6,9
#include
#define N 4                     //定义常数N,值为4
void max(int (*a)[N],int m)     //定义max函数   指针数组的名字可以看成是 指向指针的 指针                   
{
    int value,i,j,sum=0;
    for(i=0;ivalue) //
            {                       
                value=*(*(a+i)+j); 
            }
        }                   
        printf("第%d行:最大数是:%d\n",i,value);
        sum=sum+value;
    }
    printf("\n");
    printf("每行中最大数相加之和是:%d\n",sum);
}
void main()
{
    int a[3][N],i,j;
    int (*p)[N];
    p=&a[0];
    printf("please input:\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j

10.求新入学班级新生的总人数

#include
void main()
{  
    int i=0,n,sum=0;
    int a[20];                  //最大班级数设置为20
    
    printf("请输入班级的个数:");
    scanf("%d",&n);
    for ( i = 0; i 

11.有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。编写一个函数input,用来输入一个学生的数据记录。

编写一个函数print,打印一个学生的数据记录。在主函数调用这两个函数,读取N条记录输入,再按要求输出。N<100。

/*
2106040235 刘金鹏 98 95 97
2106040237 刘金莲 97 94 95
*///以上为测试数据
#include
#include
struct STUDENT              //定义一个STUDENT型的结构体,包含以下类型数据
{
    int xuehao;
    char name[20];
    float sa;
    float sb;
    float sc;
}stu[100];                  //定义一个名为stu的STUDENT型的数组,最大可容纳100个元素

void input (int n)
{
    for (int i = 0; i 

12.设计一个圣诞树代码(滑稽)


#include 
 
int main(void)
{
    int i, j, x;
    int n = 0;
    // a是间隔填充物,这里用空白填充;b是雪花,这里用*表示;c是圣诞树的填充,用'0'表示 
    char a = ' ', b = '*', c = '0';
    // 第一部分,输出树叶
    for (x = 0; x < 3; x++) {
        // 想让圣诞树变高可以将4这个值调高 
        for (i = 0; i < x + 6; i++) {
            for (j = 0; j < 80; j++) {
                if ((j <= 25 + n) && (j >= 25 - n)) {
                    printf("%c", c);
                } else if ((j % (n + 6) == n) && ( (j > 25 + n) || (j < 25 - n))) {
                    printf("%c", b);
                } else {
                    printf("%c", a);
                }  
            }
            printf("\n");
            n = n + 2;
        }
        n = n - 2 * (x + 2);
    }
    // 第二部分,输出树干,高度为5 
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 80; j++) {
            if (j >= 22 && j <= 28) {
                printf("%c", c);
            } else if ((j % (n + 6) == n) && ((j > 25 + n) || (j < 25 - n))) {
                printf("%c", b);
            } else {
                printf("%c", a);
            }   
        }
        n = n + 2;
        printf("\n");
    }
    // 第三部分,输出地面,高度为3 
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 80; j++) {
            if (j % 2 == 0) {
                printf("%c", b);
            } else {
                printf("%c", a);
            }
                
        }
        printf("\n");
    }
    getchar ();
    return 0;
}

你可能感兴趣的:(大一期末C语言编程题题库解析)