GDPU C语言 天码行空4 循环与分支巩固

🍑 C语言实验专栏 (代码可免登录复制)


1. 百元百鸡

在这里插入图片描述

#include <stdio.h>
int main(){

int i,j,k;
for(i = 1; i <= 100/5;i++)
  for(j = 1; j <= 100/3; j++)
	  for(k = 3;k <= 3*100; k+=3)
		 if(i*5 + j*3+k/3== 100 && i+j+k == 100)
		     printf("%5d%5d%5d\n",i,j,k);
return 0;
}

2. 硬币兑换问题

在这里插入图片描述

#include <stdio.h>

int main(){
    int n,i,j,k;
    scanf("%d",&n);
    int cnt = 0;
    for(i = 1; i < n; i++)
        for(j = 2; j < n; j+=2 )
            for(k = 5; k < n; k+= 5)
                if(i + j + k == n)
                    cnt++;

    printf("count=%d\n",cnt);

    return 0;
}

3. 输出图形

在这里插入图片描述

#include <stdio.h>

int main(){
    int i,j;
    for(i = 1; i <= 7; i++)//枚举数字
    {
        //先输出空格
        for(j = 30-i; j >= 0; j--)
            printf(" ");
        // 输出数字
        for(j = 1; j <= 2*i-1; j++)
            printf("%d",i);
        
        printf("\n");
    }
    for(i = 6; i > 0; i--)//枚举数字
    {
        for(j = 0; j <= 30-i; j++)//输出空格
            printf(" ");
        for(j = 1; j <= 2*i-1; j++)
            printf("%d",i);

        printf("\n");
    }
    return 0;
}

4. 7或17的倍数

在这里插入图片描述

#include <stdio.h>

int main(){
    int idx = 0,i;
    int sum = 0;
    for(i = 2; i <= 200; i+= 2)
        if( i % 7 == 0 || i % 17 == 0 )
          {
            printf("%6d",i);
            idx++;
            if(idx==5)
            {
                printf("\n");
                idx = 0;
            }
            sum += i;
          } 
    printf("\nsum=%d",sum);

       return 0;
}

5. 水仙花数

在这里插入图片描述

🌝 库函数 pow 还过不了

#include <stdio.h>
#include <math.h>
//快速幂函数
int qmi(int x,int n){
 int res = 1;
 while(n){
   if(n&1)
     res *= x;
   x *= x;
   n>>=1;
 }
 return res;
}

int main(){
 int n,i;
 scanf("%d",&n);
 
 // 打表
 // int arr[] = {153,370,371,407,1634,8208,9794,54748,92727,93084,
 // 548834,1741725,4210818,9800817,9926315};
 // for(int i = 0; i < 15;i++)
 // {
 //   if(arr[i] >= start && arr[i] < end )
 //      printf("%d\n",arr[i]);
 // }


 int start = qmi(10,n-1);
 int end = start *10;
 // 暴力法:用库里都 pow 只能过两个测试点 手写一个快速幂
 // int start = pow(10,n-1);
 // int end = pow(10,n);
 int start = qmi(10,n-1);
 int end = start *10;
  for(i = start; i < end; i++)
  {
     int sum = 0;
     int t = i;
     while(t){
       int x = t%10;
     // sum += pow(x,n);
       sum += qmi(x,n);
       t /= 10;
     }

     if(sum == i)
       printf("%d\n",i);
  }

  return 0;
}

6. 素数问题

在这里插入图片描述

✨ 枚举 + 判断素数

#include <stdio.h>
#include <math.h>


int main(){
  int n,m,i,j;
  scanf("%d,%d",&n,&m);

  for(i = n; i>1 && m != 0; i--){
    int flag = 1;
    for(j = 2;j < i/j; j++)
    {
      if(i % j == 0)
      {
        flag = 0;
        break;
      }
    }
    if(flag)
    {
      printf("%d\n",i);
      m--;
    }
  }
  
  return 0;
}

7. 求序列和

在这里插入图片描述

#include <stdio.h>

int main(){
  int n,m,i;
  scanf("%d,%d",&n,&m);
  int a[m+1] ;
  int res = 0;
  int t = 0;
  for(i = 1;i <= m; i++)
  {
    t = t*10 + n;
    a[i] = t;
  }
  for(i = 1; i <= m; i++)
  {
    res += a[i];
    if(i != m)
      printf("%d+",a[i]);   
    else   
      printf("%d=",a[i]);
  }  
  printf("%d",res);

  return 0;
}

9. 验证哥德巴赫猜想

在这里插入图片描述

🌟 枚举 1 ~ 30,找出 <i 的素数,int x = i - 此素数,判断 x 是否是素数即可

#include <stdio.h>

int st[31];

int isPrime(int x){
  int i;
  for(i = 2; i < x; i++)
  {
    if(x%i==0)
      return 0;
  }
  return 1;
}

int main(){
  int i,j;
  

  for(i = 6; i <= 30; i += 2)
  {
    for(j = 2; j <= i/2; j++)
    {
      if(isPrime(j)){
        int x = i - j;
        if(isPrime(x)){
          printf("%d=%d+%d\n",i,j,x);
        }
      }
    }
  }

  return 0;
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值