2012年5月5日 星期六

QRCode產生器與解碼器


    從井民全老師的blog中看到有寫到有關QRCode的操作後馬上著手練習,之後又在youtube看到一個作者用很簡潔的內容寫出了QRCode的操作,以下的是參考monsterhunter445後寫出的程式碼。與井民全老師的差別在於,monsterhunter445作者是載入了MessagingToolkit.QRCode.dll。
    原始碼分享在下面:

此程式可依輸入的網址來編成QRCode





















匯整數個例子在一個專案(轉黑白照、反轉顏色..等)

利用高效率的方法寫出「轉成黑白照」、「反轉顏色」、「紅色瀘鏡」、「綠色瀘鏡」、「藍色瀘鏡」、「增加亮度」。




2012年5月4日 星期五

紅綠藍瀘鏡運用&增加圖片亮度

紅綠藍瀘鏡運用與提高圖片亮度。

這一個程式bug找好久,因為我的邏輯跟作者寫的不同。最後我用自已的邏輯來使用function,才成功。

先說瀘鏡。與作者的code相比,我沒有setRGBData_unsafe( )與getRGBData_unsafe( ),我直接在ColorFilter功能裡完成了上述兩個功能的工作呼叫getRGBData( )setRGBData( )來抓「三維陣列」與「由陣列建立新的 Bitmap」,然後更新掉image,就完成了。(另外,SHOW圖的方式也不同,作者用LoadImage( )影像公用程式,我寫不出來,所以用了另一個方法,這方法是在第一個範例裡學的。)(看紅字的code)


提高圖片的亮度與瀘鏡的計算類似,一樣一開始是做一個三維陣列,用三維陣列來跑每個pixel提高亮度,然後將三維陣列轉成Bitmap型態,再來把image更新掉,完成。


簡單的敘述執行順序:
點擊button->建立物件image->執行image.ColorFilter( )->用Bitmap把image包起來->
執行getRGBData( ),以取得存放pixel資訊的三維陣列->以此三維陣列執行瀘鏡的計算->
將三維陣列做成Bitmap型態的bimage->更新image->以視窗呈現處理後的圖片。




使用高效率方法將彩色照片轉成黑白照片

使用高效率方法將彩色照片轉成黑白照片


2012年5月2日 星期三

放大、縮小、形變旋轉


簡單的影像處理,分別是放大兩倍、縮小兩倍以及形變旋轉








可選擇處理影像的show圖程式

上一篇是介紹點擊button呼叫出圖片。這一篇是介紹,您可以自由選擇欲處理的影像。




建立一個SHOW圖程式

這裡來寫一支SHOW圖程式,此程式在點擊BUTTON後會呼叫出一個視窗來顯示圖片。



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
         
         
            ImageForm Myimage = new ImageForm();//建立秀圖物件
            Myimage.Show();//顯示秀圖照片
        }
        class ImageForm : Form
        {
            Image image;
            public ImageForm()
            {
                image = Image.FromFile(@"D:\MyPhoto\IMG_3841.JPG");
                this.Text = @"D:\MyPhoto\IMG_3841.JP";
                //載入影像的程式碼放這
            }

            protected override void OnPaint(PaintEventArgs e)
            {
                this.Height = 600;
                this.Width = 800;
                //顯示出影像的程式碼在這
                e.Graphics.DrawImage(image, 0, 0, Width, Height);
            }
        }
        }
    }


「撰寫影像處理程式 難不倒我!!」的學習筆記

最近因為研究所的研究領域,要開始接受磨鍊了。
我選擇的研究領域是影像處理,未來要撰寫擴增實境的底層技術,其所使用的程式語言是C#,所以之後會有數篇有關用C#撰寫影像處理的學習筆記。
目前正在讀的是教授給的一篇由井民全老師所寫的「撰寫影像處理程式 難不倒我!!」,一起成長吧!

P.S.廣義上來講,所謂的擴增實境(augmented reality,AR)是將電腦的資訊疊合到現實世界,讓我們在正確的時間正確的地點取得<感官的>正確資訊 。看完下面這個影片就了解了:







2012年4月17日 星期二

TQC+ C語言認證範例 701


#include<stdio.h>
#include<stdlib.h>
int main(){
    char string[20];
    double output;
    printf("Enter digits string: ");
    scanf("%s",string);
   
    output=atof(string);
    printf("%s轉換後%f\n",string,output);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 910


#include<stdio.h>
#include<stdlib.h>
typedef struct student{
            char name[15];
            int score;
            struct student* next;
            }ST;
int main(){
   
    ST *a,*b,*c;
    a=(ST*)malloc(sizeof(ST));
   
   
    printf("請輸入第一位學生姓名: ");scanf("%s",a->name);
    printf("分數: ");scanf("%d",&a->score);
    a->next=NULL;
    b=(ST*)malloc(sizeof(ST));
    printf("請輸入第二位學生姓名: ");scanf("%s",b->name);
    printf("分數: ");scanf("%d",&b->score);
    b->next=NULL;
    a->next=b;
    c=(ST*)malloc(sizeof(ST));
    printf("請輸入第三位學生姓名: ");scanf("%s",c->name);
    printf("分數: ");scanf("%d",&c->score);
    c->next=NULL;
    b->next=c;
    printf("\n輸出...\n");
   ST *p=a;
   while(p!=NULL){
                  printf("學生: %s\n",p->name);
                  printf("分數: %d\n\n",p->score);
                  p=p->next;
                  }
     system("pause");
     return 0;
     }

TQC+ C語言認證範例 909


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    char A[10],B[100],C[100],n;
   
    printf("請輸入字串A:");gets(A);
    printf("字串A的長度:%d\n",strlen(A));
    strcpy(B,A);
     printf("字串B:%s\n",B);
   
     printf("請輸入字串C:");gets(C);
     n=strcmp(C,A);
     if(n>0) printf("字串A大於字串C\n");
                       else if(n==0) printf("字串A等於字串C\n");
                            else printf("字串A小於字串C\n");
                           
    system("pause");
    return 0;
}

