jishuyuan

导航

翁恺c语言 2023 PAT 习题解析(大连东软限定)

自己要是没做一遍的话,就先看题目先做一遍,然后看我解析。

看不懂的话可以问我,

先写一遍代码:

include<stdio.h>

int main()

{
int a=0;

int b=0;

scanf("%d %d",&a,&b);

printf("%d + %d = %d\n",a,b,a+b);
printf("%d - %d = %d\n",a,b,a-b);
printf("%d * %d = %d\n",a,b,a*b);
printf("%d / %d = %d\n",a,b,a/b);

return 0;

}

 

这道题没什么难点,就是有一点要注意,就是他的输出,输入的模式,一定要以相同格式输入输出。

 

 

#include<stdio.h>
int main()
{
int ihour,iminute;
scanf("%d %d",&ihour,&iminute);

int t1=ihour/100*60+ihour%100;
int t2=iminute/100*60+iminute%100;

int t=t1+t2;

int hour=t/60*100;
int minute=t%60;

printf("%d",hour+minute);
return 0;

}

 

这道题可能对刚学c语言的人来说有些许复杂,我个人思路如下(其实我建议你们看看翁恺的思路):

化整为0,化0为整,先将输入的两个数据合并为一个,再将一个数据进行转化。

其实这里的看翁恺的,不会的地方可以找我。

 

inc

 

#include<stdio,h>

int main()

{

int a,b;

scanf("%d",&a);

int a1=a%10*100;

int a2=a%100/10*10;

int a3=a/100;


b=a1+a2+a3;
 

printf("%d",b);

return 0;
}

 

 

#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);

int a1=a/16*10;
int a2=a%16;

int result=a1+a2;
printf("%d",result);

return 0;
}

 

16进制换10进制的方法:

例如: 0x12 

              将12中间隔开1           2

                                    1*16+   2    =18;

ok了,结果就是18。

 

 

这个我实在是懒得写,你们加油。

 

 6.1.1 编程练习解析

#include<stdio.h>
int main()
{
    int n=0;
    int o=0;
    scanf("%d",&n);
    int count=1;

while(count<25){
    for(int i=n;i<n+4;i++){
        for(int j=n;j<n+4;j++){
            for(int k=n;k<n+4;k++){
                if(i!=j&&i!=k&&j!=k){
                    printf("%d",i*100+j*10+k);
if(count%6==0){
printf("\n");}
else{
printf(" ") ;}       
                      count++;
                }
            }
        }
    }
}
    return 0;
}

 

#include <stdio.h>

int main() {
    int n; // n位的正整数
    scanf("%d", &n);

    int mask = 1;
    for (int i = 1; i < n; i++) {
        mask *= 10;
    }

    for (int index = mask; index < mask * 10; index++) {
        // 取出每个位
        int num = index;
        int sum = 0;

        while (num > 0) {
            int digit = num % 10;
            int power = 1; // 初始化 power

            // 计算单个位数的 n 次方
            for (int j = 1; j <= n; j++) {
                power *= digit;
            }

            sum += power;
            num /= 10;
        }

        if (sum == index) {
            printf("%d\n", index);
        }
    }
    return 0;
}

 

#include<stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    
    for(int b=1;b<=n;b++){
        for(int a=1;a<=b;a++){
    
    printf("%d*%d=%d",a,b,a*b);
    
    if(a!=b&&a*b/10!=0){
    printf("  ");}
    else if(a!=b&&a*b/10==0) {
    printf("   ");}
    else if(a==b)  {
    printf("\n");}
                         }
                          }
           
    return 0;
}

 

#include<stdio.h>
int main()
{
    int  initial,end;
    int count=0;
    int sum=0;
    scanf("%d %d",&initial,&end);
    for(int n=initial;n<=end;n++){
        for(int i=2;i<=n;i++){
            if(n%i==0&&n!=i){
                break;}
                if(i==n){
                    count++;
                    sum+=n;
                }
                //printf("count=%d,sum=%d\n",count,sum);
        }
    }
    
    printf("%d %d",count,sum);
    return 0;
}

 

 

#include<stdio.h>
 int main()
 {
     int n=0;
     scanf("%d",&n);
     
     double sum=0;
     double son=1;
    double mum=2;
    
    for(int i=1;i<=n;i++){
        
        sum+=mum/son;
        int temp;
        temp=son;
        son=mum;
        mum+=temp;
    }
     printf("%.2f",sum);
     
     return 0;
 }

 

 

#include<stdio.h>
int main()
{
    int radix=0;
    int n;
    scanf("%d %d",&radix,&n);
    int sum=0;
    int t=0;//写int t=radix没用 
    
    for(int i=1;i<=n;i++){
        t=t*10+radix;//这样保证t的第一个值是0,第二个是radix的值 
        sum+=t;
    }
    printf("%d",sum);
    
    return 0;
}

 

posted on 2023-09-08 20:26  稽术员  阅读(526)  评论(0)    收藏  举报