2014年3月31日 星期一

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

==============================================
/* 程式檔名:test_8-29-1 */
/* 程式目的:巨集定義平方和*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140327*/
#include <stdio.h>
#define X(x) (x)*(x)
#define Y(y) (y)*(y)

int main(void)
{
int x,y;

printf("x的數字\n");
scanf("%d",&x);
printf("y的數字\n");
scanf("%d",&y);

printf("x的平方和=%d\n",X(x));
printf("y的平方和=%d\n",Y(y));
    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-2 */
/* 程式目的:巨集定義圓周率及半徑平方公式*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140327*/
#include <stdio.h>
#define PI 3.1415926
#define R(r) (r)*(r)*(PI)

int main(void)
{
int r;

printf("請輸入半徑\n");
scanf("%d",&r);

printf("圓面積=%f\n",R(r));
    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-3 */
/* 程式目的:巨集定義圓周率及半徑平方公式*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140327*/
#include <stdio.h>
#define LW(l,w) (l)*(w)

int main(void)
{
int l,w,flag=0;
do
{
        printf("請輸入長\n");
   scanf("%d",&l);
    printf("請輸入寬\n");
    scanf("%d",&w);
   
if(l==0 || w==0)
{
printf("輸入錯誤,重新輸入\n");
}
else
{
        flag=1;
}
}while(flag!=1);

printf("表面積=%d\n",LW(l,w));

    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-4 */
/* 程式目的:巨集定義圓周率及半徑平方公式*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140327*/
#include <stdio.h>
#define add(x,y) x+y
#define ed(x,y) x+y
#define (x,y) x+y
#define add(x,y) x+y

int main(void)
{
int l,w,flag=0;
do
{
        printf("請輸入長\n");
   scanf("%d",&l);
    printf("請輸入寬\n");
    scanf("%d",&w);
   
if(l==0 || w==0)
{
printf("輸入錯誤,重新輸入\n");
}
else
{
        flag=1;
}
}while(flag!=1);

printf("表面積=%d\n",LW(l,w));

    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-5 */
/* 程式目的:巨集定義數學函式從鍵盤輸入並計算*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140401*/
#include <stdio.h>
#define f(x,y) (3*x)+(2*y)

int main(void)
{
int x,y;
printf("請輸入x\n");
scanf("%d",&x);
printf("請輸入y\n");
scanf("%d",&y);
printf("3x+2y=%d\n",f(x,y));

    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-6 */
/* 程式目的:巨集定義數學函式從鍵盤輸入並計算*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140401*/
#include <stdio.h>
#define f(x) (3*x)+2

int main(void)
{
int x;
printf("請輸入x\n");
scanf("%d",&x);
printf("3x+2=%d\n",f(x));

    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-7 */
/* 程式目的:巨集定義數學函式(a+b+c)*(a+b+c)從鍵盤輸入並計算*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140401*/
#include <stdio.h>
#define f(a,b,c) (a+b+c)*(a+b+c)

int main(void)
{
int a,b,c;
printf("請輸入a\n");
scanf("%d",&a);
printf("請輸入b\n");
scanf("%d",&b);
printf("請輸入c\n");
scanf("%d",&c);
printf("(a+b+c)*(a+b+c)=%d\n",f(a,b,c));

    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-8 */
/* 程式目的:巨集定義數學函式(1+2)+(2+3)+(3+4)+...(n+(n+1))從鍵盤輸入並計算*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140401*/
#include <stdio.h>
#define f(x,y) x+y

int main(void)
{
int i,sum=0,n;
printf("請輸入n\n");
scanf("%d",&n);
for(i=1;i<n;i++)
{
sum=sum+f(i,i+1);
}
printf("%d\n",sum);
    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-9 */
/* 程式目的:巨集定義數學函式1/1+1/2+1/3+...+1/n從鍵盤輸入並計算*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140401*/
#include <stdio.h>
#define f(x) 1.0/(x)

int main(void)
{
int i,n;
float sum=0;
printf("請輸入n\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
sum=sum+f(i+1);
}
printf("%f\n",sum);
    system("pause");
    return 0;
 
}
==============================================
/* 程式檔名:test_8-29-10 */
/* 程式目的:巨集定義數學函式n階層從鍵盤輸入並計算*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140401*/
#include <stdio.h>
#define f(n,i) (n)*(i)

int main(void)
{
int i,n;
printf("請輸入n\n");
scanf("%d",&n);
for(i=n-1;i>0;i--)
{
        n=f(n,i);
}
printf("%d\n",n);
    system("pause");
    return 0;
 
}
==============================================

2014年3月15日 星期六

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

==============================================
/* 程式檔名:test_7-51-1.c */
/* 程式目的:呼叫函數印出文字*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140312*/
#include <stdio.h>
void printresult(void);
int main(void)
{
    printresult();
    system("pause");
    return 0;
}
void printresult(void)
{
    printf("HELLO C WORLD\n");          
}
==============================================
/* 程式檔名:test_7-51-2.c */
/* 程式目的:呼叫函數印出文字*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140312*/
#include <stdio.h>
void printresult(int);
int main(void)
{  
    int num;
    printf("請輸入指定行數:\n");
    scanf("%d",&num);
    printresult(num);
    system("pause");
    return 0;
}
void printresult(int num)
{
     int i;
     for(i=0;i<num;i++)
     {
      printf("HELLO C WORLD\n");            
     }
}
==============================================
/* 程式檔名:test_7-51-3.c */
/* 程式目的:呼叫函式比較大小*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140312*/
#include <stdio.h>
int printresult(int,int);
int main(void)
{  
    int fir,sec;
    printf("請輸入兩個數字:\n");
    scanf("%d %d",&fir,&sec);
    printf("最大值:%d\n",printresult(fir,sec));
    system("pause");
    return 0;
}
int printresult(int x,int y)
{
     if (x>y)
         return x;
     else
         return y;
}
==============================================
/* 程式檔名:test_7-51-4.c */
/* 程式目的:計算1~100中是7的倍數*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20130821*/
#include <stdio.h>
int funa(int);
int main(void)
{
    int i;
    for(i=1;i<=100;i++)
    {
                       
       funa(i);                                                                              
    }
    system("pause");
    return 0;
    
}
int funa(int i)
{
     if(i%7==0)
        {                        
            printf("%d \n",i);       
        }     
}
==============================================
/* 程式檔名:test_7-51-5.c */
/* 程式目的:印出數學函式*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20130821*/
#include <stdio.h>
float printfruselt(float);

int main(void)
{
    float x;
    printf("請輸入x:");
    scanf("%f",&x);
    printf("f(x)=x^3+2x^2+1=%.2f",printfruselt(x));
    system("pause");
    return 0;    
}

float printfruselt(float x)
{
    float result;
    result=(x*x*x)+(2*(x*x))+1;
    return result;
}
==============================================
/* 程式檔名:test_7-51-6.c */
/* 程式目的:印出數學函式*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20130821*/
#include <stdio.h>
float printfruselt(float,float);

int main(void)
{
    float x,y;
    printf("請輸入f(x,y):");
    scanf("%f %f",&x,&y);
    printf("f(x)=x^2*y+2x*y+x*y^2=%.2f",printfruselt(x,y));
    system("pause");
    return 0;    
}

float printfruselt(float x,float y)
{
    float result;
    result=(x*x)*y+2*x*y+x*(y*y);
    return result;
}
==============================================
/* 程式檔名:ex_7-52-7.c */
/* 程式目的:遞回函式1+2+3+...+100*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140312*/
#include <stdio.h>
void hanoi(int,int);
int main(void)
{  
    int i; 
    hanoi(0,0);
    system("pause");
    return 0;
}
void hanoi(int i,int sum)
{    
     if(i==100)  
     {    
         printf("\b"); 
         printf("=%d\n",sum);                                             
     }
     else
     {          
         i++;
         printf("%d+",i);  
         sum=sum+i;
         hanoi(i,sum);         
     }
}
==============================================
/* 程式檔名:test_7-52-8.c */
/* 程式目的:遞回函式求出最大質因數*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140313*/
#include <stdio.h>
#include <stdio.h>
void factor(long,long);
int main(void)
{  
    long number,div;
    printf("請輸入一個欲作因數分解的數字:\n");
    scanf("%d",&number);
    printf("輸入:%d\n",number);
    if(number==1)
        printf("輸入錯誤");
    else 
        factor(number,2);
    system("pause");
    return 0;
}
void factor(long num,long div)
{
     if(num==1 || div>num)                
     {
         printf("\b");
         printf("最大值:%d",div);       
         return;
     }
     else
     {
         if(num%div==0)                      
         {
             printf("%d*",div);                         
             factor(num/div,div);          
         }
         else
         {
             div=(div==2?3:div+2);
             factor(num,div);
         }
     }

}
==============================================
/* 程式檔名:test_7-52-9.c */
/* 程式目的:遞回函式求出最大公因數*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140313*/
#include <stdio.h>
#include <stdio.h>
void factor(int,int,int);
int main(void)
{  
    int fir,sec;
    printf("請輸入兩個數字:\n");
    scanf("%d %d",&fir,&sec);
    if(fir!=0 && sec!=0)  
        factor(fir,sec,fir%sec);
    else
        printf("錯誤");
    system("pause");
    return 0;
}

void factor(int a,int b,int c)
{
    if(c!=0)    
    {            
        a=b;
        b=c;
        factor(a,b,a%b);                    
    }
    else      
    printf("最大公因數%d\n",b);  
     
}
==============================================
/* 程式檔名:test_7-52-10.c */
/* 程式目的:換零錢機器*/
/* 程式設計:蘇彥儒*/
/* 完成日期:20140316*/
#include <stdio.h>
#include <stdio.h>
int allmoney(int,int);
void chanmoney(int);
int main(void)
{  
    int money,num,chmoney,chnum;
    int sum,chsum;
    printf("換零錢機器\n");
    printf("只接受100,200,500,1000元\n");
    printf("輸入要換的紙鈔 1.100, 2.200, 3.500, 4.1000元\n");
    scanf("%d",&money);    
    
    if (money>4 || money<1)
        printf("輸入紙鈔錯誤\n");       
    else 
    { 
        printf("輸入張數:\n");
        scanf("%d",&num);   
        sum=allmoney(money,num);
        printf("總金額:%d\n",sum);
        chanmoney(sum);
    } 
    system("pause");
    return 0;
}

int allmoney(int money,int num)
{
        switch(money)
        {
            case 1:
                   {
                   printf("%d張100元",num);
                   return(num*100);
                   break;
                   }                
            case 2:
                   {
                   printf("%d張200元",num);
                   return(num*200);
                   break;  
                   }
            case 3:
                   {
                   printf("%d張500元",num);
                   return(num*500); 
                   break;
                   }  
            case 4:
                   {
                   printf("%d張1000元",num); 
                   return(num*1000); 
                   break;
                   }                    
        }
     
}

void chanmoney(int sum)
{     
    int allchsum,chmoney,chnum;   
    int fiveten=0,ten=0,five=0,one=0;
    printf("選擇零錢面額(1.一元、2.五元、3.十元、4.五十元):\n");
    scanf("%d",&chmoney);
    if (chmoney>4 || chmoney<1)
        printf("輸入零錢面額錯誤\n");       
    else 
    {                
        printf("輸入個數:\n");
        scanf("%d",&chnum); 
        switch(chmoney)
        {
                case 1:
                       {
                       one=chnum;             
                       break;
                       }
                case 2:
                       {
                       five=chnum*5;             
                       break;
                       }    
                case 3:
                       {
                       ten=chnum*10;               
                       break;
                       }        
                case 4:
                       {
                       fiveten=chnum*50;              
                       break;                          
                       } 
        }
        if(one>sum || five>sum || ten>sum || fiveten>sum)
            printf("超過投入金額\n");
        else 
        {
            switch(chmoney)
            {
                case 1:
                       {
                       printf("兌換%d個1元\n",chnum);
                       allchsum=chnum;             
                       break;
                       }
                case 2:
                       {
                       printf("兌換%d個5元\n",chnum);
                       allchsum=chnum*5;               
                       break;
                       }
                case 3:
                       {
                       printf("兌換%d個10元\n",chnum);
                       allchsum=chnum*10;               
                       break;
                       }
                case 4:
                       {
                       printf("兌換%d個50元\n",chnum); 
                       allchsum=chnum*50;               
                       break; 
                       }                          
            }
            sum=sum-allchsum;
            printf("剩下金額%d找出零錢\n",sum);
            fiveten=(sum-sum%50);
            ten=((sum-fiveten)-(sum-fiveten)%10);
            five=((sum-fiveten-ten)-(sum-ten)%5);
            one=((sum-ten)%5);
            printf("五十元:%d\n",fiveten/50);
            printf("十元:%d\n",ten/10);
            printf("五元:%d\n",five/5);
            printf("一元:%d\n",one); 
        }
    }                
}
==============================================