1002
#include<stdio.h>
#include<string.h>
int main(){
int cha = '1' - 1;
int he = 0;
char n[200];
scanf("%s",&n);
for(int i = 0;i < strlen(n);i++){
he += n[i] -cha;}
char zhuan[10];
sprintf(zhuan,"%d",he);
for(int i_1 =0;i_1<strlen(zhuan);i_1++){
switch(zhuan[i_1]){
case '0':printf("ling");break;
case '1':printf("yi");break;
case '2':printf("er");break;
case '3':printf("san");break;
case '4':printf("si");break;
case '5':printf("wu");break;
case '6':printf("liu");break;
case '7':printf("qi");break;
case '8':printf("ba");break;
case '9':printf("jiu");break;
}
if(i_1 == strlen(zhuan)-1){
}
else{
printf(" ");}
}
return 0;}
1004
#include<stdio.h>
#include<string.h>
int main(){
int num;
scanf("%d",&num);
int to = 0,bo = 0,grade = 0;
char top[2][20],bottom[2][20];
for(int j = 0;j < num;j++){
char t[3][20];
scanf("%s %s %d",&t[0],&t[1],&grade);
if(j == 0){
to = grade;
bo = grade;
strcpy(top[0],t[0]);
strcpy(top[1],t[1]);
strcpy(bottom[0],t[0]);
strcpy(bottom[1],t[1]);
}else if(grade > to){
to = grade;
strcpy(top[0],t[0]);
strcpy(top[1],t[1]);
}else if(grade<bo){
bo = grade;
strcpy(bottom[0],t[0]);
strcpy(bottom[1],t[1]);}
}
printf("%s %s\n",top[0],top[1]);
printf("%s %s\n",bottom[0],bottom[1]);
return 0;}
1005
#include<stdio.h>
#include<string.h>
bool search(int a[],int b){
int i = 0;
while(a[i]!=0){
if(b== a[i]){
return false;}
i++;
}
a[i] = b;
return true;}
void method(int b,int a[]){
while(search(a,b)){
if(b%2==0){
b = b/2;}
else{
b = (3*b+1)/2;
}if(b!=1){
method(b,a);}
else{
break;}
}
}
int main(){
int num;
int a[100] = {0};
int t[100] = {0};
scanf("%d",&num);
for(int i = 0;i < num;i++){
scanf("%d",&t[i]);
if(t[i]!=2){
if(t[i]%2==0){
method(t[i]/2,a);}
else{
method((3*t[i]+1)/2,a);}
}else{
break;
}
}
int k,j = 0;
int c[20] = {0};
for(k = 0;k<100;k++){
if(t[k]== 0){
break;}
}
for(int i1 =0;i1<k;i1++){
bool bol = search(a,t[i1]);
if(bol){
c[j] = t[i1];
j++;
}
}
for(int i2 = 0;i2<j-1;i2++){
for(int i3 = 0;i3<j-1;i3++){
if(c[i3]<c[i3+1]){
int temp = c[i3];
c[i3] = c[i3+1];
c[i3+1] = temp;
}
}
}
for(int i4 = 0;i4 <j;i4++){
printf("%d",c[i4]);
if(i4!=j-1){
printf(" ");}else{
printf("\n");}}
return 0;}
非完全正确22/25,思路是用先求出关键数,再用冒泡做排序,建议不需要额外存数列,采用标记法
1007
#include<stdio.h>
#include<string.h>
int main(){
int t[100001] = {0};
int n;
scanf("%d",&n);
for(int i = 1;i<=n;i++){
for(int i1 = 1;i1 <=i;i1++){
if(i%i1==0&&i1!=1&&i1!=i){
t[i] = 1;
break;
}
}
}
for(int ii = 1;ii <= n;ii++){
if(t[ii]==0){
printf("%d\n",ii);}}
int num = 0;
for(int i2 =1;i2 <=n;i2++){
if(t[i2]==0){
if(t[i2+2]==0&&(i2+2)<=n){
num++;i2 = i2+3;
}
}
}
printf("%d\n",num);
return 0;}
非完全正确,18/20,因为1不是素数。真尴尬,差的2分因为没有用sqrt()求根函数判断素数,但是没搞懂用全循环为什么不行,怀疑应该是时间太久了,使用time.h的clock函数可以检测运行时间
clock_t start,end;
start = clock();
end = clock();
printf("time(秒)=%f\n",(double)(end-start)/CLK_TCK);
1010
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<time.h>
int main(){
int i = 0,m[2000] = {0};
while(scanf("%d %d",&m[i],&m[i+1])!=EOF){
if(m[i+1]!=0){
m[i] = m[i]*m[i+1];
m[i+1]--;
i+=2;
}else{
}
}
printf("\n");
for(int j = 0;j <=i-1;j+=2){
printf("%d %d",m[j],m[j+1]);
if(j!=i-2){
printf(" ");
}else{
printf("\n");}
}
return 0;}
没读懂题,题目要求当都为0时输出0 0,不要额外加回车
ac代码
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<time.h>
int main(){
int i = 0,m[2000] = {0};
while(scanf("%d %d",&m[i],&m[i+1])!=EOF){
if(m[i+1]!=0){
m[i] = m[i]*m[i+1];
m[i+1]--;
i+=2;
}else{
}
}
if(i==0){
printf("0 0");}
for(int j = 0;j <=i-1;j+=2){
printf("%d %d",m[j],m[j+1]);
if(j!=i-2){
printf(" ");
}else{
}
}
return 0;}
1011
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<time.h>
int main(){
int num;
long long m,n,o;
scanf("%d",&num);
for(int i = 0;i<num;i++){
scanf("%lld %lld %lld",&m,&n,&o);
long long add = m+n;
if(add>o){
printf("Case #%d: true",i+1);
}else{
printf("Case #%d: false",i+1);
}
if(i != num-1){
printf("\n");
}
}
return 0;}
vc不支持c99,此处用long long来保存数字,仅能用long long
PAT乙级1013
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<time.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
int temp = 2;
int num = 0;
int row = 0;
int i = 3;
if(m == 1){
printf("2");
m++;
if(n!=1){
printf(" ");
row++;}
}
while(num<=(n-m)){
for(int j = 1;j <= sqrt(i);j++){
if(i%j==0&&i!=j&&j!=1){
break;
}
if(j+1>sqrt(i)){
if(temp<m){
temp++;}
else{
printf("%d",i);
if(num!=n-m){
if(row<9){
printf(" ");
row++;
}else{
row = 0;
printf("\n");
}
}
num++;
}
}
}
i+=2;
}
return 0;}
一开始对于输出的特殊情况考虑不周和空格间隔数计算不对,比如输入 1 1
1014
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
char ch[4][61];
for(int i = 0;i<4;i++){
scanf("%s",&ch[i]);
}
int flag1 = 0,flag2 = 0;
for(i = 0;i < strlen(ch[0]);i++){
if(64<ch[0][i]&&ch[0][i]<72&&flag1 == 0){
for(int i1 = 0;i1 < strlen(ch[1]);i1++){
if(ch[0][i] == ch[1][i1]){
switch(ch[0][i] - 64){
case 1:printf("MON ");break;
case 2:printf("TUE ");break;
case 3:printf("WED ");break;
case 4:printf("THU ");break;
case 5:printf("FRI ");break;
case 6:printf("SAT ");break;
case 7:printf("SUN ");break;
}
flag1 = i1;
i++;
break;
}
}
}
if(((47<ch[0][i]&&ch[0][i]<58&&flag2 == 0)||(64<ch[0][i]&&ch[0][i]<79&&flag2 == 0))&&flag1>0){
for(int i2 = flag1;i2 < strlen(ch[1]);i2++){
if(ch[0][i] == ch[1][i2]){
switch(ch[0][i] - 48){
case 0:printf("00:");break;
case 1:printf("01:");break;
case 2:printf("02:");break;
case 3:printf("03:");break;
case 4:printf("04:");break;
case 5:printf("05:");break;
case 6:printf("06:");break;
case 7:printf("07:");break;
case 8:printf("08:");break;
case 9:printf("09:");break;
case 17:printf("10:");break;
case 18:printf("11:");break;
case 19:printf("12:");break;
case 20:printf("13:");break;
case 21:printf("14:");break;
case 22:printf("15:");break;
case 23:printf("16:");break;
case 24:printf("17:");break;
case 25:printf("18:");break;
case 26:printf("19:");break;
case 27:printf("20:");break;
case 28:printf("21:");break;
case 29:printf("22:");break;
case 30:printf("23:");break;
}
flag2 = i2;
break;
}
}
}
if(flag1 >0&&flag2 >0){
break;}
}
for(int ii =0;ii < strlen(ch[2]);ii++){
if(ch[2][ii] == ch[3][ii]&&ch[2][ii]>64&&ch[2][ii]<123){
if(ii<10){
printf("0%d",ii);
}else{
printf("%d",ii);
}
break;
}
}
return 0;}
==编译错误,gcc不支持for循环里创建的变量再次使用,又是题意搞错了,
1.for循环找到a[i]==b[i]并且 a[i]>=‘A’&&a[i]<=‘G’ ,记录DAY,continue;
2.继续运行找到a[i]==b[i]并且a[i]>=‘0’&&a[i]<=‘9’ || a[i]>=‘A’&&a[i]<=‘N’,记录HH,break;
3.再开一个for循环找到c[i]d[i]并且 c[i]>=‘a’&&c[i]<=‘z’ || c[i]>=‘A’&&c[i]<=‘Z’ ,记录MM,break;
ac代码
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
char ch[4][61];
for(int m = 0;m<4;m++){
scanf("%s",&ch[m]);
}
int flag1 = 0;
for(int i = 0;i < strlen(ch[0]);i++){
if(ch[0][i]>='A'&&ch[0][i]<='G'&&flag1 == 0&&ch[0][i] == ch[1][i]){
switch(ch[0][i] - 'A'){
case 0:printf("MON ");break;
case 1:printf("TUE ");break;
case 2:printf("WED ");break;
case 3:printf("THU ");break;
case 4:printf("FRI ");break;
case 5:printf("SAT ");break;
case 6:printf("SUN ");break;
}
flag1 = 1;
continue;
}
if(((ch[0][i]>='0'&&ch[0][i]<='9')||(ch[0][i]>='A'&&ch[0][i]<='N'))&&flag1>0&&ch[0][i] == ch[1][i]){
switch(ch[0][i] - '0'){
case 0:printf("00:");break;
case 1:printf("01:");break;
case 2:printf("02:");break;
case 3:printf("03:");break;
case 4:printf("04:");break;
case 5:printf("05:");break;
case 6:printf("06:");break;
case 7:printf("07:");break;
case 8:printf("08:");break;
case 9:printf("09:");break;
case 17:printf("10:");break;
case 18:printf("11:");break;
case 19:printf("12:");break;
case 20:printf("13:");break;
case 21:printf("14:");break;
case 22:printf("15:");break;
case 23:printf("16:");break;
case 24:printf("17:");break;
case 25:printf("18:");break;
case 26:printf("19:");break;
case 27:printf("20:");break;
case 28:printf("21:");break;
case 29:printf("22:");break;
case 30:printf("23:");break;
}
break;
}
}
for(int ii =0;ii < strlen(ch[2]);ii++){
if((ch[2][ii] == ch[3][ii])&&((ch[2][ii]>='a'&&ch[2][ii]<='z')||(ch[2][ii]>='A'&&ch[2][ii]<='Z'))){
if(ii<10){
printf("0%d",ii);
}else{
printf("%d",ii);
}
break;
}
}
return 0;}
1015
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<time.h>
struct stu{
int number;
int de;
int cai;
int dj;
}t[100000];
int main(){
int m[3];
scanf("%d %d %d",&m[0],&m[1],&m[2]);
int i;
int num = 0;
for(i = 0;i < m[0];i++){
scanf("%d %d %d",&t[i].number,&t[i].de,&t[i].cai);
if(t[i].de>=m[2]&&t[i].cai>=m[2]){
t[i].dj = 1;
}else if(t[i].de>=m[2]&&t[i].cai>=m[1]){
t[i].dj = 2;
}else if(t[i].de>=t[i].cai&&t[i].de>=m[1]&&t[i].cai>=m[1]){
t[i].dj = 3;
}else if(t[i].de>=m[1]&&t[i].cai>=m[1]){
t[i].dj = 4;
}else{
i--;
m[0]--;}
}
for(int j =1;j<m[0];j++){
for(i = 1;i < m[0];i++){
int temp1;
bool bol = false;
if(t[i-1].dj>t[i].dj){
bol = true;
}else if(((t[i-1].de+t[i-1].cai)<(t[i].de+t[i].cai))&&t[i-1].dj==t[i].dj){
bol = true;
}else if(t[i-1].dj==t[i].dj&&((t[i-1].de+t[i-1].cai)==(t[i].de+t[i].cai))&&t[i-1].de<t[i].de){
bol = true;
}else if(t[i-1].dj==t[i].dj&&((t[i-1].de+t[i-1].cai)==(t[i].de+t[i].cai))&&t[i-1].de==t[i].de&&t[i-1].number>t[i].number){
bol = true;
}
if(bol){
temp1 = t[i-1].number;
t[i-1].number = t[i].number;
t[i].number = temp1;
temp1 = t[i-1].de;
t[i-1].de = t[i].de;
t[i].de = temp1;
temp1 = t[i-1].cai;
t[i-1].cai = t[i].cai;
t[i].cai = temp1;
temp1 = t[i-1].dj;
t[i-1].dj = t[i].dj;
t[i].dj = temp1;
}
}}
printf("%d\n",m[0]);
for(i = 0;i < m[0];i++){
printf("%d %d %d\n",t[i].number,t[i].de,t[i].cai);
}
return 0;}
方法绝对超时了,注意结构体的使用,应该先分类后排序,按类别排序
1017
除法可以一位一位除
1019
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<time.h>
void sort(char c[]){
int i,k;
for(i = 0;i<3;i++){
for(int j = 0;j < 3;j++){
if(c[j]>c[j+1]){
char temp;
temp = c[j];
c[j] = c[j+1];
c[j+1] = temp;
}
}
}
int a[2] = {0,0};
for(k = 0;k < 4;k++){
a[0] = a[0]*10 + c[k] - '0';
a[1] = a[1]*10 + c[3-k] - '0';
}
if(a[0]<10){
printf("%d - 000%d = ",a[1],a[0]);
}else if(a[0]<100){
printf("%d - 00%d = ",a[1],a[0]);
}else if(a[0]<1000){
printf("%d - 0%d = ",a[1],a[0]);
}else{
printf("%d - %d = ",a[1],a[0]);
}
if(a[1]-a[0]<10){
printf("000%d",a[1]-a[0]);
}else if(a[1]-a[0]<100){
printf("00%d",a[1]-a[0]);
}else if(a[1]-a[0]<1000){
printf("0%d",a[1]-a[0]);
}else{
printf("%d",a[1]-a[0]);
}
if(a[1]-a[0]==6174){
}else{
printf("\n");
sprintf(c,"%04d",a[1]-a[0]);
sort(c);
}
}
int main(){
char c[5];
while(1){
(void)scanf("%s",c);
if(c[0]==c[1]&&c[1]==c[2]&&c[2]==c[3]){
printf("%s - %s = 0000",c,c);
}else{
sort(c);
}}
return 0;}
部分正确,三个测试点失败,至今不懂原因,更好的方法是用整型数组来存每一位数,然后输出采用%04d