吉大軟體專碩967-2015(結構體返回陣列
阿新 • • 發佈:2018-11-01
#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");
}
}
}