当前位置: 首页 > news >正文

【C/PTA——循环结构3】

C/PTA——循环结构3

    • 7-1 二分法求多项式单根
      • 1.题目要求
      • 2.代码实现
    • 7-2 循环-十进制转化
      • 1.题目要求
      • 2.代码实现
    • 7-3 梅森数
      • 1.题目要求
      • 2.代码实现
    • 7-4 单词长度
      • 1.题目要求
      • 2.代码实现
    • 7-5 21循环-求和3
      • 1.题目要求
      • 2.代码实现
    • 7-6 21循环-金字塔
      • 1.题目要求
      • 2.代码实现
    • 7-7 循环-杨辉三角
      • 1.题目要求
      • 2.代码实现

7-1 二分法求多项式单根

1.题目要求

在这里插入图片描述

2.代码实现

#include <stdio.h>  
double a3, a2, a1, a0;  double f(double x)  
{  double result;  result=a3*x*x*x+a2*x*x+a1*x+a0;  return result;  
}int main()  
{  double a, b;  scanf("%lf%lf%lf%lf",&a3,&a2,&a1,&a0);  scanf("%lf%lf",&a,&b);  double left,mid,right;  left=a;  right=b;  ///大于阈值时使用二分法求出单根,程序结束while(right-left>=0.001&&f(left)*f(right)<=0)  {  if(f(left)==0)  {  printf("%.2f",left);  return 0;  }  if(f(right)==0)  {  printf("%.2f",right);  return 0;  }  mid=(left+right)/2;  if (f(mid)*f(left)>0)  {  left=mid;  }  else  //由于先决条件为f(left)*f(right)<0,因此此时else语句等价于f(mid)与f(left)异号,即与f(right)同号{  right=mid;  }  }  不大于阈值时输出中点printf("%.2f",mid);  return 0;  
}  

7-2 循环-十进制转化

1.题目要求

在这里插入图片描述

2.代码实现

#include<stdio.h>
#include<math.h>
int Coun(int n,int m)//进制转化,位数计算函数
{int count = 0;while (n)//统计进制转换后,数字位数的统计{count++;n /= m;}return count;
}
int main()
{int n, m;int sum = 0;scanf("%d %d", &n, &m);int count = Coun(n, m);int num = count;while (n){sum = sum + (int)pow(10, num - count) * (n % m);n /= m;count--;}printf("%d", sum);return 0;
}

7-3 梅森数

1.题目要求

在这里插入图片描述

2.代码实现

