2014年8月30日 星期六

(綠色皮) 最新C程式語言, 施威銘研究室 著, 旗標 第十七章 '參考' 答案

==============================================
/* 程式檔名:test_17-55-1*/
/* 程式目的:以fopen()函式開啟檔案 abc.txt 唯讀取模式,開啟成功或失敗都從螢幕上顯示訊息 最後請關閉您所開啟的檔案*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400826*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void Pause(const char* message);

int main(int argc, char *argv[])
{
    FILE *stream;
    
    stream=fopen("abc.txt","r");
    if(stream!=NULL)
    {
     printf("abc.txt檔以唯讀模式開啟完成\n");                
    }
    else
    {
     printf("檔案開啟失敗!!\n");
    }
    
    if(fclose(stream)== EOF)
    {
     printf("關閉abc.txt檔失敗!!\n");                    
    }
    else
    {
     printf("關閉abc.txt檔完成!!\n");                    
    }
    
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 

}

/* 檔名: abc.txt
f0qu994f43jf0f9w93423ffup
==============================================
/* 程式檔名:test_17-55-2*/
/* 程式目的:以fopen()函式開啟檔案 abc.txt 並將檔案資料中的所有數字除去,把結果顯示在螢幕上*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400826*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void Pause(const char* message);

int main(int argc, char *argv[])
{
    FILE *stream;
    char string[100];
    unsigned int i;
    int s;
    
    stream=fopen("abc.txt","r");
    
    if(stream == NULL)
    {
     printf("檔案開啟失敗!!\n");  
     return 0;          
    }
    else
    {
     while(fgets(string,100,stream)!=NULL)
     {
      s=strlen(string);
      for(i=0;i<s;i++)
      {
       if(string[i]>='a' && string[i]<='z')     
       {
        printf("%c",string[i]);                  
       }           
       else
       {
        fseek(stream,1,SEEK_CUR); 
       }
      } 
     }
     fclose(stream);
    }
    
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 

}

==============================================
/* 程式檔名:test_17-55-3*/
/* 程式目的:以fopen()函式開啟檔案 abc.txt 檔案中的資料分割成兩個檔案 所有數字資料寫入abcnum.txt 所有字母資料寫入abcaph.txt*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400826*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void Pause(const char* message);

int main(int argc, char *argv[])
{
    FILE *stream,*stream1,*stream2;
    char string[100];
    unsigned int i;
    int s;
    
    stream=fopen("abc.txt","r");
    stream1=fopen("abcnum.txt","w");
    stream2=fopen("abcaph.txt","w");
    if(stream == NULL || stream1 == NULL || stream2 == NULL)
    {
     printf("檔案開啟失敗!!\n");  
     return 0;          
    }
    else
    {
     while(fgets(string,100,stream)!=NULL)
     {
      s=strlen(string);
      for(i=0;i<s;i++)
      {
       if(string[i]>='a' && string[i]<='z')     
       {
        fprintf(stream2,"%c",string[i]);             
       }           
       else
       {
        fprintf(stream1,"%c",string[i]);    
       }
      } 
     }
     fclose(stream);
    }
    
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 

}


/* 檔名: abc.txt
f0qu994f43jf0f9w93423ffup

/* 檔名: abcaph.txt
fqufjffwffup

/* 檔名: abcnum.txt
0994430993423
==============================================
/* 程式檔名:test_17-55-4*/
/* 程式目的:試寫一程式附加上行號結果輸出到新的檔案中*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400826*/
#include <stdio.h>
#include <stdlib.h>
#define SIZE 60 
void Pause(const char* message);


int main(int argc, char *argv[])
{
    FILE *stream1;
    FILE *stream2;
    int i=0;
    char str1[SIZE];
    
    stream1=fopen("addnumber.txt","r");
    stream2=fopen("newaddnumber.txt","w");
    
    if(stream1 == NULL ||stream2 == NULL)
    {
     printf("檔案開啟失敗!!\n");  
     return 0;          
    }
    else
    {
     while(fgets(str1,SIZE,stream1)!=NULL)
     {
      i++;
      fprintf(stream2,"%02d %s",i,str1);                                                                 
     }

     fclose(stream1);
     fclose(stream2);
    }
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 
}


/* 檔名: addnumber.txt
a
b
c
d
e
f
g

/* 檔名: newaddnumber.txt
01 a
02 b
03 c
04 d
05 e
06 f
07 g

==============================================
/* 程式檔名:test_17-55-5*/
/* 程式目的:試寫一程式刪除行號結果輸出到新的檔案中*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400827*/
#include <stdio.h>
#include <stdlib.h>
#define SIZE 60 
void Pause(const char* message);