TQC+ C語言認證範例 908


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int srnad(void){
    int data;
    data=rand()%1000+1;
    return data;
}

int main(){
    int i,j;
    srand(time(0));
    for(i=1;i<=10;i++){
                       for(j=1;j<=10;j++){
                                          printf("%5d",srnad());
                                          }
                                          printf("\n");
                                          }
    system("pause");
    return 0;
}

TQC+ C語言認證範例 907


#include<stdio.h>
#include<stdlib.h>
char GPA(int score){
     if(score>=90) return 'A';
                   else if(score>=80) return 'B';
                        else if(score>=70) return 'C';
                             else return 'D';
                             }
int main(){
    struct student{
        char name[15];
        int score;
        };
    struct student student1,student2,student3;
    printf("請輸入第一位學生姓名: ");
    scanf("%s",student1.name);
    printf("請輸入第一位學生成績: ");
    scanf("%d",&student1.score);  
    printf("請輸入第二位學生姓名: ");
    scanf("%s",student2.name);
    printf("請輸入第二位學生姓名: ");
    scanf("%d",&student2.score);
    printf("請輸入第三位學生姓名: ");
    scanf("%s",student3.name);
    printf("請輸入第三位學生姓名: ");
    scanf("%d",&student3.score);
   
    printf("第一位學生:%s\n",student1.name);
    printf("分數: %d\n",student1.score);
    printf("GPA: %c\n",GPA(student1.score));
    printf("第二位學生:%s\n",student2.name);
    printf("分數: %d\n",student2.score);
    printf("GPA: %c\n",GPA(student2.score));
    printf("第三位學生:%s\n",student3.name);
    printf("分數: %d\n",student3.score);
    printf("GPA: %c\n",GPA(student3.score));
   
   
   
    system("Pause");
    return 0;
}

TQC+ C語言認證範例 906


#include<stdio.h>
#include<stdlib.h>

int main(){
    struct student{
        char name[15];
        int score;
       
        }arr[5];
   
    int i;
    for(i=0;i<2;i++){
                     printf("請輸入第%d位姓名:",i+1);
                     scanf("%s",arr[i].name);
                     printf("請輸入第%d位C語言的分數:",i+1);
                     scanf("%d",&arr[i].score);
                     }
    printf("\n");
    for(i=0;i<2;i++){
                     printf("%-15s %3d\n",arr[i].name,arr[i].score);
                     }
                                             
 
    system("pause");
    return 0;
}

TQC+ C語言認證範例 905-2


#include<stdio.h>
#include<stdlib.h>
int main(){
    double data;
    FILE *fptr;
    fptr=fopen("dnumber.dat","r");
   
    while(fscanf(fptr,"%lf",&data)!=EOF){
                     printf("%.2f\n",data);
                   
                     }
    system("pause");
    return 0;
}

TQC+ C語言認證範例 905-1


#include<stdio.h>
#include<stdlib.h>
int main(){
    FILE *fptr;
    double data;
    fptr=fopen("dnumber.dat","w");
    printf("請輸入浮點數: ");scanf("%lf",&data);
    while(data!=-99.99){
                        fprintf(fptr,"%f ",data);
                        printf("請輸入浮點數: ");scanf("%lf",&data);
                        }
    fclose(fptr);
   
   
    return 0;
}
                       

TQC+ C語言認證範例 904-2


#include<stdio.h>
#include<stdlib.h>
int main(){
    char name[20];int score;
    FILE *fptr;
    fptr=fopen("score.dat","r");
    while(fscanf(fptr,"%s %d",name,&score)!=EOF){
                          printf("%s的c語言分數是%d\n",name,score);
                          }
    system("pause");
 
    return 0;
}

TQC+ C語言認證範例 904-1


#include<stdio.h>
#include<stdlib.h>
int main(){
    char name[20];
    int score;
    FILE *fptr;
    fptr=fopen("score.dat","w");
    printf("請輸入學生姓名:");scanf("%s",name);
    printf("請輸入學生分數:");scanf("%d",&score);
    while(score>=0){
                    fprintf(fptr,"%s %d",name,score);
                    printf("請輸入學生姓名:");scanf("%s",name);
                    printf("請輸入學生分數:");scanf("%d",&score);
                    }
    fclose(fptr);
return 0;
}

TQC+ C語言認證範例 903


#include<stdio.h>
#include<stdlib.h>
int greater60(int *parr,int n){
int i,count=0;;
for(i=0;i<n;i++){
                 if(*(parr+i)>=60) count++;
                 }
                 return count;

}

int main(){
int arr[6],i,count;
for(i=0;i<6;i++){
                 printf("輸入第%d個分數:",i+1);
                 scanf("%d",&arr[i]);
                 }
             printf("\n您輸入的data如下:\n");
             for(i=0;i<6;i++){
                              printf("data[%d]:%d\n",i,arr[i]);
                              }
             count=greater60(arr,6);
             printf("\n大於60分的有:%d個\n",count);
system("pause");
return 0;
}

