零基础学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; }

浙公网安备 33010602011771号