上机复试题(c/c++)

字符串翻转

输入输出格式:
输入描述:

输入一个字符串在单独的一行,字符串长度<100

输出描述:

将字符串反序输出。

输入输出样例
输入样例#:

Guiyang

输出样例#:

gnayiuG

答案:

#include<stdio.h>
#include<string.h>
int main(){
char s[100];
gets(s);
for(int i=strlen(s)-1;i>=0;i--){
printf("%c",s[i]);
}
}

整除

输出100到1000之间能被5和6同时整除的数,输出格式为每10个数为一行。
输入输出格式
输入描述:

无输入

输出描述:

按题目意思输出,相邻两个数之间用空格隔开(注意每一行末尾没有空格)

答案:

#include<stdio.h>
using namespace std;
int main(){
int i,count;
count=0;
for(i=100;i<=1000;i++){
if(i%5==0&&i%6==0){
printf("%d ",i);
count++;
if(count==10){
printf("\n");
count=0;
}
}}
}

排序

输入n个数进行排序,要求先按奇偶后按从小到大的顺序排序。

输入输出格式
输入描述:

第一行输入一个整数n,表示总共有多少个数,n<=1000。
第二行输入n个整数,用空格隔开。

输出描述:

输出排序之后的结果。

输入输出样例
输入样例:

8
1 2 3 4 5 6 7 8

输出样例:

1 3 5 7 2 4 6 8
#include<stdio.h>
#include<algorithm>
using namespace std;
bool cmp(int a, int b) {
	if (a % 2 == b % 2)//如果同奇同偶 
		return a < b;//直接从小到大排序 
	else//如果奇偶性不同 
		return (a % 2) > (b % 2);//奇数在偶数前
}
int main() {
	int n;
	scanf("%d", &n);
	int a[100]={0};
	for (int i = 0; i < n; i++) {
		scanf("%d", &a[i]);
	}
	sort(a, a + n, cmp);
	for (int i = 0; i < n; i++) {
		printf("%d", a[i]);
	}
}

字符移动

题目描述

输入一个字符串,将其中的数字字符移动到非数字字符之后,并保持数字字符和非数字字符输入时的顺序。例如:输入字符串“ab4f35gr#a6”,输出为“abfgr#a4356”。
输入输出格式
输入描述:

输入一行字符串,长度小于100

输出描述:

输出结果。

输入输出样例
输入样例:

ab4f35gr#a6

输出样例:

abfgr#a4356
#include <stdio.h>
#include <string.h>
int main() {
    char s[50];
    int i, j, len;
    char ch;
    gets_s(s);
    len = strlen(s);
   for (i = len - 1; s[i] <= '9' && s[i] >= '0'; i--);
    len = i;//此时的len为去掉末尾连续的数字
    for (i = len; i >= 0; i--) {
        if (s[i] <= '9' && s[i] >= '0') {
            ch = s[i];
            s[i] = s[len];
            s[len] = ch;
            len--;
        }
    }
    printf("atfer:%s\n", s);
}

日期

题目描述

今天是2012年4月12日星期四,编写程序,输入今天开始到12月31日之间的任意日期,输出那一天是星期几。例如输入“5(回车)20(回车)”(5月20日),输出应为“Sunday”。

输入输出格式
输入描述:

输入第一行为月份。
输入第二行为这个月的第几天。

输出描述:

输入这一天是星期几。

输入输出样例
输入样例:

5
20

输出样例#:

Sunday
#include <stdio.h>
#include <string.h>

int main() {
    char date[7][10]={"Monday","Tuesday","Wednesday","Thursday","Friday","Satursday","Sunday"};
    int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int x,y,days,i,j,sum=0;
    scanf("%d%d",&x,&y);
    if(x==4){days=y-9;}
    else{
        for(i=5;i<=x;i++){
            sum+=day[i-2];
        }
        days=sum-9+y;
}
j=days%7;
printf("%s",date[j]);
}

判断素数

题目描述

输入一个整数,判断该整数是否为素数,若是,输出该整数,若否,输出大于该整数的第一个素数。(例如,输入为14,输出17,因为17是大于14的第一个素数)

输入输出格式
输入描述:

输入一个整数n,n最大为10000

输出描述:

按题意输出。

输入输出样例
输入样例#:

14

输出样例#:

17
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
using namespace std;
bool isPrime(int n){
	if(n<=1){return false;}
	for(int i=2;i*i<=n;i++){
		if(n%i==0)return false;
	}
	return true;
}

int main(){
	int n,i=0;
	cin>>n;
	if(isPrime(n)==false){
		for(i=n+1;i<10000;i++)
			if(isPrime(i))break;
	}
	else{
		cout<<n<<"是素数";
	}
	cout<<"大于这个数的第一个素数"<<i;
	system("pause");
}

加密算法

题目描述

编写加密程序,加密规则为:将所有字母转化为该字母后的第三个字母,即A->D、B->E、C->F、…、Y->B、Z->C。小写字母同上,其他字符不做转化。输入任意字符串,输出加密后的结果。
例如:输入"I love 007",输出"L oryh 007"

输入输出格式
输入描述:

输入一行字符串,长度小于100。

输出描述:

输出加密之后的结果。

输入输出样例
输入样例#:

I love 007

输出样例#:

L oryh 007

#include <math.h>
#include <string.h>
#include<iostream>
int main() {
    char str[100];
    gets_s(str);
    for (int i = 0; i < strlen(str); i++) {
        if (str[i] >= 'a' && str[i] <= 'z') str[i] ='a'+(str[i] + 3- 'a')%26;
        else if (str[i] >= 'A' && str[i] <= 'Z')str[i] = 'A' + (str[i] + 3-'A') % 26;
    }
    puts(str);
}

0和1的个数

题目描述

给定一个int型整数,输出这个整数的二进制的0和1的个数。

输入输出格式
输入描述:

输入一个整数n

输出描述:

输出这个整数的二进制的0和1的个数。

输入输出样例
输入样例#:

15

输出样例:

count0=28 count1=4

#include <math.h>
#include <string.h>
#include<iostream>
int main() {
    int n,count0=0,count1=0;
    scanf_s("%d", &n);
    while (n>0) {
        if (n % 2 == 1)count1++;
        n = n / 2;
    }
    count0 = 32 - count1;
    printf("count0=%d,count1=%d", count0, count1);
}

删除字符串2

题目描述

给你一个字符串S,要求你将字符串中出现的所有"gzu"(不区分大小写)子串删除,输出删除之后的S。
就是说出现“Gzu”、“GZU”、“GZu”、"gzU"都可以删除。

输入输出格式
输入描述:

输入一行字符串S,长度不超过100。

输出描述:

输出进行删除操作之后的S。

输入输出样例
输入样例#:

GzzGzukkgzUuu

输出样例#:

Gzzkkuu

#include <string.h>
#include<iostream>
using namespace std;
int main() {
    char a[100], b[100];
    gets_s(a);
    int len = strlen(a);
    int i, j = 0;
    for (i = 0; i < len; ) {
        if ((a[i] == 'g' || a[i] == 'G') && (a[i + 1] == 'z' || a[i + 1] == 'Z') && (a[i + 2] == 'u' || a[i + 2] == 'U')) {
            i = i + 3;
        }
        else {
            b[j++] = a[i++];
        }
    }
    for (int i = 0; i < j; i++) {
        cout << b[i];
    }
}
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值