TQC+ C語言認證範例 902


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random() rand()%49+1
int main(){
    srand(time(0));
    int arr[6],i,count=1,num;
    arr[0]=random();
    while(count<6){
                    num=random();
                    for(i=0;i<count;i++){
                                         if(arr[i]==num) break;
                                       
                                         }
                    if(i==count) arr[
                    count++]=num;
                    }
    for(i=0;i<6;i++) printf(" %d",arr[i]);


system("pause");
return 0;
}

TQC+ C語言認證範例 901-2


#include<stdio.h>
#include<stdlib.h>
void exchang(double *m,double *n){
     double temp;
     temp=*m;
     *m=*n;
     *n=temp;
     }
int main(){
    double a,b;
    printf("Enter two integer:");
    scanf("%lf %lf",&a,&b);
   
    printf("a:%f b:%f\n",a,b);
   
    exchang(&a,&b);
    printf("a:%f b:%f\n",a,b);
   


system("pause");
return 0;
}

TQC+ C語言認證範例 901-1


#include<stdio.h>
#include<stdlib.h>
void exchang(int *m,int *n){
     int temp;
     temp=*m;
     *m=*n;
     *n=temp;
     }
int main(){
    int a,b;
    printf("Enter two integer:");
    scanf("%d %d",&a,&b);
 
    printf("a:%d b:%d\n",a,b);
 
    exchang(&a,&b);
    printf("a:%d b:%d\n",a,b);
 


system("pause");
return 0;
}

TQC+ C語言認證範例 810


#include<stdio.h>
#include<stdlib.h>
int main(){
    int m1[3][3],m2[3][3],i,j;
    printf("請輸入矩陣一...\n");
    for(i=0;i<3;i++){
                     for(j=0;j<3;j++){
                                      printf("m1[%d][%d]: ",i,j);
                                      scanf("%d",&m1[i][j]);
                                      }
                     }
    printf("請輸入矩陣一...\n");
    for(i=0;i<3;i++){
                     for(j=0;j<3;j++){
                                      printf("m2[%d][%d]: ",i,j);
                                      scanf("%d",&m2[i][j]);
                                      }
                     }
   
    printf("\n矩陣一\n");
    for(i=0;i<3;i++){
                     for(j=0;j<3;j++){
                                      printf("%3d",m1[i][j]);
                                      }
                                      printf("\n");
                                      }
    printf("\n矩陣一\n");
    for(i=0;i<3;i++){
                     for(j=0;j<3;j++){
                                      printf("%3d",m2[i][j]);
                                      }
                                      printf("\n");
                     }
    printf("\n矩陣三\n");
    for(i=0;i<3;i++){
                     for(j=0;j<3;j++){
                                      printf("%3d",m1[i][j]*m2[i][j]);
                                      }
                                      printf("\n");
                                      }                                
   
    system("pause");
    return 0;
}

TQC+ C語言認證範例 809


#include<stdio.h>
#include<stdlib.h>
void sorting(int data[],int n){
     int i,j,m,temp;
     for(i=0;i<n-1;i++){
                        m=i;
                        for(j=i+1;j<n;j++){
                                           if(data[j]<data[m]) m=j;
                                           }
                        if(data[i]!=data[m]){
                                       temp=data[i];
                                       data[i]=data[m];
                                       data[m]=temp;
                        }
   
     }
     }
int main(){
    int arr[15],i,j,count=0;
    for(i=0;i<15;i++){
                      printf("arr[%d]: ",i);
                      scanf("%d",&arr[i]);
                      }
    sorting(arr,15);
    printf("\nprint arr\n");
    for(i=0;i<5;i++){
                     for(j=0;j<3;j++){
                                      printf("arr2[%d][%d]=%d\n",i,j,arr[count]);
                                      count++;
                                      }
                     }

system("pause");
return 0;
}

TQC+ C語言認證範例 808


#include<stdio.h>
#include<stdlib.h>
void sorting(int data2[],int n){
     int i,j,f,temp;
     for(i=n-1;i>0;i--){
                        f=0;
                        for(j=0;j<i;j++){
                                         if(data2[j]>data2[j+1]){
                                                                 temp=data2[j];
                                                                 data2[j]=data2[j+1];
                                                                 data2[j+1]=temp;
                                                                 f=1;
                                                                 }
                                         }
                        if(f==0) break;
                        }
     }

int main(){
    int i,data[10];
    printf("enter:\n");
    for(i=0;i<10;i++){
                      printf("第%d個:",i+1);
                      scanf("%d",&data[i]);
                      }
    printf("排序前:");
    for(i=0;i<10;i++){
                      printf(" %d",data[i]);
                      }
    sorting(data,10);
    printf("\n排序後:");
    for(i=0;i<10;i++){
                      printf(" %d",data[i]);
                      }
printf("\n");

system("pause");
return 0;
}

TQC+ C語言認證範例 807


#include<stdio.h>
#include<stdlib.h>
void printStar(int n){
     int i;
     for(i=1;i<=n;i++) printf("*");
     printf("\n");
     }
void multiply(int n){
     int i,j;
     if(n<=10){
     for(i=1;i<=n;i++){
                       for(j=1;j<=n;j++){
                                         printf("%3d",i*j);
                                         }
                       printf("\n");
                       }
                       }
                       }
int main(){
    int i,j;
    printf("Enter乘法表數:");scanf("%d",&i);
    printf("Enter星星數:");scanf("%d",&j);
    printStar(j);
    multiply(i);
    printStar(j);


system("pause");
return 0;
}

