🚀write in front🚀
📝个人主页:认真写博客的夏目浅石.
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏:PTA学校题集
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊
✉️如果无聊的话,就来逛逛我的博客栈吧stack-frame.cn
文章目录
- 前言
- 7-101 十进制转二进制
- 7-6 近似求PI
- 7-30 求最大公约数
- 7-35 求阶乘问题
- 7-27 N阶楼梯上楼问题
- 7-38 数字金字塔
- 7-83 使用选择法将数组中的整数按由小到大排序
- 7-42 *求最大公约数
- 7-84 编写函数,完成一组学生C语言成绩的值的运算
- 7-46 显示菱形
- 7-48 求π的近似值
- 7-50 汉诺(Hanoi)塔问题
- 7-49 递归实现逆序输出整数
- 7-108 完美的素数
- 7-31 汉诺塔问题
- 7-37 求100以内的素数
- 7-1 求组合数
- 7-2 素数对猜想
- 7-13 判断素数
- 7-6 近似求PI
- 7-87 函数的递归调用
- 7-19 函数-斐波那契数列
- 7-26 乘法口诀表
- 7-66 汉诺塔问题
- 7-78 存款翻倍
- 总结
前言
应要好同学要求更新一波寒假作业,所以咱就开始行动,帮助自己快乐他人(bushi)。
7-101 十进制转二进制
#include<iostream>
using namespace std;
int main()
{
int n,i=0;
int arr[40];
while(~scanf("%d",&n))
{
if(n==0)
{
printf("0\n");
continue;
}
while(n)
{
++i;
arr[i]=n%2;
n/=2;
}
for(int j=i;j>0;j--) printf("%d",arr[j]);
printf("\n");
i=0;
}
return 0;
}
7-6 近似求PI
#include <stdio.h>
int main()
{
double eps, sum=1, i, temp=1;
scanf("%le", &eps);
for(i=1; temp>eps; i++)
{
temp = temp*i/(2*i+1);
sum += temp;
}
printf("PI = %.5f\n", 2*sum);
return 0;
}
7-30 求最大公约数
#include<iostream>
using namespace std;
int gcd(int a,int b)//递归法--->辗转相除法
{
if (b==0)
return a;
int r = a%b;
return gcd(b,r);
}
int main()
{
int n,m;
cin>>n>>m;
int ret=gcd(n,m);
printf("%d\n",ret);
return 0;
}
7-35 求阶乘问题
#include<iostream>
using namespace std;
int main()
{
long long n;
cin>>n;
long long sum=1;
for(long long i=n;i>1;--i) sum*=i;
printf("%lld\n",sum);
return 0;
}
7-27 N阶楼梯上楼问题
#include <iostream>
using namespace std;
int num[101];
void fib()
{
num[0] = 0;
num[1] = 1;
num[2] = 2;
for (int i = 3; i <= 100; i++)
{
num[i] = num[i-1] + num[i - 2];
}
}
int main()
{
fib();
int t;
while(cin >> t)
{
cout << num[t] << endl;
}
return 0;
}
7-38 数字金字塔
#include<stdio.h>
int main()
{
printf(" 1 \n");
printf(" 2 2 \n");
printf(" 3 3 3 \n");
printf(" 4 4 4 4 \n");
printf("5 5 5 5 5 \n");
return 0;
}
7-83 使用选择法将数组中的整数按由小到大排序
#include<iostream>
using namespace std;
int arr[12];
void bulle_sort(int arr[],int n)
{
int i=0;
for(i=0;i<n-1;i++)
{
int j=0;
for(j=0;j<n-i-1;j++)
{
if(arr[j]<arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int main()
{
for(int i=0;i<10;++i) scanf("%d",&arr[i]);
bulle_sort(arr,10);
for(int i=0;i<10;++i) printf("%5d",arr[i]);
return 0;
}
7-42 *求最大公约数
#include<stdio.h>
long long gcd(long long a,long long b)//递归法--->辗转相除法
{
if (b==0)
return a;
long long r = a%b;
return gcd(b,r);
}
int main()
{
long long n,m;
scanf("%lld %lld",&n,&m);
long long ret=gcd(n,m);
if(ret<0)
{
ret=-1*ret;
printf("%lld\n",ret);
}
else if(ret>0)
{
printf("%lld\n",ret);
}
else printf("1\n");
return 0;
}
7-84 编写函数,完成一组学生C语言成绩的值的运算
#include <iostream>
using namespace std;
typedef long long ll;
const int N = 15;
int n, dat[N], aver, minn = 1e7;
int main()
{
for (int i=1; i<=10; i++)
{
cin >> dat[i];
aver += dat[i];
minn = min(minn, dat[i]);
}
aver /= 10;
printf("average=%d\nmin=%d", aver, minn);
return 0;
}
7-46 显示菱形
#include<stdio.h>
int main()
{
int n;
char c;
scanf("%d %c",&n,&c);
if(n<=0) printf("None");
else if(n%2==0) printf("Error");
else
{
int m=n/2+1;
int i,j,s;
for(i=1; i<=m; i++)
{
for(s=1; s<=m-i; s++)
printf(" ");
for(j=1; j<=2*i-1; j++)
printf("%c",c);
printf("\n");
}
for(i=1; i<m; i++)
{
for(s=1; s<=i; s++)
printf(" ");
for(j=1; j<=n-2*i; j++)
printf("%c",c);
printf("\n");
}
}
return 0;
}
7-48 求π的近似值
#include<stdio.h>
#include<math.h>
double funpi(double e);
int main()
{
double pi,e;
scanf("%lf",&e);
pi=funpi(e);
printf("pi = %lf",pi);
return 0;
}
double funpi(double e)
{
double x,sum=0;
int n=1,flag=1;
do{
x=1.0*flag/n;
sum=sum+x;
flag=-flag;
n=n+2;
}while(fabs(x)>=e); //分号!!!
return sum*4;
}
7-50 汉诺(Hanoi)塔问题
#include <iostream>
using namespace std;
void hanoi(int n, char a, char b, char c)
{
if(n==0) return;
hanoi(n-1, a, c, b);
printf("%c-->%c\n", a, b);
hanoi(n-1, c, b, a);
}
int main()
{
int n;
cin >> n;
hanoi(n, 'a', 'b', 'c');
return 0;
}
7-49 递归实现逆序输出整数
#include<stdio.h>
#include<string.h>
void reverse(char* arr,int l,int r)
{
char tmp;
while(l<r)
{
tmp=arr[l];
arr[l]=arr[r];
arr[r]=tmp;
l++;
r--;
}
return;
}
int main()
{
char arr[100010];
gets(arr);
int len=strlen(arr);
reverse(arr,0,len-1);
printf("%s\n",arr);
return 0;
}
7-108 完美的素数
#include <stdio.h>
int is_prime(int x)
{
int i = 0;
for (i = 2; i < x; i++)
{
if (x % i == 0)
{
return 0;
}
}
return x;
}
int Sum(int x)
{
if (x>9)
{
return Sum(x / 10)+x % 10;
}
return x % 10;
}
int main()
{
int n = 0;
while (scanf("%d", &n), n != 0)
{
int sum = Sum(n);
if (n == is_prime(n) && sum==is_prime(sum))
printf("%d\n", n);
}
return 0;
}
7-31 汉诺塔问题
# include<stdio.h>
void move(char ch1[],char ch2[]);
void tower(int n,char ch1[],char ch2[],char ch3[])
{
if(n==1)
{
move(ch1,ch3);
}
else
{
tower(n-1,ch1,ch3,ch2);
move(ch1,ch3);
tower(n-1,ch2,ch1,ch3);
}
}
void move(char ch1[],char ch2[])
{
printf("%s->%s\n",ch1,ch2);
}
int main()
{
int n;
char ch1[100],ch2[100],ch3[100];
scanf("%d\n",&n);
scanf("%s\n%s\n%s",&ch1,&ch2,&ch3);
tower (n,ch1,ch2,ch3);
return 0;
}
7-37 求100以内的素数
#include<stdio.h>
int main()
{
int j,sum=0;
for(int i=2;i<=100;++i)
{
for(j=2;j<i;j++)
{
if(i%j==0) break;
else continue;
}
if(j==i)
{
printf("%6d",j);
sum++;
if(sum%10==0)
{
printf("\n");
sum=0;
}
}
}
return 0;
}
7-1 求组合数
#include <stdio.h>
double fact(int n);
int main()
{
int m, n;
double result;
scanf("%d %d", &m,&n);
result = fact(n) / (fact(m)*fact(n-m));
printf("result = %.0f", result);
return 0;
}
double fact(int n)
{
double sum = 1;
for(int i=1;i<=n;i++)
{
sum *= i;
}
return sum;
}
7-2 素数对猜想
#include <stdio.h>
int main() {
int n, cnt = 0, a[100001] = {
0 };
scanf("%d", &n);
for (int i = 2; i * i < 100000; i++)
for (int j = 2; j * i < 100000; j++) a[j * i] = 1;
for (int i = 3; i + 2 <= n; i++) if (!a[i + 2] && !a[i]) cnt++; //第一对符合的素数对为3,5,所以从3开始
printf("%d", cnt);
return 0;
}
7-13 判断素数
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, j;
long long x;
scanf("%d", &n);
while(n--)
{
scanf("%lld", &x);
j = 1;
for(i = 2; i <= sqrt(x); i++)
{
if(x % i == 0)
{
j = 0;
break;
}
}
if(x == 1 || j == 0)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}
7-6 近似求PI
#include <stdio.h>
int main()
{
double eps, sum=1, i, temp=1;
scanf("%le", &eps);
for(i=1; temp>eps; i++)
{
temp = temp*i/(2*i+1);
sum += temp;
}
printf("PI = %.5f\n", 2*sum);
return 0;
}
7-87 函数的递归调用
int fun(int n)
{
if (n == 0 || n == 1)
return 1;
else if (n > 0)
return n * fun(n - 1);
}
int main()
{
int n;
scanf("%d", &n);
if (n < 0)
printf("给定的数<0,no value!no value!");
else
printf("%d!=%d", n, fun(n));
return 0;
}
7-19 函数-斐波那契数列
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int n;
long long a[61]; //记得是long long 不然不够
double x;
while(scanf("%d",&n)!=EOF){
a[1]=1;
a[2]=1;
for(int i = 3;i < 61;i++){
a[i] = a[i - 1] + a[i - 2];
}
x =(double)(a[n]); //转换一下
printf("%.0f\n",x);
}
return 0;
}
7-26 乘法口诀表
#include<stdio.h>
int main()
{
int N;
scanf("%d", &N);
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= i; j++)
{
if(j!=i)
printf("%dx%d=%2d ",j,i,i*j);
else
printf("%dx%d=%2d",j,i,i*j);
}
printf("\n");
}
return 0;
}
7-66 汉诺塔问题
#include<stdio.h>
void hanoi(int n,char a,char c,char b)
{
if(n==1)
printf("1: %c -> %c\n",a,c);
else
{
hanoi(n-1,a,b,c);
printf("%d: %c -> %c\n",n,a,c);
hanoi(n-1,b,c,a);
}
}
int main()
{
int n;
scanf("%d",&n);
getchar();
char a,b,c;
scanf("%c %c %c",&a,&c,&b);
hanoi(n,a,c,b);
}
7-78 存款翻倍
#include <stdio.h>
int main()
{
double a,c=1;
int b=0;
scanf("%lf",&a);
do
{
c=c*(1+(a/100));
b++;
} while (c<2);
printf("%d",b);
}
总结
基础题目,多看题解。
转载:https://blog.csdn.net/congfen214/article/details/128881922
查看评论