2017年3月29日 星期三

C語言 結構與回傳多個值

結構教學
http://programming.im.ncnu.edu.tw/Chapter13.htm
*********************************
結構基礎(回傳多重值:分母)
#include <stdio.h>
#include <stdlib.h>
struct ReturnValue {
int iVal1;
int iVal2;
};

struct ReturnValue TestReturn(){
struct ReturnValue rv;
rv.iVal1 = 19;
rv.iVal2 = 5;
return rv;
}
int main(){
struct ReturnValue rv;
rv = TestReturn( );
printf("%d/%d",rv.iVal1,rv.iVal2);
return 0;
}
***********************************
結構例子(分母乘法) (特殊運算子)
#include <stdio.h>
#include <stdlib.h>
struct fraction{
int a,b;
};

struct fraction multiply(int p,int o,int l,int k){
struct fraction st;
st.a=p*l;
st.b=o*k;
return st;
}
int main() {
struct fraction st1,st2,st3;
st1.a=5;
st1.b=3;
st2.a=4;
st2.b=1;
st3=multiply(st1.a,st1.b,st2.a,st2.b);
printf("%d/%d",st3.a,st3.b);
return 0;
}
**************************
結構例子(分母乘法) (特殊運算子) *改進*
#include <stdio.h>
#include <stdlib.h>
struct fraction {
int a, b;
};

typedef struct fraction Fraction; //以後可以用 Fraction 取代 struct fraction

Fraction multiply(Fraction f1, Fraction f2) {
Fraction st;
st.a = f1.a * f1.b;
//st.b = o*k; //類似
return st;
}
int main() {
Fraction st1, st2, st3;
st1.a = 5;
st1.b = 3;
st2.a = 4;
st2.b = 1;
st3 = multiply(st1, st2);
printf("%d/%d", st3.a, st3.b);
return 0;
}

2017年3月6日 星期一

C語言 進階字串

讓字串中的數字相加

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


int main() {
char a[20];
    int i,k,x,m[20],p=0;
    printf("enter the word that include number\n");
    gets(a);
    for(i=0;a[i];i++)
        if(sscanf(a+i,"%d%n",&k,&x)){              
            m[i]=k;
            p=p+m[i];      
            i+=x;
        }
    printf("\n");
        printf("%d ",p);
return 0;
}
*******************************
讓英文字母開頭變大寫
#include <stdio.h>
#include <stdlib.h>


int main() {
char a[30];
    int i,k,x,m[20],p=0;
    printf("enter the word\n");
    gets(a);
    if( a[0]>='A' && a[0]<='Z')
    {
    a[0]=a[0];
    }
    else
    if( a[0]>='a' && a[0]<='z')
    {
     a[0]=a[0]-32;
    }
   
   
    for(i=0;i<=30;i++){
    if(a[i]==46){
    if( a[i+1]>='A' && a[i+1]<='Z')
           {
           a[i+1]=a[i+1];
           }
            else
            if( a[i+1]>='a' && a[i+1]<='z')
           {
            a[i+1]=a[i+1]-32;
           }
}
}



    printf("%s",a);
return 0;
}