惊!c语言上机编程题目?

我是小咲,不知道各位是否大一的时候初学c语言对于编程题目会深恶痛绝?

现在来拯救你了,尝试看懂下面我写的代码……应该不会有太多mistake吧,至少编译通过了呢

没有对自己要求这么低好吗?言归正传,这些就是上机学校编程题库中的部分题了 

  • 程序填空题(不要增加或删除行,只需要把下划线去掉,在下划线位置上填入相应内容,并成功运行
  • 功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。
  • #include <conio.h>

    #include <stdio.h>

    /***********SPACE***********/

    int fun(int k)

    {

       int m = 0, mc = 0;

       /***********SPACE***********/

       while (k >= 2 && mc<10)

       {

         /***********SPACE***********/

         if (k % 13 == 0 || k % 17 == 0)

         {

            m = m + k;

            mc++;

         }

         k--;

       }

       /***********SPACE***********/

       printf("%d",m);

    }

    main()

    {

       printf("%d\n", fun(500));

       system("pause");

    }

  • 功能:计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。
  • #include <stdio.h>

    #include <math.h>

    int fun(int  high)

    {

       int sum = 0, n = 0, j, yes;

       /***********SPACE***********/

       while ((high >= 2) && (n<10))

       {

         yes = 1;

         for (j = 2; j <= high / 2; j++)

            /***********SPACE***********/

         if (high%j==0)

         {

            yes = 0;

            break;

         }

         if (yes)

         {

            sum += high;

            n++;

         }

         high--;

       }

       /***********SPACE***********/

       return sum;

    }

     

    main()

    {

       printf("%d\n", fun(100));

       system("pause");

    }

  • 功能:编写函数fun求20以内所有5的倍数之积。
  • #include <stdio.h>

    #define N 20

    int fun(int m)

    {

         /**********FOUND**********/

         int s = 1, i;

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

               /**********FOUND**********/

         if (i%m ==0)

               /**********FOUND**********/

               s *= i;

         return s;

    }

     

    main()

    {

         int sum;

         sum = fun(5);

         printf("%d以内所有%d的倍数之积为: %d\n", N, 5, sum);

    }二、程序设计题根据题目要求编写程序并成功运行,其它各题格式与1题格式相同

  • 功能:用辗转相除法求两个整数的最大公约数。
  •  

    ------------------------------------------------*/

     

    #include<stdio.h>

    int gcd(int n, int m)

    {

       /**********Program**********/

       int i=n%m;

       while (i&&m&&n){

       n = m%i;

       if (n == 0) return i;

       m = i%n;

       if (m == 0)return n;

       i = n%m;

       if (i == 0) return m;

      

       }

       return m;

       /**********  End  **********/

    }

     

    main()

    {

       int n, m, result;

       scanf("%d%d", &n, &m);

       result = gcd(n, m);

       printf("the gcd is %d\n", result);

       system("pause");

    }

  • 要求键盘输入一个数,编写函数判断它的奇偶性
  • #include <stdio.h>

    #include <math.h>

    int fun(n){

       if (n % 2 != 0)

         return 1;

       return 0;

    }

    int main(){

       int n,flag;

       scanf("%d", &n);

       flag=fun(n);

       if (flag == 1){

         printf("奇数");

       }

       else

         printf("偶数");

       system("pause");

       return 0;

    }

  • 输入两正整数,编写函数求其最小公倍数
  • #include<stdio.h>

    int gcd(int n, int m)

    {

       /**********Program**********/

       int i=n%m;

       while (i&&m&&n){

       n = m%i;

       if (n == 0) return i;

       m = i%n;

       if (m == 0)return n;

       i = n%m;

       if (i == 0) return m;

      

       }

       return m;

       /**********  End  **********/

    }

     

    main()

    {

       int n, m, result;

       scanf("%d%d", &n, &m);

       result = m*n/gcd(n, m);

       printf("the gcd is %d\n", result);

       system("pause");

    }

     

     

  • 编写函数判断一个数是否是完数,并调用函数找出1000内的所有完数
  • #include<stdio.h>

    int main()

    {

         int sum; //i控制数范围,j控制除数范围,sum记录累加因子之和

         for (int i = 2; i <= 1000; i++)

         {

               //每次循环时sum的恒为0

               sum = 0; 

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

               {

                    //判断因子如果是纳闷算入总和

                    if (i%j == 0) 

                         sum += j;

               }

               //满足条件输出

               if (sum == i) 

                    printf("perfect number:%d\n", i);

         }

         system("pause");

         return 0;

    }

  • 编写并调用函数找出1000内的所有水仙花数
  • #include <stdio.h>

    #include <math.h>

    int fun(int n){

         if (n == (n / 100)*(n / 100)*(n / 100) +

               (n % 10)*(n % 10)*(n % 10) +

               ((n / 10) % 10)*((n / 10) % 10)*((n / 10) % 10))

         {

               return 1;

         }

         return 0;

    }

    int main(){

         for (int i = 100; i < 1000; i++){

               int temp = fun(i);

               if (temp){

                    printf("%d\n", i);

               }

         }

         system("pause");

         return 0;

    }

  • 要求输入一个数,编写函数求它的逆序数
  • #include <math.h>

    #include <stdio.h>

    typedef long long ll;

     

    int a[100], ans[100];

     

    ll solve(int l, int r)

    {

       int mid = (l + r) >> 1;

       if (l == r)

       {

            return 0;

       }

       ll num = 0;//逆序对的个数

     

       num += solve(l, mid);

       num += solve(mid + 1, r);

       for (int i = l, j = mid + 1, k = 0; i <= mid || j <= r; k++)

       {

            if (i>mid)   ans[k] = a[j++];

            else if (j>r)    ans[k] = a[i++];

            else if (a[i] <= a[j]) ans[k] = a[i++];

            else

            {

                  //出现逆序对

                 ans[k] = a[j++];

                 num += mid - i + 1;//B序列中大于a[j]的个数

            }

       }

       for (int i = 0; i <= (r - l); i++)

            a[l + i] = ans[i];

       return num;

    }

     

    int main()

    {

       int n;

       scanf("%d", &n);

       for (int i = 0; i < n; i++)

            scanf("%d", a + i);

       printf("%lld\n", solve(0, n - 1));

       system("pause");

       return 0;

    }

     

  • 输出一个菱形
  • #include <math.h>

    #include <stdio.h>

    #define N 10

    void print(int n){

         for (int i = 0; i < n;i++)

         printf(" ");

    }

    int main(){

         int n = N;

         for (int i = 0; i < N; i++){

               print(n--);

               for (int j = 0; j <= i;j++){

                    printf("* ");

               }

               printf("\n");

         }

         for (int i = N; i >=0; i--){

               print(n++);

               for (int j = 0; j <= i; j++){

                    printf("* ");

               }

               printf("\n");

         }

         system("pause");

    }

  • 输入5个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分
  • #define _CRT_SECURE_NO_WARNINGS 1

    #include <stdio.h>

    #include <math.h>

    void fun(int a,int b,int c,int d,int e){

       int max = a;

       int min = a;

       double average;

       if (max < b) max=b;

       if (max < c)max = c;

       if (max < d)max = d;

       if (max < e)max = e;

       printf("%d ", max);

       if (min > b)min=b;

       if (min > c)min = c;

       if (min > d)min = d;

       if (min > e)min = e;

       printf("%d ", min);

       average = (a + b + c + d + e) / 5.0;

       printf("%.2lf ", average);

    }

    int main(){

       int a1, a2, a3, a4, a5;

       scanf("%d%d%d%d%d", &a1,&a2,&a3,&a4,&a5);

        fun(a1,a2,a3,a4,a5);

      

       system("pause");

       return 0;

    }

     

  • 功能:从键盘上输入任意实数x,求出其所对应的函数值。
  •      z=(x-4)的二次幂(x>4)

         z=x的八次幂(x>-4)

         z=(x>-10)

         z=|x|+20(其他)

     

    #include <math.h>

    #include <stdio.h>

    float y(float x)

    {

       /**********Program**********/

       float z;

       if(x>4)

         z = pow(x - 4, 2);

       if (x>-4)

         z = pow(x, 8);

       if (x > -10)

         z = 4 / (x*(x + 1));

       else

         z = fabs(x) + 20;

         return z;

       /**********  End  **********/

    }

     

    main()

    {

       float x;

       scanf("%f", &x);

       printf("y=%f\n", y(x));

       system("pause");

     

    }

     

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值