【題解】TQC+ 程式語言C === [Code Judger](https://www.codejudger.com/) 102:蘋果汁23.34元 -- ```c= #include <stdio.h> int main(){ int n; scanf("%d", &n); printf("%.2f", n*23.34); } ``` 104:兩浮點數和 -- ```c= #include <stdio.h> int main(){ float a, b; scanf("%f %f", &a, &b); printf("total=%.2f", a+b); } ``` 106:兩點距離 -- ```c= #include <stdio.h> #include <math.h> int main(){ int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); printf("%.2f", sqrt(pow(a-c,2)+pow(b-d,2)));; } ``` 108:圓的直徑 -- ```c= #include <stdio.h> int main(){ int n; scanf("%d", &n); printf("%-10d\n%-10.2f\n%-10.4f", n, n/2.0, (n/2.0)*(n/2.0)*3.1415); } ``` 110:輸入a,b,c -- ```c= #include <stdio.h> int main(){ int a, b, c; scanf("%d %d %d", &a, &b, &c); if(a>=60 && a<100) printf("1\n"); else printf("0\n"); printf("%.2f\n", (b+1)/10.0); if(a>=c) printf("%d", a); else printf("%d", c); } ``` 202:輸入分數 -- ```c= #include <stdio.h> int main(){ int n; scanf("%d", &n); if(n<0 || n>100) printf("error"); else if(n>60) printf("%d", n+10); else printf("%d", n+5); } ``` 204:簡易計算機 -- ```c= #include <stdio.h> int main(){ int a, b, ans; char c; scanf("%d %d %c", &a, &b, &c); if(c=='+') ans=a+b; else if(c=='-') ans=a-b; else if(c=='*') ans=a*b; else{ printf("error"); return 0; } printf("%d%c%d=%d",a,c,b,ans); } ``` 206:奇數和 -- ```c= #include <stdio.h> int main(){ int a, b, ans=0; scanf("%d %d", &a, &b); while(a<=b) ans+=a, a+=2; printf("%d", ans); } ``` 208:質數 (👍好題) -- ```c= #include <stdio.h> #include <string.h> int main(){ int n, i, j; scanf("%d", &n); int prime[n]; memset(prime, 1, sizeof(prime)); prime[0]=0, prime[1]=0; for(i=2; i<n; i++) if(prime[i]) for(j=i*2; j<n; j+=i) prime[j]=0; for(i=2; i<n; i++) if(prime[i]) printf("%d ", i); } ``` 210:最大公因數 -- 題目:輸入 a、b,輸出 a、b 的最大公因數和最小公倍數。 ```c= #include <stdio.h> #include <stdlib.h> int main(){ int a, b; scanf("%d %d", &a, &b); int aa=a, bb=b; while(b!=0){ int c=a%b; a=b; b=c; } printf("%d\n%d\n", a, aa*bb/a); } ``` 說明:使用輾轉相除法。 302:期中考分數 -- ```c= #include <stdio.h> #include <stdlib.h> char compute(int score){ if(score<0 || score>100) return -1; if(score >= 60) score += 5; else score+=10; return score; } int main(){ int score, final; scanf("%d", &score); final= compute(score); printf("%d", final); } ``` 304:3的倍數 -- ```c= #include <stdio.h> #include <stdlib.h> int compute(int a[]){ int i,n=0; for(i=0; i<6; i++) if(a[i]%3==0) n++; return n; } int main(){ int n , arr[6],i; for(i=0; i<6; i++)scanf("%d",&arr[i]); printf("%d\n",compute(arr)); } ``` 306:n階乘 -- ```c= #include <stdio.h> #include <stdlib.h> int compute(int n){ if(n==0) return 1; if(n>=1) return n*compute(n-1); } int main(){ int n; scanf("%d", &n); printf("%d!=%d", n,compute(n)); } ``` 308:費氏數列 -- ```c= #include <stdio.h> #include <stdlib.h> int compute(int n){ if(n<=2) return 1; else return compute(n-1)+compute(n-2); } int main(){ int n, i, a[10]; scanf("%d", &n); for(i=0; i<n; i++){ a[i]=compute(i+1); } for(i=n-1; i>=0; i--) printf("fib(%d)=%d\n",i+1,a[i]); } ``` 310:阿姆斯壯數 -- ```c= #include <stdio.h> #include <stdlib.h> int compute(int n){ int i; int x= 0; for(i=1; i<n; i++){ int count = 1, num = 0, tmp=i; while(tmp>9){ count++; tmp/=10; } tmp=i; while(tmp){ num+=(int)(pow(tmp%10,count)+0.5); tmp/=10; } if(num==i){ printf("%d\n",i); x+=i; } } return x; } int main(){ int n; scanf("%d",&n); if(n>0&&n<1000){ printf("%d\n",compute(n)); }else printf("error\n"); } ``` 402:比對兩字串 -- ```c= #include <stdio.h> #include <stdlib.h> int main() { char str1[128]; char str2[128]; int n,result; gets(str1); gets(str2); scanf("%d",&n); if(n<=strlen(str1)){ result=strncmp(str1,str2,n); if(result>0){ printf("%s>%s\n",str1,str2); }else if(result==0){ printf("%s=%s\n",str1,str2); }else{ printf("%s<%s\n",str1,str2); } } else{ printf("error\n"); } return 0; } ``` 404:出現最多次的英文字母 -- ```c= #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int a[26],i; char str[50]; for(i=0; i<26; i++) a[i]=0; scanf("%s",str); for(i=0; i<strlen(str); i++) a[str[i]-'a']++; int max=0, max_num=a[0]; for(i=1; i<26; i++){ if(a[i]>max_num){ max=i; max_num=a[i]; } } printf("%c\n",max+'a'); printf("%d\n",max_num); return 0; } ``` 406:鍵盤 -- ```c= #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char input[50]={}, input2[50]={}; scanf("%s", input); char big[]="QWERTYUIOPPASDFGHJKLLZXCVBNMM"; char small[]="qwertyuioppasdfghjkllzxcvbnmm"; int i,j; for(i=0; i<strlen(input); i++){ if(input[i]>='A' && input[i]<='Z'){ for(j=0; j<strlen(big); j++){ if(input[i]==big[j]){ input2[i]=big[j+1]; break; } } }else if(input[i]>='a' && input[i]<='z'){ for(j=0; j<strlen(small); j++){ if(input[i]==small[j]){ input2[i]=small[j+1]; break; } } } } printf("%s\n",input2); return 0; } ``` 408:字串反轉 -- ```c= #include <stdio.h> #include <stdlib.h> #include <string.h> void compute(char str[]); int main(){ char str1[20],str2[20],str3[40]; scanf("%s %s",str1,str2); if(strlen(str1)<=3||strlen(str2)<=3||strlen(str1)>20||strlen(str2)>20) printf("error\n"); else{ printf("%d\n%d\n",strlen(str1),strlen(str2)); strcpy(str3, str1); strcat(str3, str2); compute(str3); } return 0; } void compute(char str[]){ int i=0,j=0; while(str[i]!='\0') i++; for(j=i-1; j>=0; j--) printf("%c",str[j]); } ``` 410:字首轉為大寫 -- ```c= #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main(){ int line,line_count=0; scanf("%d",&line); FILE *read=fopen("read.txt","r"); FILE *write=fopen("write.txt","w"); char buf[100]; while(fgets(buf,100,read)!=NULL){ int i; line_count++; int len = strlen(buf); if(isalpha(buf[0])) buf[0]=toupper(buf[0]); for(i=1;i<len;i++){ if(buf[i-1]==' '&&isalpha(buf[i])){ buf[i]= toupper(buf[i]); } } printf("%s",buf); fputs(buf,write); if(line==line_count) break; } fclose(read); fclose(write); return 0; } ``` 502 -- ```c= #include <stdio.h> #include <stdlib.h> int main(){ int num,a[10],i=0,sum=1,j; scanf("%d", &num); if(num==0) printf("0=0\n"); else{ while(num>0){ a[i]=num%10; sum*=a[i]; num/=10; i++; } for(j=i-1; j>=0; j--){ printf("%d",a[j]); if(j!=0) printf("*"); } printf("=%d\n",sum); } return 0; } ``` 504 -- ```c= #include <stdio.h> #include <stdlib.h> int main(){ int num, ori, remainder, res=0; scanf("%d", &num); ori=num; while(num!=0){ remainder=num%10; num/=10; res=(res*10)+remainder; } if(res==ori) printf("Yes\n"); else printf("No\n"); return 0; } ``` 506 -- ```c= #include <stdio.h> #include <stdlib.h> #include <math.h> int compute(int n); int main(){ int n, i; scanf("%d", &n); if(compute(n)==1) printf("-1\n"); else{ for(i=2; i<=n; i++){ while(n!=i){ if(n%i==0){ printf("%d*",i); n/=i; }else break; } } printf("%d", n); } } int compute(int n){ if(n==1) return 0; int i; for(i=2; i<=sqrt(n); i++){ if(n%i==0) return 0; } return 1; } ``` 508 -- ```c= #include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ char a[8],b[8]; int i,power=7,asum=0,bsum=0,sum=0; scanf("%s",a); scanf("%s",b); for(i=0; i<8; i++,power--){ if(a[i]=='1') asum+=pow(2,power); if(b[i]=='1') bsum+=pow(2,power); } sum+=asum+bsum; printf("%d + %d = %d\n",asum,bsum,sum); char ans[8]; power=7; for(i=0; i<8; i++,power--){ if(sum-pow(2,power)>=0){ sum-=pow(2,power); ans[i]=1; } else ans[i]=0; } for(i=0; i<8; i++){ printf("%d",ans[i]); } return 0; } ``` 510 -- ```c= #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int n, m, i, j; scanf("%d %d", &n, &m); int grid[n+2][m+2]; memset(grid, 0, sizeof(grid)); for(i=1; i<=n; i++){ for(j=1; j<=m; j++){ scanf("%d", &grid[i][j]); } } for(i=1; i<=n; i++){ for(j=1; j<=m; j++){ if(grid[i][j] == 0) printf(" "); else if(grid[i+1][j]==0|| grid[i][j+1]==0|| grid[i-1][j]==0|| grid[i][j-1]==0) printf("*"); else printf(" "); } printf("\n"); } return 0; } ``` 602 -- ```c= #include <stdio.h> #include <stdlib.h> int main(){ char s[50]={-1}; int i, count=0; scanf("%s", s); for(i=0; i<sizeof(s); i++){ if(isupper(s[i])){ printf("%c",s[i]); count++; } } printf("\n"); for(i=0; i<sizeof(s); i++){ if(islower(s[i])) printf("%c",s[i]); } printf("\n"); printf("%d",count); return 0; } ``` 604 -- ```c= #include <stdio.h> #include <stdlib.h> int main(){ int num[9], sum=0, i, j, tmp; for(i=0; i<9; i++){ scanf("%d", &num[i]); sum+=num[i]; } for(i=0; i<9; i++){ for(j=i+1; j<9; j++){ if(num[i]>num[j]){ tmp=num[j]; num[j]=num[i]; num[i]=tmp; } } } for(i=0; i<9; i++) printf("%d\n", num[i]); printf("sum = %d\n", sum); } ``` 606 -- ```c= #include <stdio.h> #include <stdlib.h> int main(){ char id[3][6]; int i; for(i=0; i<3; i++){ scanf("%s", id[i]); if(((id[i][0]+id[i][2]+id[i][4]-48*3)+(id[i][1]+id[i][3]-48*2)*5)%26 == id[i][5]-64) printf("Pass\n"); else printf("Fail\n"); } return 0; } ``` 608 -- ```c= #include <stdio.h> #include <stdlib.h> int compute(int *a){ long long int base = 0; int i, point = 0; for(i=0; i<10; i++){ if(base==0){ base+=1; base = base << a[i]-1; //左移 } else switch(a[i]){ case 0: break; case 1: base = base << 1; base += 1; //2^0=1 break; case 2: base = base << 2; base += 2; //2^1=2 break; case 3: base = base << 3; base += 4; //2^2=4 break; case 4: base = base << 4; base += 8; //2^3=8 break; default: break; } } base = base >> 3; //右移 while(base != 0){ if(base & 1){ //& 是位運算符 point++; base = base >> 1; }else{ base = base >> 1; } } return point; } int main(){ int a[10], i; for(i=0; i<10; i++){ scanf("%d", &a[i]); } printf("score = %d\n",compute(a)); return 0; } ``` 610 -- ```c= #include <stdio.h> #include <stdlib.h> int main(){ int a1, b1, a2, b2, i, j; scanf("%d %d",&a1,&b1); int m1[a1][b1]; for(i=0; i<a1; i++) for(j=0; j<b1; j++) scanf("%d",&m1[i][j]); scanf("%d %d",&a2,&b2); int m2[a2][b2]; for(i=0; i<a2; i++) for(j=0; j<b2; j++) scanf("%d",&m2[i][j]); if(b1!=a2) printf("error\n"); else{ int ans[a1][b2], k, sum; for(i=0; i<a1; i++){ for(j=0; j<b2; j++){ for(sum=k=0; k<b1; k++) sum+=m1[i][k]*m2[k][j]; //重點,一直要做的是k(因為for在內部) ans[i][j]=sum; } } for(i=0; i<a1; i++){ for(j=0; j<b2; j++){ if(j!=0) printf(" "); printf("%d",ans[i][j]); } printf("\n"); } } return 0; } ``` 702 -- ```c= #include <stdio.h> #include <string.h> #include <math.h> int main(){ char s[10]; int ans=0, i, p; scanf("%s", s); for(i=0, p=strlen(s)-1; i<strlen(s); i++, p--){ if(s[i] == '1') ans += pow(2, p); } printf("%d\n", ans); } ``` 704 -- ```c= #include <stdio.h> #include <string.h> int main(){ int n, i, j, d, count=0, check; scanf("%d", &n); int a[n], b[n]; memset(b, 0, sizeof(b)); for(i=0; i<n; i++){ scanf("%d", &d); check = 0; for(j=0; j<count; j++){ if(a[j] == d){ b[j]++; check = 1; break; } } if(check == 0){ a[count] = d; b[count]++; count++; } } for(i=0; i<count; i++){ if(b[i] > n/2){ printf("%d\n", a[i]); return 0; } } printf("error\n"); } ``` 706 -- ```c= #include <stdio.h> int main(){ int a[10], count=3, i, j; for(i=0; i<4; i++) scanf("%d", &a[i]); FILE *f = fopen("read.txt", "r"); while(fscanf(f, "%d", &a[++count]) != EOF); for(i=0; i<count; i++){ for(j=i+1; j<count; j++){ if(a[i] > a[j]){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } } FILE *f2 = fopen("write.txt", "w"); for(i=0; i<count; i++){ printf("%d\n", a[i]); fprintf(f2, "%d\n", a[i]); } } ``` 708 -- ```c= #include <stdio.h> #include <stdlib.h> struct time{ int hour, minute; }; int compute(struct time t[]); int main(){ int i; struct time t[3]; for(i=0; i<3; i++){ scanf("%d %d",&t[i].hour, &t[i].minute); } int am = compute(t); printf("%d\n",am); return 0; } int compute(struct time t[]){ int i; int am = 0; for(i=0; i<3; i++){ if(t[i].hour>=0 && t[i].hour<=11){ am++; if(t[i].hour==0) printf("AM 12:%d\n", t[i].minute); else printf("AM %d:%d\n", t[i].hour, t[i].minute); }else{ if(t[i].hour == 12) printf("PM 12:%d\n", t[i].minute); else printf("PM %d:%d\n", t[i].hour-12, t[i].minute); } } return am; } ``` 710 -- ```c= #include <stdio.h> typedef struct Frame{ int frame; int myTime; }FRAME; void FIFO(FRAME * frame, int * p){ int i=0, j=0, k=0, sw=10, index=0; for(i=0; i<10; i++){ j=0; while(p[i]!=-1){ if(frame[j].frame==0){ frame[j].frame=p[i]; frame[j].myTime=i; p[i]=-1; }else if(frame[j].frame==p[i]){ p[i]=-1; }else if(j==3){ for(k=0; k<4; k++){ if(frame[k].myTime<sw){ sw=frame[k].myTime; index=k; } } frame[index].frame=p[i]; frame[index].myTime=i; p[i]=-1; sw=10; } j++; } for(j=0; j<4; j++) printf("%-2d",frame[j].frame); printf("\n"); } } int main(){ int i, p[10], s; for(i=0; i<10; i++) scanf("%d", &p[i]); FRAME frame[4]; for(i=0; i<4; i++) frame[i].frame = 0; FIFO(frame, p); } ```