翁恺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; }
浙公网安备 33010602011771号