#include<stdio.h>
#include<math.h>
int main()
{int n = 0, num = 0;int count = 0;scanf("%d", &n);for(int j=2;j<=n;j++){for (int i = 2; i < ((int)pow(2,j)-1); i++){if (((int)pow(2, j) - 1) % i == 0)//素数的判断count++;}if (count == 0)//梅森数的判断{printf("%d\n", (int)pow(2, j) - 1);num++;}count = 0;//判断完一个后,计数置0}if (num == 0)//不存在梅森数的情况printf("None\n");return 0;
}

7-4 单词长度

1.题目要求

在这里插入图片描述

2.代码实现

#include<stdio.h>
int main() {char s[100] = { 0 };char* p = &s;int i = 0;scanf("%[^.]", s);//[^.]是输入到.前面位置,遇到.结束输入for (; *(p) != 0; p = p + 1){if (*(p) != ' ')i++;if (*(p) == ' ' && *(p + 1) == ' ')continue;//吞多余空格 if (*(p) == ' ' && *(p + 1) != 0 && i != 0){printf("%d ", i);i = 0;}//输出前面单词的数目,i!=0有效解决了开头多空格问题 if (*(p + 1) == 0)//输出最后一个单词的数目 printf("%d", i);}return 0;
}

7-5 21循环-求和3

1.题目要求

在这里插入图片描述

思路:
1.使用两个嵌套的for循环,外层循环控制1到n的遍历,内层循环控制1到k的遍历。
2.在内层循环中,每次将total乘以当前外层循环的迭代变量i,并取结果对114514取模(%)。
3.在外层循环中,将计算得到的total累加到sum上,并将结果对114514取模,再重新将total置为1。

2.代码实现

#include<stdio.h>
int main()
{int n, k;scanf("%d %d", &n,&k);int total = 1;int sum = 0;for (int i = 1; i <= n; i++){for (int j = 1; j <= k; j++){total = (total * i) % 114514;}sum = (sum + total) % 114514;total = 1;}printf("%d", sum);
}

7-6 21循环-金字塔

1.题目要求

在这里插入图片描述

2.代码实现

#include<stdio.h>
int main()
{int n, m = 0, k, i = 1, j;scanf("%d", &n);if (n == 1) {printf("1");return 0;}while (n > m) {m = (i + 1) * (i + 2) / 2;i++;k = (i + 1) * (i + 2) / 2;if (n <= k) {n = i - 1;}}for (i = 0; i <= n; i++) {for (j = 0; j < n - i; j++) {printf("0");}printf("%d", n + 1 - i);for (k = 1; k <= i; k++) {      //for循环里面套了三个并列的for循环,每次重新进入内部循环时,k都会重新赋值为1;这个循环很巧妙,第一次无法进入,第二次以后就可以,并且循环次数逐一增加。printf("0%d", n + 1 - i);}for (j = 0; j < n - i; j++) {printf("0");}printf("\n");}return 0;
}

7-7 循环-杨辉三角

1.题目要求

在这里插入图片描述

2.代码实现

#include<stdio.h>
int main() {int n, m;int k = 0;scanf("%d %d", &n, &m);if(n>m){int tmp=n;n=m;m=tmp;
}int triangle[22][22] = { 0 }; // 初始化为0for (int i = 1; i <= 21; i++) {triangle[i][1] = 1;for (int j = 2; j <= i; j++) {triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];}}for (int i = n; i <= m; i++)//空格的输出{for (k = m - i; k >= 1; k--){printf(" ");}for (int j = 1; j <= i; j++){if(j<i)printf("%d ", triangle[i][j] % 10);if (j == i)printf("%d", triangle[i][j]);// 取最后一位}printf("\n");}return 0;
}
http://www.lryc.cn/news/222389.html

相关文章:

  • MAC设备(M1)环境下编译安装openCV for Java
  • pytest中的pytest.ini
  • C#通过TCP发送List<string>
  • Mactracker for mac(硬件信息查询工具)免费下载
  • MES管理系统中常规的生产建模有哪些
  • 电商API:淘宝京东拼多多1688多电商平台的商品销量库存信息获取
  • EPLAN软件中的术语-主数据‘’技术分享
  • web应用程序、Django框架的学习
  • 【c++之设计模式】组合使用:抽象工厂模式与单例模式
  • Adobe Photoshop Elements 2024 v24.0 简体中文版 | 中文直装版
  • seata事务回滚引起的skywalking数据库存储空间剧增的问题排查
  • 数据库SQL
  • C语言实现给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
  • 101 对称二叉树
  • 安全测试,接口返回内容遍历~
  • 【GIS】地理坐标系与投影坐标系的区别
  • 太细了:美团一面连环夺命20问,搞定就60W起
  • 休眠和睡眠有哪些区别?如何让电脑一键休眠?
  • Kibana使用Timelion根据时间序列展示数据
  • 基础:JavaScript的怪癖之一:提升(Hoisting)
  • 前端特殊字符转码
  • Python开发运维:Python3.7安装Django3.2
  • B站双11,联手天猫暴涨2亿消费新势力
  • 如何选择SVM中最佳的【核函数】
  • RT-Thread的构建与配置系统
  • 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
  • Git的简介以及基本使用
  • django安装数据库
  • springboot--外部环境配置
  • 『MySQL快速上手』-④-表的操作