零基础学C/C++

# 零基础学C/C++
## 零基础学C/C++199——孪生素数
题目描述
在素数的大家庭中,大小相差为2的两个素数称之为一对“孪生素数”,如3和5、17和19等。请你编程统计出不大于自然数n的素数中,孪生素数的对数。

输入
一行一个正整数n , 1 <=n <= 10000

输出
若干行,每行2个整数,之间用一个空格隔开,从小到大输出每一对孪生素数

样例输入
100

样例输出
3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73

#include <stdio.h>
#include <math.h>
int p(int n);
int main (){
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=3;i+2<=n;i=i+2)
{
if(p(i) && p(i+2)) printf("%d %d\n",i,i+2);
}
}

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


## 零基础学C/C++198——数的计算
题目描述
输入一个自然数n,然后对此自然数按照如下方法进行处理:
1)不做任何处理
2)在它的左边加上一个自然数,但该自然数不能超过原数的一半
3)加上数后继续按照该规则进行处理,直到不能再加自然数为止
请找出以上操作能得到的数的个数。例如n=6时,满足条件的数有6个,分别为6、16、26、126、36、136

输入
一行一个正整数n,n <=1000

输出
一行一个正整数,表示满足条件的数的个数

样例输入
6

样例输出
6

#include <stdio.h>
#include <math.h>
int ab(int n);
int main ()
{
int n;
scanf("%d",&n);
printf("%d",ab(n)+1);
return 0;
}
int ab(int n)
{    
int sum=0; 
for(int i=1;i<=n/2;i++)
{
sum=sum+ab(i);
}
if(n>1) return sum+n/2;
if(n==1) return 0;
if(n==2) return 1;
}

 


## 零基础学C/C++197——回文数个数
题目描述
输入一个正整数n,求1~n之间“回文数”的个数。回文数是指一个数倒过来和原数一样,如12121、11、1221、1是回文数,而1231不是回文数。

输入
一行一个正整数n,1 <= n <=10000

输出
一行一个正整数,表示1~n之间回文数的个数,包括1和n

样例输入
12

样例输出
10

 1 #include <stdio.h>
 2 #include <math.h>
 3 int hw(int n);
 4 int main (){
 5 int n;
 6 while(scanf("%d",&n)!=EOF)
 7 {
 8 int gc=0;
 9 for(int i=1;i<=n;i++)
10 {
11 if(hw(i)==1) gc++;
12 }
13 printf("%d\n",gc);
14 }
15 return 0;
16 }
17 int hw(int n)
18 {
19 int s,y=0;
20 s=n;
21 while(s>0)
22 {
23 y=y*10+s%10;
24 s=s/10;
25 }
26 if(y==n) return 1;
27 else return 0;
28 }

 



## 零基础学C/C++196——排除异形基因
题目描述
神舟X号飞船在完成宇宙探险任务回到地球后,宇航员杨利伟感觉身体不太舒服,去了医院检查,医生诊断结果:杨利伟体内基因已被改变,原有人体基因序列中已经被渗入外星球不明异形生物基因,但可喜的是,这些异形基因都有一个共同的特征,就是该基因序号的平方除以7的余数都是1,要赶快清除掉,否则会危害整个人类。赶快行动吧。

输入
第一行是一个整数n(基因个数)
第二行是n个整数(杨利伟的基因序列)

输出
按照输入顺序,输出去除所有异形基因后的正常序列,每2个数之间用一个空格隔开

样例输入
4
6 2 8 12

样例输出
2 12

#include <stdio.h>
#include <math.h>
int main (){
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++)
{
if((a[i]*a[i])%7!=1)
{
printf("%d",a[i]);
if(i<n-1) printf(" ");
}
if(i==n-1) printf("\n");
}
return 0;
}

 


## 零基础学C/C++195——记录信息
正在更新,敬请等待
## 零基础学C/C++194——夏令营旗手
正在更新,敬请等待
## 零基础学C/C++193——插入排序
题目描述
给出一个整数x和一个数列,这个数保证从小到大排列。现在要去将这个整数x插入到数列中,使新的数列仍然从小到大排列

输入
第一行1个整数n,表示数列中数的个数
第二行n个整数,之间用一个空格隔开,保证从小到大
第三行1个整数x,表示待插入的整数

输出
一行整数,表示新的数列。每两个数之间用一个空格隔开

样例输入
4
1 3 4 5
2

样例输出
1 2 3 4 5

#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int a[n+1];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int m;
cin>>m;
int sign;
for(int i=0;i<n;i++)
{
if(a[i]>m)
{
sign=i;
break;
} 
}
for(int i=n-1;i>=sign;i--)
{
a[i+1]=a[i];
}
a[sign]=m;
for(int i=0;i<=n;i++)
{
cout<<a[i];
if(i<n) cout<<" ";
if(i==n) cout<<endl;
}
}
return 0;
}

 


## 零基础学C/C++192——陶陶摘苹果
题目描述
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。


输入
输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出
输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

样例输入
100 200 150 140 129 134 167 198 200 111
110

样例输出
5

#include <stdio.h>
#include <math.h>
int main (){
int n,a[10];
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
} 
scanf("%d",&n);
int sign=0;
for(int i=0;i<10;i++){
if(a[i]<=n+30) sign++;
}
printf("%d\n",sign);
return 0;
}

 


## 零基础学C/C++191——字母统计
题目描述
用指针编写一个程序,当输入一个字符串后,要求不仅能统计出其中字符的个数,还能分别指出其中大写字母、小写字母、数字以及其他字符的个数

输入
一行字符串

输出
一行5个数,依次为大写字母、小写字母、数字、其他字符和总共含有的字符个数,每2个数之间用一个空格隔开

样例输入
I am 11 years old.

样例输出
1 10 2 5 18

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
char a[1000];
int num[4]={0};
gets(a);
char *p=a;
int m=strlen(a);
for(int i=0;i<m;i++)
{
if(*p>='A'&&*p<='Z') {num[0]++;p++;}
else if(*p>='a'&&*p<='z') {num[1]++;p++;}
else if(*p>='0'&&*p<='9') {num[2]++;p++;}
else {num[3]++;p++;}
}
printf("%d %d %d %d %d\n",num[0],num[1],num[2],num[3],m);
return 0;
} 

 


## 零基础学C/C++190——冒泡排序
题目描述
用指针编写一个对整型数组进行冒泡排序的函数。冒泡排序是指将相邻的元素进行比较,如果不符合所要求的顺序,则交换这两个元素。对整个数列中所有的元素反复进行以上操作,直到所有的元素都排好序为止。

输入
第一行输入1个正整数n,表示数的个数 3 <= n <= 100
第二行n个整数,之间用空格隔开,这些数在0~9999999之间

输出
一行n个整数,每两个整数之间用一个空格隔开

样例输入
5
503 87 512 61 908

样例输出
61 87 503 512 908

#include<iostream>
using namespace std;
int main()
{
long long p,n,t;
while(scanf("%lld",&n)!=EOF)
{
long long a[n];
for(int i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
for(int i=0;i<n-1;i++)
{
p=i;
for(int j=i+1;j<n;j++)
{
if(a[j]<a[p])
{
p=j;
}
}
if(p!=i)
{
t=a[i];
a[i]=a[p];
a[p]=t;
}
}
for(int i=0;i<n;i++)
{
if(i!=0)
{
printf(" ");
}
printf("%lld",a[i]);
}
printf("\n");
}
return 0;
}

 

posted @ 2019-11-28 23:16  JokerNoCry  阅读(2113)  评论(0)    收藏  举报