【问题描述】
将一个数组中的值按逆序重新存放
【输入形式】
手动输入多个整数
【输出形式】
按输入的逆序输出
【样例输入】
8 6 5 4 1
【样例输出】
1 4 5 6 8
1. #include <iostream> 2. using namespace std; 3. int main() 4. { 5. int a[5]; 6. for(int i=0;i<5;i++) 7. { 8. cin>>a[i]; 9. } 10. for(int i=4;i>=0;i--) 11. { 12. cout<<a[i]; 13. if(i) 14. { 15. cout<<" "; 16. } 17. } 18. return 0; 19. }
【问题描述】
从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集"异或")。
【输入形式】
首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上输入第二组整数,以一个空格分隔,行末有回车换行。
【输出形式】
按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现的整数,以一个空格分隔各个整数)。
【样例输入】
5 1 4 32 8 7 9 -6
5 2 87 10 1
【样例输出】
87 32 10 9 8 7 4 2 -6
【样例说明】
第一组整数为5 1 4 32 8 7 9 -6,第二组整数分别为5 2 87 10 1。将第一组和第二组整数合并(去掉在两组整数中都出现的整数5和1),并从大到小顺序排序后结果为87 32 10 9 8 7 4 2 -6。
1. #include<bits/stdc++.h> 2. using namespace std; 3. bool cmp(int x,int y) 4. { 5. return x>y; 6. } 7. int main() 8. { 9. int a[20],b[20],c[20]; 10. int i=0,j=0,num=0,k1=0,k2=0; 11. char ch=0; 12. while(ch!='\n') 13. { 14. cin>>a[k1]; 15. k1++; 16. ch=getchar(); 17. } 18. ch=0; 19. while(ch!='\n') 20. { 21. cin>>b[k2]; 22. k2++; 23. ch=getchar(); 24. } 25. for(i=0;i<k1;i++) 26. { 27. for(j=0;j<k2;j++) 28. { 29. if(a[i]==b[j]) 30. { 31. break; 32. } 33. } 34. if(j>=k2) 35. { 36. c[num]=a[i]; 37. num++; 38. } 39. } 40. for(i=0;i<k2;i++) 41. { 42. for(j=0;j<k1;j++) 43. { 44. if(b[i]==a[j]) 45. { 46. break; 47. } 48. } 49. if(j>=k1) 50. { 51. c[num]=b[i]; 52. num++; 53. } 54. } 55. sort(c,c+num,cmp); 56. cout<<c[0]; 57. for(i=1;i<num;i++) 58. { 59. for(j=0;j<i;j++) 60. { 61. if(c[i]==c[j]) 62. { 63. break; 64. } 65. } 66. if(j>=i) 67. { 68. cout<<" "<<c[i]; 69. } 70. } 71. return 0; 72. }
【问题描述】
编写函数itob(n,s,b),用于把整数n转换成以b为基的字符串并存储到s中. 编写程序,使用函数itob(n,s,b)将输入的整数n,转换成字符串s,将s输出.转换后的字符串从最高的非零位开始输出。如果n为负数,则输出的字符串的第一个字符为'-'。b为大于1小于37的任意自然数值。当b=2时,输出字符只可能是'0'和'1';当b=16时,输出字符串中可能含有字符为'0'-'9','a'-'f'(字母以小写输出)。b还可以是其它数值。比如输入n=33,b=17,则输出33的17进制值为"1g"。
【输入形式】
控制台输入整数n和b,其中n可以为负数。n和b以空格分隔.
【输出形式】
控制台输出转化后的字符串s.
【样例输入】
5 2
【样例输出】
101
【样例说明】
5的二进制就是101
1. #include<bits/stdc++.h> 2. int itob(int n,int s[50],int b) 3. { 4. int temp=0; 5. while(n) 6. { 7. s[temp++]=n%b; 8. n=n/b; 9. } 10. return temp; 11. } 12. using namespace std; 13. int main() 14. { 15. int n,b,s[50]; 16. cin>>n>>b; 17. int len=itob(n,s,b); 18. if(n<0) 19. { 20. cout<<"-"; 21. for(int i=len-1;i>=0;i--) 22. { 23. s[i]=-s[i]; 24. } 25. } 26. for(int i=len-1;i>=0;i--) 27. { 28. if(s[i]>=0&&s[i]<=9) 29. { 30. cout<<s[i]; 31. } 32. else 33. { 34. cout<<(char)(s[i]-10+'a'); 35. } 36. } 37. return 0; 38. }
【问题描述】
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)
【输入形式】
数组
【输出形式】
输出鞍点坐标及数值,或者输出无鞍点
【样例输入】
1 2 4
2 4 8
3 6 12
【样例输出】
Saddle point:a[0][2]=4
【样例输入】
1 2 4
2 9 3
3 6 12
【样例输出】
There is no saddle point
【样例说明】
无
【评分标准】
输入上述两个二维数组,判断输出是否一致,以及核心代码是否使用二维数组。
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. int flag=0; 6. int i,j,k; 7. int a[3][3]; 8. int line=0,row=0; 9. int max,min; 10. for(i=0;i<3;i++) 11. { 12. for(j=0;j<3;j++) 13. { 14. cin>>a[i][j]; 15. } 16. } 17. for(i=0;i<3;i++) 18. { 19. line=0;max=a[i][line]; 20. for(j=0;j<3;j++) 21. { 22. if(a[i][j]>max) 23. { 24. max=a[i][j]; 25. line=j; 26. } 27. } 28. row=i;min=a[row][line]; 29. for(k=0;k<3;k++) 30. { 31. if(a[k][line]<min) 32. { 33. min=a[k][line]; 34. row=k; 35. } 36. } 37. if(row==i) 38. { 39. cout<<"Saddle point:"<<"a["<<row<<"]["<<line<<"]"<<"="<<a[row][line]<<endl; 40. flag=1; 41. } 42. } 43. if(flag==0) 44. { 45. cout<<"There is no saddle point"<<endl; 46. } 47. return 0; 48. }
【问题描述】
用筛选法求100之内的素数。
所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛选法”。他是古希腊著名数学家,他采用的方法是:在一张纸上写1-100全部素数,然后逐个判断它们是否为素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。
【输出形式】
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
1. #include<bits/stdc++.h> 2. using namespace std; 3. int check(int x) 4. { 5. if(x==1) 6. { 7. return 0; 8. } 9. for(int i=2;i*i<=x;i++) 10. { 11. if(x%i==0) 12. { 13. return 0; 14. } 15. } 16. return 1; 17. } 18. int main() 19. { 20. for(int i=1;i<=100;i++) 21. { 22. if(check(i)) 23. { 24. cout<<i<<" "; 25. } 26. } 27. return 0; 28. }