int main(int argc, char *argv[])
{
    FILE *stream1;
    FILE *stream2;
    char str1[SIZE];
    int i;
    
    stream1=fopen("newaddnumber.txt","r");
    stream2=fopen("deladdnumber.txt","w");
    
    if(stream1 == NULL || stream2 == NULL)
    {
     printf("檔案開啟失敗!!\n");  
     return 0;          
    }
    else
    {    
     while(fgets(str1,SIZE,stream1)!=NULL)
     {
      
      fseek(stream1,3,SEEK_CUR);
      fprintf(stream2,"%s",str1);                                           
     }
     fseek(stream2,0,SEEK_SET);
     fputs(" \n",stream2);   
     fclose(stream1);
     fclose(stream2);
    }
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
    
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 
}


/* 檔名: newaddnumber.txt
01 a
02 b
03 c
04 d
05 e
06 f
07 g

/* 檔名: deladdnumber.txt
a
b
c
d
e
f
g

==============================================
/* 程式檔名:test_17-55-6*/
/* 程式目的:產生10個1~100間的亂數 排序後寫入一個新的檔案中*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400828*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>     
#define myrandom() srand((unsigned)time(NULL)) //取得系統時間為亂數種子 

void Pause(const char* message);
int main(void)
{                
    FILE *stream1;
    stream1=fopen("randnum.txt","w");     
    int i,j;
    int array[10],temp;
    myrandom();  
    for(i=1;i<=10;i++)
    {
     array[i]=rand()%100+1; 
    }
    for(i=1;i<=10;i++)
    {
        for(j=i+1;j<=10;j++)
         {        
             if(array[i]>array[j])
             {
              temp=array[i];
              array[i]=array[j];
              array[j]=temp;                  
             }      
         }
    }
    for(i=1;i<=10;i++)
    {
     printf("%d\n",array[i]);  
     fprintf(stream1,"%d ",array[i]);  
    }
    fclose(stream1);
    
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 
}


/* 檔名: randnum.txt
1 7 11 24 40 44 53 70 74 100 

==============================================
/* 程式檔名:test_17-55-7*/
/* 程式目的:計算銀行利息與年利率*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400830*/
#include <stdio.h>
#include <stdlib.h>
void Pause(const char* message);

struct person
{
    char name[10];
    float price;
    float banksum;
    float bankyearsum;   
}data[4];

int main(int argc, char *argv[])
{
    FILE *stream;
    int amount,week,i=0;

    stream=fopen("money.txt","r");

    if(stream == NULL)
    {
     printf("檔案開啟失敗!!\n");  
     return 0;          
    }
    else
    {
     printf("請輸入本金:");
     scanf("%d",&amount);
     printf("請輸入時期1~12個月:");
     scanf("%d",&week);
     while(fscanf(stream,"%s",data[i].name)!=EOF)
     {
      fscanf(stream,"%f",&data[i].price);
      printf("%s %.3f \n",data[i].name,data[i].price);
      data[i].banksum=amount*data[i].price*week;
      data[i].bankyearsum=data[i].banksum/week/amount*100; 
      printf("%s 利息=%.2f 年利率=%.2f%\n",data[i].name,data[i].banksum,data[i].bankyearsum);
     }
     fclose(stream);
    }
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 
}


/* 檔名: money.txt
誠泰銀行 0.025
萬泰銀行 0.019
寶島銀行 0.027
台新銀行 0.024
遠東銀行 0.020
==============================================
/* 程式檔名:test_17-55-8*/
/* 程式目的:計算銀行利息與年利率 顯示出利息最高的銀行*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400830*/
#include <stdio.h>
#include <stdlib.h>
void Pause(const char* message);

struct person
{
    char name[10];
    float price;
    float banksum;
    float bankyearsum;   
}data[4];

int main(int argc, char *argv[])
{
    FILE *stream;
    int amount,week,i=0,flag=0;
    float maxsum=0;
    
    stream=fopen("money.txt","r");
    if(stream == NULL)
    {
     printf("檔案開啟失敗!!\n");  
     return 0;          
    }
    else
    {
     printf("請輸入本金:");
     scanf("%d",&amount);
     printf("請輸入時期1~12個月:");
     scanf("%d",&week);
     while(fscanf(stream,"%s",data[i].name)!=EOF)
     {
      fscanf(stream,"%f",&data[i].price);
      printf("%s %.3f \n",data[i].name,data[i].price);
      data[i].banksum=amount*data[i].price*week;
      data[i].bankyearsum=data[i].banksum/week/amount*100; 
      printf("%s 利息=%.2f 年利率=%.2f%\n",data[i].name,data[i].banksum,data[i].bankyearsum);
      if(data[i].banksum > maxsum)
      {     
       maxsum=data[i].banksum;  
       flag=i;  
       i++;  
      }
     }
     printf("\n");
     printf("利息最高的銀行 %s %.2f\n",data[flag].name,maxsum);
     fclose(stream);
    }  
    
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 
}


