# 108年程式設計課堂練習參考解答 第一題 ``` #include <stdio.h> int is_prime(int num); int inverse(int num); int numOfFactor(int num); int main(void){ FILE* InverPrime_file_Pointer; int i; int sum = 0; InverPrime_file_Pointer = fopen("InverPrime.txt","w"); if( InverPrime_file_Pointer == NULL){ fprintf(InverPrime_file_Pointer,"Open failure."); return 1; } for(i = 10; i<100; i++){ if(is_prime(i) && is_prime(inverse(i))){ fprintf(InverPrime_file_Pointer,"%d ",i); sum += i; } } fprintf(InverPrime_file_Pointer,"\n%d\n",sum); return 0; } int is_prime(int num){ if( !numOfFactor(num) ){ return 1; } else return 0; } int inverse(int num){ return (num%10)*10 + num/10; } int numOfFactor(int num){ int i; int counter = 0; for( i = 2; i < num; i++){ if( ! (num%i) ) counter++; } return counter; } ``` 第二題 ``` #include <stdio.h> void stat(int n, int array[], float *ptr_Average, float *ptr_Variance); int main(void){ int data[7] = {21, 16, 41, 29, 19, 24, 43}; float my_ptr_average; float my_ptr_variance; stat(7 , data, &my_ptr_average, &my_ptr_variance); printf("aveg: %f, vari: %f\n", my_ptr_average, my_ptr_variance); return 0; } void stat(int n, int array[], float *ptr_Average, float *ptr_Variance){ int i ; float aveg=0; float vari=0; for( i = 0; i < n; i++){ aveg += array[i]; } aveg /= n; for( i = 0; i < n; i++){ vari += (array[i] - aveg) * (array[i] - aveg); } *ptr_Average = aveg; *ptr_Variance = vari/aveg; } ``` 第三題 ``` #include<stdio.h> int g(int n); int main(void){ int i; FILE* fp; fp = fopen("Out.txt","w"); if(fp == NULL){ printf("open fail."); return 1; } for(i = 10000; i <= 99999; i++){ fprintf(fp, "%d\n",g(i)); } return 0; } int g(int n){ int sum = 0; if ( n < 10 ) return n; while( n > 0){ sum += n%10; n /= 10; } return g(sum); } ```