1. 程式人生 > >吉大專業課(未知)-2015年

吉大專業課(未知)-2015年

不知道是計算機還是軟體的、內容不全、回憶版:

一、蛇形螺旋矩陣的輸入輸出;20分

題目很模糊,我按照輸出x行y列的螺旋矩陣編寫:

#include<stdio.h>  
int main(){
	int x,y;
	void screw(int x,int y);
	printf("輸入x y(以空格隔開):");
	scanf("%d %d",&x,&y);
    screw(x,y);
    return 0;
}
void screw(int x,int y){// X行 * Y列的螺旋矩陣 
	int i,j,t=0;//t記錄第幾圈 
	int A[x][y];//用於儲存螺旋矩陣 
	int num=1; 
	while(num <= x*y){
		for(j=t;j<y-t&&num <= x*y;j++){//上排 
			A[t][j] = num;
			num++;
		}
		for(i=t+1;i<x-t&&num <= x*y;i++){//右排 
			A[i][j-1] = num;
			num++;
		}
		//printf("%d",i-1);
		for(j=y-t-2;j>=t&&num <= x*y;j--){//下排 
			A[i-1][j] = num;
			num++;
		}
		for(i=x-t-2;i>t&&num <= x*y;i--) {//左排 
			A[i][j+1] = num;
			num++;
		}
		t++;
	}
	for(i=0;i<x;i++){//列印輸出 
		for(j=0;j<y;j++)
			printf("%d\t",A[i][j]);
		printf("\n");
	}
	
}

二、字串內小寫字母的個數統計;統計字串中所含所有大小寫字母的個數。30分

 解答:

(1)這道題讓我聯想到一個最基本的,求一個字串內每個字元的個數、先把這個寫出來,再介紹這道真題

#include<stdio.h>  
#define N 100
int main(){
	void countLetter(char *str);
	char str[N];
	printf("輸入一段字串:");
	gets(str);
    countLetter(str);
    return 0;
}
void countLetter(char *str){
	char count[N][2];//二維陣列,第一位 字元位,第二位 字元個數 ,記錄了每個字元與其出現的此數
	int i,j,sign,len=0;//i,j用於遍歷,sign用於標誌是否需要新插入到count中,len表示當前count的長度 
	char str_s,count_s;
	for(i=0;(str_s=str[i])!='\0';i++){//遍歷字元陣列 
		sign = 0;
		for(j=0;j<len;j++){
			if(str_s == count[j][0]){
				count[j][1] ++;
				sign = 1;//標誌已經找到這個字元 
				break;
			}
		}
		if(sign == 0){//若在count陣列中沒找到這個字元,則填到count中, 
			count[len][0] = str_s;
			count[len][1] = 1;
			len++;
		}
	} /*以下為列印輸出部分*/
	for(i=0;i<len;i++){
		printf("字元%c的個數有%d個\n",count[i][0],count[i][1]);
	} 
}

(2)對於本道題,只需將最後的列印輸出部分稍加修改,改成下列語句,就可以了:

	int BigLetter=0,SmallLetter=0;
	for(i=0;i<len;i++){
		if(count[i][0]>='a' && count[i][0] <= 'z') SmallLetter++;
		if(count[i][0]>='A' && count[i][0] <= 'Z') BigLetter++;
	} 
	printf("大寫字母有%d個,小寫字母有%d個\n",BigLetter,SmallLetter);

(3)某年有道真題,讓輸出每一個小寫字母的個數,同樣修改列印輸出部分即可,準確說,只需添一句話:

	for(i=0;i<len;i++){
		if(count[i][0]>='a' && count[i][0]<='z')
			printf("字元%c的個數有%d個\n",count[i][0],count[i][1]);
	}

三、集合的輸入輸出;已輸入一個有M個元素的集合A,輸出含有N個元素的A的所有子集。30分

相關題:

(1)軟專2007的最後一題(http://mp.blog.csdn.net/postedit/79456981

這道題讓求A的全部子集,詳細思路和程式碼請跳上面的連結

(2)一個讓求A的所有元素個數為2的子集,另一個讓求許多點構成的三角形的面積,相當於求集合A的所有元素個數為3的子集,結合本題,只需將n=2,n=3變為n=N,即可,詳細請看連結,不貼上去了

967-2014年第四題(http://blog.csdn.net/qq_21149391/article/details/79411106

967-2015年第四題(http://blog.csdn.net/qq_21149391/article/details/79405192