TQC+ C語言認證範例 805-2


#include<stdio.h>
#include<stdlib.h>
int main(){
    int arr[5][2],i,j,sum=0;
    for(i=0;i<5;i++){
                     printf("請輸入兩個數字:");
                     scanf("%d %d",&arr[i][0],&arr[i][1]);
                     printf("\n");
                     }
    printf("\n");
    for(i=0;i<5;i++){
                     for(j=0;j<2;j++){
                                      printf("%d ",arr[i][j]);
                                      sum+=arr[i][j];
                                      }
                                      printf("\n");
                                      }
   
    printf("sum:%d\n",sum);
    system("pause");
    return 0;
}
                                     

TQC+ C語言認證範例 806


#include<stdio.h>
#include<stdlib.h>
void printStar(int n){
     int i;
     for(i=1;i<=n;i++) printf("*");
     printf("\n");
     }
void multiply(int n){
     int i,j;
     if(n<=10){
     for(i=1;i<=n;i++){
                       for(j=1;j<=n;j++){
                                         printf("%2d*%2d=%2d",i,j,i*j);
                                         }
                       printf("\n");
                       }
                       }
                       }
int main(){
    int i,j;
    printf("Enter乘法表數:");scanf("%d",&i);
    printf("Enter星星數:");scanf("%d",&j);
    printStar(j);
    multiply(i);
    printStar(j);


system("pause");
return 0;
}

TQC+ C語言認證範例 805-1


#include<stdio.h>
#include<stdlib.h>
int main(){
    int arr[3][4],i,j,sum=0;
    for(i=0;i<3;i++){
                     printf("請輸入四個數字:");
                     scanf("%d %d %d %d",&arr[i][0],&arr[i][1],&arr[i][2],&arr[i][3]);
                     printf("\n");
                     }
    printf("\n");
    for(i=0;i<3;i++){
                     for(j=0;j<4;j++){
                                      printf("%d ",arr[i][j]);
                                      sum+=arr[i][j];
                                      }
                                      printf("\n");
                                      }
   
    printf("sum:%d\n",sum);
    system("pause");
    return 0;
}
                                     

TQC+ C語言認證範例 804


#include<stdio.h>
#include<stdlib.h>
double average(double arr2[],int n){
       int i;double sum=0;
       for(i=0;i<n;i++){
                        sum+=arr2[i];
                        }
       return sum/n;
       }
int main(){
    double arr[6],result;
    int i;
    for(i=0;i<6;i++){
                     printf("enter 第%d個浮點數:",i+1);
                     scanf("%lf",&arr[i]);
                     }
   printf("\n你輸入的陣列值如下:\n");
   for(i=0;i<6;i++){
                    printf("data[%d]=%.2f\n",i,arr[i]);
                    }
   result=average(arr,6);
   printf("\n平均:%.2f\n",result);
   system("pause");
   return 0;
}
 

TQC+ C語言認證範例 803


#include<stdio.h>
#include<stdlib.h>
int main(){
    int a=0,b=0,c=0,i=1,vote;
    while(i<=10){
                 printf("<1>小蔡\n");
                  printf("<2>小王\n");
                  printf("<3>小史\n");
                  printf("請你投票:");
                  scanf("%d",&vote);
                  switch(vote){
                               case 1:a++;break;
                               case 2:b++;break;
                               case 3:c++;break;
                               default:break;
                               }
                  printf("\n小蔡得票數%d\n",a);
                  printf("小王得票數%d\n",b);
                   printf("小史得票數%d\n\n",c);
                   i++;
                   }
                   system("pause");
                   return 0;
                   }

TQC+ C語言認證範例 802


#include<stdio.h>
#include<stdlib.h>
int main(){
    int d=0;
    while(d!=5){
                printf("<1>教授\n");
                 printf("<2>副教授\n");
                 printf("<3>助理教授\n");
                 printf("<4>都不是\n");
                 printf("<5>結束\n");
                 printf("請輸入你的職稱代號: ");
                 scanf("%d",&d);
                 switch(d){
                           case 1:printf("\n您的職稱是教授\n");break;
                           case 2:printf("\n您的職稱是副教授\n");break;
                           case 3:printf("\n您的職稱是助理教授\n");break;
                           case 4:printf("\n您的職稱沒有在這些選項內\n");break;
                           case 5:break;
                           default:printf("您的職稱沒有在這些選項內\n");
                           }
                           printf("\n");
                           }
                system("pause");
                return 0;
                }
                               

TQC+ C語言認證範例 801-4


#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=1;i<=5;i++){
                      for(j=1;j<=5;j++){
                                        if(j>=i) printf("*");
                                        else printf(" ");
                                        }
                      printf("\n");
                      }
    system("pause");
    return 0;
}
                                       

TQC+ C語言認證範例 801-3


#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=1;i<=5;i++){
                      for(j=1;j<=5;j++){
                                        if(j<=5-i) printf(" ");
                                        else printf("*");
                                       
                                        }
                      printf("\n");
                      }
    system("pause");
    return 0;
}
                                       

TQC+ C語言認證範例 801-2


#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=1;i<=5;i++){
                      for(j=5;j>=i;j--){
                                        printf("*");
                                        }
                      printf("\n");
                      }
    system("pause");
    return 0;
}
                                       

TQC+ C語言認證範例 801-1


