吉大软件专硕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");
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Manigoldo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值