pta例题

1.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:

输入在一行中给出A。

输出格式:

输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:

2

输出样例:

解释

234 235 243 245 253 254

324 325 342 345 352 354

423 425 432 435 452 453

523 524 532 534 542 543

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <stdio.h>

int main() {
    int A = 2;
    int count = 0;
    
    for (int i = A; i <= A + 3; i++) {
        for (int j = A; j <= A + 3; j++) {
            for (int k = A; k <= A + 3; k++) {
                if (i != j && i != k && j != k) {
                    printf("%d%d%d", i, j, k);
                    count++;
                    if (count % 6 == 0) {
                        printf("\n");
                    } else {
                        printf(" ");
                    }
                }
            }
        }
    }

    return 0;
}

这段C代码首先定义了一个整数变量A并赋值为2,表示从2开始的连续4个数字。然后使用三层嵌套的for循环来遍历所有由这4个数字组成的3位数。在每次循环中,通过判断i、j、k是否互不相同来排除重复数字的情况,然后将满足条件的3位数按照题目要求输出到控制台上,每行输出6个整数,整数之间以空格分隔,行末不能有多余空格。

最终输出的结果是满足条件的无重复数字的3位数,按照从小到大的顺序输出。

7-1 找出一个字符串中出现次数最多的一个字符

找出一个字符串中出现次数最多的一个字符。

输入格式:

给出一个字符串,字符串的长度不大于10^6,不区分大小写, 字符串中可能包含'A'-'Z','a'-'z',' '字符。

输出格式:

分别输出出现最多次数的字符(如果为字母,输出小写字母),出现的次数,用一个空格分隔,如果有字符出现次数相同的输出较小的字符。行末尾无多余空格和换行

输入样例:

abcdefghijklmnopqrstuvwxyzA

输出样例: 

a 2

#include<stdio.h>
#include<string.h>
int main() {
    int a[20000] = { 0 };
    char s[1000000];
    gets(s);
    int len = strlen(s);
    for (int i = 0; i < len; i++) {
        if (isalpha(s[i])) {//判断是否是字母
            int b = (int)s[i];
            if(b<97){
                a[b+32]++;//如果是大写字母次数加到小写字母
                    }
            else a[b]++;
        }
        else continue;
    }
    int max = 0;//判断出现次数最多
    for (int i = 97; i < 123; i++) {
        if (a[i] > a[max]){ 
            max = i;
                          }
    }
    char c = (char)max;
    printf("%c %d", c, a[max]);
    return 0;
}

7-3 9-5 查找(折半查找)

有15个整数按升序提排列,现输入一个数n,请写程序,用折半查找法判断该数在序列中是否存在,若存在则指出是第几个。数组的初值如下:
{1,4,6,9,13,16,19,28,40,100,123,222,236,679,899}

输入格式:

输入要查找的整数n。

输出格式:

如果找到输出:"找到了,在第...个。"
如果没有找到输出:"没有找到。"
输出的字符串中间标点为中文状态。

输入样例1:

在这里给出一组输入。例如:

28

在这里给出相应的输出。例如:

找到了,在第8个。 

 

#include<stdio.h>
int main(){

    int n;
    int a[15]={1,4,6,9,13,16,19,28,40,100,123,222,236,679,899};
    scanf("%d",&n);
    int left=0,right=14;
   
   while(left<=right){
        int mid=(left+right)/2;
        if(a[mid]==n){
            printf("找到了,在第%d个。",mid+1);
            return 0;
        }
          else if (n < a[mid]) {
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }
    printf("没有找到。");

    return 0;
}

6-2 寻找完美数

寻找完美数

所有真因子之和小于其本身的数称为亏数。如:4 的真因子 1、2 之和为 3,小于 4,是亏数。

所有真因子之和大于其本身的数称为盈数。如:12 的真因子 1、2、3、4、6 之和为 16,大于 12,是盈数。

不盈不亏的数,即:所有真因子之和等于其本身的数,称为完美数。如:6 的真因子 1、2、3 之和恰为 6,是完美数。

函数原型
void FindPerfect(int lower, int upper);

说明:参数 lower 和 upper 分别为整数区间的下限和上限。若在该范围内存在完美数,则函数输出范围内的所有完美数,否则输出“None”。

裁判程序

解释

#include <stdio.h>

int SumProperFactor(int x);
void FindPerfect(int lower, int upper);

int main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    FindPerfect(a, b);
    return 0;
}

......

/* 你提交的代码将被嵌在这里 */

 

输入样例1
0 30
输出样例1
6
28
输入样例2
100 400
输出样例2
None

 

#include <stdio.h>
int fact(int a,int b)
{
    int i,j,sum=0,flag=0,p=0;
	for(i=a;i<=b;i++)
	{
        sum=0;
		for(j=1;j<=i/2;j++)
		{
			if(i%j==0)
				sum+=j;
		}
		if(sum==i&&sum!=1)
		{
			if(p==0)
                printf("%d",i);  //这里是对格式有所要求
            else
                printf(" %d",i);
            p++;
            flag=1;
		}
	}
	if(flag==0)
		printf("None\n");
}
int main(void)
{
	int x,y;
    scanf("%d %d",&x,&y);
    fact(x,y);
	return 0;
}

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值