#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=1;i<=5;i++){
                      for(j=1;j<=i;j++){
                                        printf("*");
                                        }
                      printf("\n");
                      }
    system("pause");
    return 0;
}
                                       

TQC+ C語言認證範例 710


#include<stdio.h>
#include<stdlib.h>
#ifndef Knum
#define Knum 1000
#endif
#undef Knum
#define Knum 200

int main(){
    printf("Knum=%d\n",Knum);
   
    union dataType{
          double d;
          int i;};
   
    union dataType DT;
    printf("Enter D value: ");
    scanf("%lf",&DT.d);
    printf("%f\n",DT.d);
   
    printf("Enter i value: ");
    scanf("%d",&DT.i);
    printf("%d\n",DT.i);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 709


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
    double result;
    double a,b,c,d,e,f;
    printf("Enter a,b,c value: ");
    scanf("%lf %lf %lf",&a,&b,&c);
    printf("Enter d,e,f value: ");
    scanf("%lf %lf %lf",&d,&e,&f);
    result=fabs(a)*floor(b)+pow(c,d)*sqrt(e)+log10(f);
    printf("result=%f",result);
    system("pause");
    return 0;
}

註:floor(藍字)由Tim Yang提供修改。

TQC+ C語言認證範例 708


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random(x) rand()%x

int main(){
    int i,j,x;
    printf("隨機數的最大值為: ");
    scanf("%d",&x);
    srand(time(0));
    for(i=1;i<=5;i++){
                     for(j=1;j<=4;j++){
                                       printf("%5d ",random(x)+1);
                                       }
                                       printf("\n");
                                     
                                       }
             system("pause");
             return 0;
             }

TQC+ C語言認證範例 707


struct student{
       char name[20];
       int score;
       };
