1. 程式人生 > >吉大軟體專碩967-2015(結構體返回陣列

吉大軟體專碩967-2015(結構體返回陣列

 

#include<stdio.h>
#define N 100
int main(){
	char str[N];
	char STR[N][2]={'\0'};
	char s;
	int i=0,j=0,p;
	gets(str);
	for(i=0;(s=str[i])!='\0';i++){
		j = 0;
		p = 0;
		if(s>='a' && s<='z'){
			while(STR[j][0]!='\0'){
				if(s == STR[j][0]){
					STR[j][1] = STR[j][1]+1;
					p = 1;
					break;
				}
				j++;
			}
			if(p==0){
					STR[j][0] = s;
					STR[j][1] = 1;	
			}
		}
	}
	for(j=0;(s=STR[j][0])!='\0';j++){
		printf("字母:%c,出現%d次\n",s,STR[j][1]);
	}

}

#include<stdio.h>
#include <stdbool.h>
#define N 100
int main(){
    bool jude(char str[]);
    char str[N];
    gets(str);
    if(jude(str))
        puts(str);
    else
        printf("錯誤\n");
}
bool jude(char str[]){
    int i;
    char s;
    for(i=0;(s=str[i])!='\0';i++){
        if(s>'9'||s<'0')
            return false;
    }
    return true;
}

 

 

 

#include<stdio.h>
#define M 10
int main(){
	int A[M][M];
	int i,j,T,n=1;
	T = M;
	while(T>0){
		for(j=M-T;j<T;j++){
			A[M-T][j] = n;
			n++;
		}
		for(i=M-T+1;i<T;i++){
			A[i][T-1] = n;
			n++;
		}
		for(j=T-2;j>=M-T;j--){
			A[T-1][j] = n;
			n++;
		}
		for(i=T-2;i>M-T;i--){
			A[i][M-T] = n;
			n++;
		}
		T--;
	}
	for(i=0;i<M;i++){
		for(j=0;j<M;j++){
			printf("%d\t",A[i][j]);
		}
		printf("\n");
	}

}

 

 

 

方法一:

#include<stdio.h>
#include<math.h>
#define N 6
#define M 2
int main(){
	int S[N]={1,2,3,4,5,6};
	int Binary[N]={0}; 
	int i,j,n,k;
	/*Binary陣列存放二進位制數字*/ 
	for(i=0;i<pow(2,N);i++){//N位的二進位制數字,共有2^N個,迴圈2^N遍,每次 Binary[0]+1 
		n=0;
		Binary[0]++;
		for(j=0;j<N;j++){//每次加1後,整理 Binary陣列,變成二進位制形式 
			Binary[j+1] += Binary[j] / 2;
			Binary[j] = Binary[j] % 2;
		}
		for(j=0;j<N;j++)//統計Binary資料中,值為1的個數n 
			if(Binary[j]==1)
				n++;
		if(n==M){//如果n等於M,將 Binary[j]=1的j,對應的S[j]列印輸出 
			k=0;//判斷第幾位 
			printf("{");
			for(j=0;j<N;j++){
				if(Binary[j]==1){
					if(k==0){printf("%d",S[j]);k=1;}//第一位前不輸出逗號,規範格式 
					else
						printf(",%d",S[j]);
				}
			}
			printf("}、");
		}		  
		
	}
	printf("\n");
	return 0;
}

方法二:

#include<stdio.h>
#include<math.h>
#define maxsize 10

//定義結構體返回陣列
struct tager{
	int a[maxsize];
};
struct	tager translate(int num){
	int i;
	struct tager x;
	for(i=0;i<maxsize;i++){
		x.a[i]=-1;
	}
	i=0;
	while(num!=0){
		x.a[i]=num%2;
		//printf("%-3d",x.a[i]);
		num /=2;
		i++;
	}
	return x;
}
int sum_account(struct tager x){
	int sum=0,n=0;
	while(x.a[n]!=-1){
		sum=sum+x.a[n];
		n++;
	}
	//printf("%d",sum);
	return sum;
}
int main(){
	int *p,sum=0,num,number,j,i=1,s;
	s=3;
	int a[maxsize];
	struct tager y;
	printf("請輸入集合元素個數:");
	scanf("%d",&num);
	printf("請輸入限制條件:");
	scanf("%d",&s);
	//printf("%d\n",num);
	for(j=num-1;j>=0;j--){
		a[j]=i;
		i++;
	}
	number = pow(2,num);
	//printf("%d\n",number);
	for(j=1;j<number;j++){
		y=translate(j);
		sum=sum_account(y);
		//printf("%d",sum);
		if(sum == s){
			printf("(");
			i=0;
			for(i=0;i<num;i++){
				if(y.a[i]==1){
					printf("%-3d",a[i]);
				}
			}
			printf(")\n");
		}
	}
}