/* 檔名: money.txt
誠泰銀行 0.025
萬泰銀行 0.019
寶島銀行 0.027
台新銀行 0.024
遠東銀行 0.020
==============================================
/* 程式檔名:test_17-55-9*/
/* 程式目的:排序學生平均產生檔案,並加印一欄名次*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400828*/
#include <stdio.h>
#include <stdlib.h>  
#define SIZE 60 

void Pause(const char* message);

struct person
{
    char name[10];
    float number;   
}data[4];

int main(void)
{                
    FILE *stream1;
    FILE *stream2;
    stream1=fopen("gradedat.txt","r");   
    stream2=fopen("output.txt","w");   
    
    int i=0,j=0;
    float temp=0;
    char tempname[10];
    
    if(stream1 == NULL || stream2 == NULL)
    {
     printf("檔案開啟失敗!!\n");  
     return 0;          
    }
    else
    {
     while(fscanf(stream1,"%s",data[i].name)!=EOF)
     {
      fscanf(stream1,"%f",&data[i].number);
      i++;
     }
     for(i=0;i<7;i++)
      {
       for(j=i+1;j<7;j++)
       {        
        if(data[i].number < data[j].number)
        {
         temp=data[i].number;
         data[i].number=data[j].number;
         data[j].number=temp;      
         
         strcpy(tempname,data[i].name);
         strcpy(data[i].name,data[j].name);
         strcpy(data[j].name,tempname);
        }      
       }
      }
     for(i=0;i<7;i++)
     {
         printf("%s %.2f\n",data[i].name,data[i].number);  
         fprintf(stream2,"名子:%s 成績:%.2f 名次:%d\n",data[i].name,data[i].number,i+1);          
     }

     fclose(stream1);
     fclose(stream2);
    }
    
    
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 
}


/* 檔名: gradedat.txt
陳三華 98.01 
林小英 87.14
王小明 78.12
梅阿娟 74.59
紀大方 67.39
菜莉莉 66.84
馮阿龐 50.11

/* 檔名: output.txt

名子:陳三華 成績:98.01 名次:1
名子:林小英 成績:87.14 名次:2
名子:王小明 成績:78.12 名次:3
名子:梅阿娟 成績:74.59 名次:4
名子:紀大方 成績:67.39 名次:5
名子:菜莉莉 成績:66.84 名次:6
名子:馮阿龐 成績:50.11 名次:7

==============================================
/* 程式檔名:test_17-55-10*/
/* 程式目的:將字串前後單字對調 並寫入新檔案*/
/* 程式設計:蘇彥儒*/
/* 完成日期:201400828*/
#include <stdio.h>
#include <stdlib.h>  
#define SIZE 60 

void Pause(const char* message);

struct person
{
    char name[10];
    char nametow[10];  
}data[10];

int main(void)
{                
    FILE *stream1;
    FILE *stream2;
    stream1=fopen("stringdata1.txt","r");   
    stream2=fopen("stringdata2.txt","w");   
    int i=0;
    
    if(stream1 == NULL || stream2 == NULL)
    {
     printf("檔案開啟失敗!!\n");  
     return 0;          
    }
    else
    {
     for(i=0;i<5;i++)
     {
      fscanf(stream1,"%s",data[i].name);    
      fscanf(stream1,"%s",data[i].nametow);            
     }
     for(i=0;i<5;i++)
     {
      printf("%s ",data[i].nametow);   
      printf("%s \n",data[i].name);   
      fprintf(stream2,"%s %s\n",data[i].nametow,data[i].name);          
     }
     fclose(stream1);
     fclose(stream2);
    }
    
    
    Pause("按 ENTER 繼續"); 
    return EXIT_SUCCESS;
}


void Pause(const char* message)
{
    printf("%s \n", message);
    rewind(stdin);
    getchar(); 
}


/* 檔名: stringdata1.txt
brown tree
red flower
green leaf
blue sky
white cloud

/* 檔名: stringdata2.txt
tree brown
flower red
leaf green
sky blue
cloud white

==============================================

沒有留言:

張貼留言