typedef struct student ST;
#include<stdio.h>
#include<stdlib.h>
int main(){
    ST* stname;
    stname->name="John";
    stname->score=90;
    printf("%s的分數為%d\n",stname->name,stname->score);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 706


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
    int x,y;
    double result;
    printf("Enter x,y: ");
    scanf("%d %d",&x,&y);
   
    result=exp(5)*sqrt(pow(x,y)+log(100))/pow(x,2)*pow(y,3);
    printf("result=%f\n",result);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 705


#include<stdio.h>
#include<stdlib.h>
int main(){
    enum classify{
         Freshman,Sophomore,Junior,Senior
         };
    struct student{
           char *name;
           enum classify id;
           };
    struct student st1;
    st1.name="peter";
    st1.id=Freshman;
    printf("%s是大三的學生\n",st1.name);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 704


#define TRIPLE(x) x*x*x

#include<stdio.h>
#include<stdlib.h>
int main(){
    int num,triple;
    printf("Enter one integer: ");
    scanf("%d",&num);
   
    triple=TRIPLE(num);
    printf("%d的三次方為%d\n",num,triple);
   
    triple=TRIPLE(5);
    printf("5的三次方為%d\n",triple);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 703


#define NTRATE 31.34;

#include<stdio.h>
#include<stdlib.h>
int main(){
    double USdollar,NTdollar;
    printf("How many US do you have: ");
    scanf("%lf",&USdollar);
   
    NTdollar=USdollar*NTRATE;
    printf("You can exchang %.2fNTdollar\n",NTdollar);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 702


#include<stdio.h>
#include<stdlib.h>
int main(){
    char string[20];
    int output;
    printf("Enter one string: ");
    scanf("%s",string);
   
    output=atoi(string);
    printf("%s after chang %d\n",string,output);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 610


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
    FILE *fptr;
    char name[20];
    int score;
    fptr=fopen("score.dat","w");
    printf("Enter name: ");
    scanf("%s",name);
    printf("Enter score: ");
    scanf("%d",&score);
   
    while(score!=-100){
                       fprintf(fptr,"%s %d",name,score);
                       printf("Enter name: ");
                       scanf("%s",name);
                       printf("Enter score: ");
                       scanf("%d",&score);
                       }
   
    fclose(fptr);
    fptr=fopen("score.dat","r");
    printf("\n以下是你輸入的data:\n");
    while(fscanf(fptr,"%s %d",name,&score)!=EOF){
                     printf("%-10s %3d\n",name,score);
                     }
     system("pause");
     return 0;
     }

TQC+ C語言認證範例 609


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
    char str1[]="iPhone 4";
    char str2[40]="Apple iPod";
    char str3[40]="Apple ";
    char str4[40];
   
    strncat(str3, str1, 6);
    strncpy(str4,str2+6,5);
   
    printf("%s\n",str3);
    printf("%s\n",str4);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 608


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
    char str[50]="Apple iPhone 4";
    char sttr[]={'i','P','a','d','\0'};
    char *pstr="Apple iPod";
    int i;
    printf("str字串如下:%s\n",str);
    printf("sttr字串如下:%s\n",sttr);
    /*while(sttr[i]!='\0'){
            printf("%c",sttr[i]);
            i++;
            }
            */
    printf("pstr字串如下:%s\n",pstr);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 607


#include<stdio.h>
#include<stdlib.h>

int main(){
    char str[10];
    char *pstr;
    printf("Enter str string: ");scanf("%s",str);
   
    printf("Enter pstr string: ");
    pstr=(char *)malloc(sizeof(char)*10);
   
    scanf("%s",pstr);
    printf("\nYour str string is:%s\n",str);
    printf("Your pstr string is:%s\n",pstr);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 606


#include<stdio.h>
#include<stdlib.h>
int main(){
    FILE *fptr;
    char ch;
    fptr=fopen("character.dat","w");
    printf("請輸入一字元: ");
    scanf("%c",&ch);
   
    while(getchar()!='\n'){continue;}
   
    while(ch!='*'){
                   fprintf(fptr,"%c",ch);
                   printf("請輸入一字元: ");
                   scanf("%c",&ch);
                 
                   while(getchar()!='\n'){continue;}
                   }
      fclose(fptr);
      fptr=fopen("character.dat","r");
      printf("\n以下是你輸入的data:\n");
      /*ch=fgetc(fptr);
      while(ch!=EOF){
                                  printf("%3c\n",ch);
                                  ch=fgetc(fptr);
                                  }
      */
     
      while(fscanf(fptr,"%c",&ch)!=EOF){
                     printf("%3c\n",ch);
                   
                     }
      fclose(fptr);
      system("pause");
      return 0;
      }

TQC+ C語言認證範例 605


#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<conio.h>


 int main(){
     char ch,ch2;
     printf("請輸入一小寫的字母: ");scanf("%c",&ch);
   
     ch2=toupper(ch);
     printf("%c的大寫是%c",ch,ch2);
   
     while(getchar()!='\n'){continue;}
   
     printf("\n請輸入一大寫的字母: ");
     scanf("%c",&ch);
      ch2=tolower(ch);
      printf("%c的小寫是%c\n",ch,ch2);
      system("pause");
      return 0;
      }

TQC+ C語言認證範例 604


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>

int main(){
    char ch,ch2;
    printf("Enter one english char: ");
    ch=getche();
    ch2=toupper(ch);
    printf("\n%c的大寫是%c",ch,ch2);
   
    /*
    while(getchar()!='\n'){continue;}
    */
    printf("\nEnter one small english char: ");
    scanf("%c",&ch);
    ch2=tolower(ch);
    printf("%c的小寫是%c\n",ch,ch2);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 602


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 int main(){
     char str2[]="Apple iPod";
     char str4[]="Apple iPad";
     int n;
   
     n=strcmp(str2,str4);
     if(n>0) printf("%s大於%s\n",str2,str4);
     else if(n==0) printf("%s等於%s\n",str2,str4);
     else printf("%s小於%s\n",str2,str4);
   
     n=strncmp(str2,str4,5);
     if(n>0) printf("%s前五個字元大於%s前五個字元\n",str2,str4);
     else if(n==0) printf("%s前五個字元等於%s前五個字元\n",str2,str4);
     else printf("%s前五個字元小於%s前五個字元\n",str2,str4);
   
     system("pause");
     return 0;
     }
     

TQC+ C語言認證範例 601


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
    char str[]="Apple iPhone 4";
    char pstr2[20]="Apple";
    char pstr1[]=" iPod";
    char str3[20];
   
    printf("str字串的長度是%d\n",strlen(str));
    printf("pstr2連結pstr1後的字串為:%s\n",strcat(pstr2,pstr1));
    printf("str3字串如下:%s\n",strcpy(str3,pstr1));
   
    system("pause");
    return 0;
}

TQC+ C語言認證範例 510


#include<stdio.h>
#include<stdlib.h>
int main(){
    struct circle{
           int x,y;
           int radius;
           struct circle *next;
           };
    struct circle *a,*b,*c,*current;
    a=(struct circle*)malloc(sizeof(struct circle));
    printf("請輸入第一個圓的圓心(x,y): ");
    scanf("%d %d",&a->x,&a->y);
    printf("請輸入第一個圓的半徑: ");
    scanf("%d",&a->radius);
    a->next=NULL;
   
    b=(struct circle*)malloc(sizeof(struct circle));
    printf("請輸入第二個圓的圓心(x,y): ");
    scanf("%d %d",&b->x,&b->y);
    printf("請輸入第二個圓的半徑: ");
    scanf("%d",&b->radius);
    b->next=NULL;
   
    a->next=b;
   
    c=(struct circle*)malloc(sizeof(struct circle));
    printf("請輸入第三個圓的圓心(x,y): ");
    scanf("%d %d",&c->x,&c->y);
    printf("請輸入第三個圓的半徑: ");
    scanf("%d",&c->radius);
    c->next=NULL;
   
    b->next=c;
   
    current=a;
    int i=1;
    while(current!=NULL){
                         printf("第%d個圓的圓心為(%d,%d),半徑為%d\n", i,current->x,current->y,current->radius);
                         current=current->next;
                         i++;
                         }
    free(a);
    free(b);
    free(c);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 509


#include<stdio.h>
#include<stdlib.h>
int main(){
    struct triangle{
           int width;
           int height;
           };
    struct triangle *ptri;
    double area;
    ptri=(struct triangle*)malloc(sizeof(struct triangle));
   
    printf("請輸入三角形的底為多少: ");
    scanf("%d",&ptri->width);
    printf("請輸入三角形的高為多少: ");
    scanf("%d",&ptri->height);
   
    area=(double)(ptri->width*ptri->height)/2;
    printf("面積為%.2f\n",area);
    system("pause");
    return 0;
}
   

TQC+ C語言認證範例 508


#include<stdio.h>
#include<stdlib.h>
int main(){
    struct compay{
           char name[10];
           int hour;
           double pay;};
    struct company employee[5];
   
    double salary[5];
    int i;
    for(i=0;i<5;i++){
                     printf("Enter No.%d employee's name: ",i+1);
                     scanf("%s",employee[i].name);
                     printf("Enter No.%d employee's hour: ",i+1);
                     scanf("%d",&employee[i].hour);
                     printf("Enter No.%d employee's pay for one hour: ",i+1);
                     scanf("%lf",employee[i].pay);
                     }
     for(i=0;i<5;i++){
                      salary[i]=employee[i].hour*employee[i].pay;
                      printf("%-10s 的薪水為 %.2f\n",employee[i].name,employee[i].salary[i]);
                      }
        system("pause");
        return 0;
        }

TQC+ C語言認證範例 507


#include<stdio.h>
#include<stdlib.h>
int main(){
    struct company{
           char name[10];
           int hour;
           double pay;
           };
    struct company employee[5]={
           {"John",20,100.34},
           {"Mary",30,99.78},
           {"Peter",25,89.45},
           {"Nancy",33,87.42},
           {"Tom",54,77.89}
           };
    double salary[5];
    int i;
    for(i=0;i<5;i++){
                     salary[i]=employee[i].hour*employee[i].pay;
                     printf("%-10s 的薪水為 %.2f\n",employee[i].name,salary[i]);
                     }
    system("pause");
    return 0;
}

TQC+ C語言認證範例 506


struct circle{
       int x,y;
       double radius;
       };
double callarea(struct circle *pr);


#include<stdio.h>
#include<stdlib.h>

int main(){
    double area;
    struct circle c1={10,10,8.5};
    area=callarea(&c1);
   
    printf("此圓的圓心為(%d, %d),半徑為%.2f,面積為%.2f\n",c1.x,c1.y,c1.radius,area);
    system("pause");
    return 0;
}
double callarea(struct circle *pr){
    double area;
    area=pr->radius*pr->radius*3.14159;
    return area;
}

TQC+ C語言認證範例 505


struct rect{
       int length,width;
       };
int callarea(struct rect *pr);
#include<stdio.h>
#include<stdlib.h>

int main(){
    int area;
    struct rect r1={20,18};
   
    area=callarea(&r1);
   
    printf("此矩形的長為%d, 寬為%d, 面積為%d\n",r1.length,r1.width,area);
   
    system("pause");
    return 0;
}
int callarea(struct rect *pr){
    int area;
    area=pr->length*pr->width;
    return area;
}
                     

TQC+ C語言認證範例 504



#include<stdio.h>
#include<stdlib.h>
struct rect{
           int length,width;
            };
int callarea(struct rect *pr);
int main(){
   
    int area;
    struct rect r1={20,18};
    area=callarea(&r1);
   
    printf("此矩形的長為%d, 寬為%d, 面積為%d\n",r1.length,r1.width,area);
   
    system("pause");
    return 0;
}
int callarea(struct rect *pr){
    int area;
    area=pr->length*pr->width;
    return area;
}

TQC+ C語言認證範例 503


#include<stdio.h>
#include<stdlib.h>
int main(){
    struct circle{
           int x,y;
           double radius;
           };
    double area;
    struct circle c1={10,10,2.5};
    struct circle *pc=&c1;
    area=pc->radius*pc->radius*3.14159;
   
    printf("此圓的圓心為(%d, %d), 面積為%.2f\n",pc->x,pc->y,area);
   
   
    system("pause");
    return 0;
}

TQC+ C語言認證範例 502


#include<stdio.h>
#include<stdlib.h>
struct circle{
           int x,y;
           double radius;
           };
int main(){
    struct circle{
           int x,y;
           double radius;
           };
    double area;
    struct circle c1={10,10,2.5};
    area=c1.radius*c1.radius*3.14159;
   
    printf("此圓的圓心為(%d, %d), 面積為%.2f\n",c1.x,c1.y,area);
    system("pause");
    return 0;
}

TQC+ C語言認證範例 501


#include<stdio.h>
#include<stdlib.h>
int main(){
          struct student{
                 char name[10];
                 int score;
                 };
          struct student st1;
          printf("Enter name: ");scanf("%s",st1.name);
         
          printf("Enter score: ");scanf("%d",&st1.score);
         
          printf("%s的成績是%d\n",st1.name,st1.score);
         
          if(st1.score>=60) printf("恭喜您通過了\n");
          else printf("抱歉您被當了\n");
         
          system("pause");
          return 0;
          }

TQC+ C語言認證範例 410


#include<stdio.h>
#include<stdlib.h>
int Max(int p[][3],int x,int y);
int main(){
    int arr[2][3];
    int maximum,i,j;
    for(i=0;i<2;i++){
                     for(j=0;j<3;j++){
                                     
                     printf("請輸入arr[%d][%d]element: ",i,j);
                     scanf("%d",&arr[i][j]);
                     }
                     }
    printf("\n陣列的元素值分別如下:\n");
    for(i=0;i<2;i++){
                     for(j=0;j<3;j++){
                                     
                      printf("arr[%d][%d]=%d\n",i,j,arr[i][j]);
                      }
                      }
   
    maximum=Max(arr,2,3);
    printf("\n此陣列的最大值為%d\n",maximum);
   
    system("pause");
    return 0;
}
int Max(int p[][3],int x,int y)
{
    int i,j,maxi_value=p[0][0];
    for(i=0;i<x;i++){
                     for(j=0;j<y;j++)  {
                                       printf("%d\n",p[i][j]);
                                       if(maxi_value<p[i][j]) maxi_value=p[i][j];
                     }}
                return maxi_value;
                }

TQC+ C語言認證範例 409


#include<stdio.h>
#include<stdlib.h>
int sum(int p[][3],int n,int m);
int main(){
    int arr2[2][3];
    int total,i,j;
    for(i=0;i<2;i++){
                     for(j=0;j<3;j++){
                                      printf("請輸入arr[%d][%d]: ",i,j);
                                      scanf("%d",&arr2[i][j]);
                                      }
                                      }
     printf("\n陣列之值如下:\n");
     for(i=0;i<2;i++){
                      for(j=0;j<3;j++){
                                       printf("arr[%d][%d]=%d\n",i,j,arr2[i][j]);
                                       }
                                       }
     total=sum(arr2,2,3);
     printf("\n陣列的總和為%d\n",total);
     system("pause");
     return 0;
     }
    int sum(int p[][3],int x,int y){
         int i,j,tot=0;
         for(i=0;i<x;i++){
                          for(j=0;j<y;j++){
                                       tot+=p[i][j];
                                       }
                                       }
                                       return tot;
                                       }  

TQC+ C語言認證範例 408


#include<stdio.h>
#include<stdlib.h>
int Max(int *,int n);
int main(){
    int arr[5];
    int maximum,i;
    for(i=0;i<5;i++){
                     printf("請輸入arr[%d]element: ",i);
                     scanf("%d",&arr[i]);
                     }
    printf("\n陣列的元素值分別如下:\n");
    for(i=0;i<5;i++) printf("arr[%d]=%d\n",i,arr[i]);
   
    maximum=Max(arr,5);
    printf("\n此陣列的最大值為%d\n",maximum);
   
    system("pause");
    return 0;
}
int Max(int *p,int n){
    int i,maxi_value=*p;
    for(i=0;i<n;i++){
                     if(maxi_value<*(p+i)) maxi_value=*(p+i);
                     }
                return maxi_value;
                }

TQC+ C語言認證範例 407


#include<stdio.h>
#include<stdlib.h>
int sum(int *,int n);
int main(){
    int arr[]={10,20,30,40,50};
    int total,i;
    for(i=0;i<5;i++) printf("arr[%d]=%d\n",i,arr[i]);
   
    total=sum(arr,5);
    printf("total=%d\n",total);
    system("pause");
    return 0;
}

int sum(int *p,int n){
    int i,tot=0;
   
    for(i=0;i<n;i++) tot+=*(p+i);
    return tot;
}

TQC+ C語言認證範例 406


#include<stdio.h>
#include<stdlib.h>
void chang(int *,int *);

int main(){
    int i=100,j=200;
    printf("交換前i與j的值: \n");
    printf("i=%d, j=%d\n",i,j);
   
    chang(&i,&j);
    printf("交換後i與j的值: \n");
    printf("i=%d, j=%d\n",i,j);
   
    system("pause");
    return 0;
}

void chang(int *x,int *y){
     int temp;
     temp=*x;
     *x=*y;
     *y=temp;
     }

TQC+ C語言認證範例 405


#include<stdio.h>
#include<stdlib.h>
int main(){
    int arr[2][3]={100,200,300,400,500,600};
    int *ptr2[2]={arr[0],arr[1]};
    int i,j;
 
 
                                   
          for(i=0;i<2;i++){
                           for(j=0;j<3;j++){
                                            printf("arr[%d][%d]=%d\n",i,j,arr[i][j]);
                                            }
                                            }
     printf("\n另一種表示方法\n");
     for(i=0;i<2;i++){
                      for(j=0;j<3;j++){
                                       printf("arr[%d][%d]=%d\n",i,j,*(arr[i]+j));
                                       }
                                       }
                                     
     printf("\n第三種表示方法\n");
     for(i=0;i<2;i++){
                      for(j=0;j<3;j++){
                                       printf("arr[%d][%d]=%d\n",i,j,*(*(ptr2+i)+j));
                                       }
                                       }
       system("pause");
       return 0;
       }

TQC+ C語言認證範例 404


#include<stdio.h>
#include<stdlib.h>
int main(){
    int arr[2][3];
    int i,j;
   
    for(i=0;i<2;i++){
                     for(j=0;j<3;j++){
                                      printf("Enter arr[%d][%d]element: ",i,j);
                                      scanf("%d",&arr[i][j]);
                                      }
                                      }
          for(i=0;i<2;i++){
                           for(j=0;j<3;j++){
                                            printf("arr[%d][%d]=%d\n",i,j,arr[i][j]);
                                            }
                                            }
     printf("\n另一種表示方法\n");
     for(i=0;i<2;i++){
                      for(j=0;j<3;j++){
                                       printf("arr[%d][%d]=%d\n",i,j,*(arr[i]+j));
                                       }
                                       }
                                     
     printf("\n第三種表示方法\n");
     for(i=0;i<2;i++){
                      for(j=0;j<3;j++){
                                       printf("arr[%d][%d]=%d\n",i,j,*(*(arr+i)+j));
                                       }
                                       }
       system("pause");
       return 0;
       }

TQC+ C語言認證範例 403


#include<stdio.h>
#include<stdlib.h>
int main(){
    int arr[]={100,200,300,400,500};
    int *pointer=arr;
    int i;
   
    for(i=0;i<5;i++) printf("arr[%d]=%d\n",i,arr[i]);
   
    printf("\n另一種表示方法\n");
    for(i=0;i<5;i++) printf("arr[%d]=%d\n",i,*(arr+i));
   
    printf("\n第三種表示方法\n");
    for(i=0;i<5;i++) printf("arr[%d]=%d\n",i,*(pointer+i));
   
    system("pause");
    return 0;
}