C++刷题四

(一)输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)

(1)
#include <iostream>
using namespace std;
int main()
{
    int i=0;
    char a[i];
    while(cin>>a[i])
    {
        if(a[i]>='a'&&a[i]<'z')
        {
            a[i]=(int)a[i]+1;
            cout<<a[i];
        }
        else if(a[i]=='z')
            cout<<'a';
        else
            cout<<a[i];
        i++;
    }
    return 0;
}
方法(2)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    int i=0;
    char a[100];
    gets(a);
    int len=strlen(a);
    while (a[i]!='\0')
    {
        if (a[i]>='a'&&a[i]<'z')
            a[i]+=1;
        else if (a[i]=='z')
            a[i]='a';
            i++;
    }
    for(i=0; i<len; i++)
        cout<<a[i];
    return 0;
}

(二)求一个3×3矩阵对角线元素之和。

#include <iostream>
using namespace std;
int main()
{
    int a[3][3],i,j;
    int s1,s2;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        cin>>a[i][j];
    s1=a[0][0]+a[1][1]+a[2][2];
    s2=a[0][2]+a[1][1]+a[2][0];
    cout<<s1<<" "<<s2<<endl;
    return 0;
}

(三)用筛法求N(<1000)之内的素数。

(1)
#include <iostream>
using namespace std;
int main()
{
    int n,i,j;
    cin>>n;
    for(i=1; i<n; i++)
    {
        for(j=2;j<i;j++)
        {
            if(i%j==0)
                break;
        }
        if(j==i)
        cout<<i<<endl;
    }
    return 0;
}
(2)
#include <iostream>
#include <cmath>
using namespace std;
bool isprimer(int );
int main()
{
    int n,i;
    cin>>n;
    for(i=2; i<n; i++)
    {
        if(isprimer(i))
            cout<<i<<" "<<endl;
    }
}
bool isprimer(int n)
{
    int r;
    for (r=2; r<=sqrt(n); ++r)
        if(n%r==0)
            break;
    if(r>sqrt(n))
        return n;
}

(四)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

#include <iostream>
using namespace std;
int main()
{
    int n,i,m,k,*p;
    cin>>n;
    int a[n];
    p=a;   //指针p指向num
    for(i=0;i<=n;i++)
        *(p+i)=i+1;   ////以1至n为序给每个人编号
    i=0; //i为每次循环时计数变量
    k=0; //k为按1,2,3报数时的计数变量
    m=0; //m为退出人数

    while(m<n-1)   //当退出人数比n-1少时(即未推出人数大于1时) 执行循环体
    {
        if(*(p+i)!=0)
            k++;   //将推出的人的编号置为0
        if(k==3)
        {
            *(p+i)=0;
            k=0;
            m++;
        }
        i++;
        if(i==n)i=0;   //报数到尾后,i恢复为0
    }
    while(*p==0)p++;
    cout<<*p<<endl;
    return 0;
}

(五)写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。

#include <iostream>
#include <cmath>
using namespace std;
int is_prime(int n)
{
    int r;
    if(n==1)
        return 0;
    else
    {
        for (r=2; r<=sqrt(n); ++r)
            if(n%r==0)
                break;
        if(r>sqrt(n))
            return 1;
    }
}
int main()
{
    int flag,n;
    int is_prime(int);
    cin>>n;
    flag=is_prime(n);
    if(flag==1)
        cout<<"prime"<<endl;
    else
        cout<<"not prime"<<endl;
    return 0;
}

心得体会:每天都有人在进步,我努力让自己能够成为他们中的一员!每天积累一些代码,总会对自己有帮助的。继续加油!

时间: 2024-10-20 10:26:26

C++刷题四的相关文章

leetcode刷题四&lt;寻找两个有序数组的中位数&gt;

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 不会同时为空. 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4] 则中位数是 (2 + 3)/2 = 2.5 思路简单直接撸代码吧 double findMedianSortedArrays(

LeetCode开心刷题四十二天——56. Merge Intervals

56. Merge Intervals Medium 2509194FavoriteShare Given a collection of intervals, merge all overlapping intervals. Example 1: Input: [[1,3],[2,6],[8,10],[15,18]] Output: [[1,6],[8,10],[15,18]] Explanation: Since intervals [1,3] and [2,6] overlaps, mer

LeetCode开心刷题四十八天——71. Simplify Path

71. Simplify Path Medium 5101348FavoriteShare Given an absolute path for a file (Unix-style), simplify it. Or in other words, convert it to the canonical path. In a UNIX-style file system, a period . refers to the current directory. Furthermore, a do

刷题之路第四题--取两个顺序数组的数值的中位数

Median of Two Sorted Arrays 简介:取两个顺序数组的数值的中位数 问题详解: 给定两个排序的数组nums1和nums2分别为m和n,我们需要的是两个数组中所组成一个数列的中位数. 注意: 1.需要判断数组NPE 2.结果不是int 举例 1: nums1 = [1, 3] nums2 = [2] 中位数是 2.0 2: nums1 = [1, 2] nums2 = [3, 4] 中位数是 (2 + 3)/2 = 2.5 JAVA 实现方法一: 通过NPE判断后将两个数组

COGS2642 / Bzoj4590 [Shoi2015]自动刷题机

Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 906  Solved: 321 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序,每秒,自动刷题机的代码生成模 块会有两种可能的结果: A.写了x行代码. B.心情不好,删掉了之前写的y行代码.(如果y大于当前代码长度则相当于全部删除.) 对于每

【leetcode刷题笔记】Restore IP Addresses

Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example:Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does not matter) 题解:深度优先搜索.用resul

【leetcode刷题笔记】Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For example,Given n = 3, You should return the following matrix: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 题解:以前做过的Spiral Matrix是给一个矩阵螺旋式的输出,这道题是给一个n,螺旋式的

BZOJ 4590: [Shoi2015]自动刷题机 二分答案

4590: [Shoi2015]自动刷题机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1056  Solved: 380[Submit][Status][Discuss] Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序,每秒,自动刷题机的代码生成模 块会有两种可能的结果: A.写了x行代

[转]POJ的刷题指南(加了超链接的)

网上看到的转过来一下,顺便把题目都加了个超链接,方便刷起~ POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: 一.基本算法:       (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.       (4)递推.       (5)构造法.(po