国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

藍橋杯 - 算法訓練 新生舞會 C語言實現

2019-11-06 06:43:50
字體:
來源:轉載
供稿:網友
算法訓練 新生舞會題目:問題描述  新生舞會開始了。n名新生每人有三個屬性:姓名、學號、性別。其中,姓名用長度不超過20的僅由大小寫字母構成的字符串表示,學號用長度不超過10的僅由數字構成的字符串表示,性別用一個大寫字符‘F’或‘M’表示。任意兩人的姓名、學號均互不相同。換言之,每個人可被其姓名或學號唯一確定。給出m對兩人的信息(姓名或學號),判斷他們是否能共舞。兩人能共舞的充要條件為兩人性別相異。輸入  第一行一個整數n(2<=n<=1000),表示學生人數。接下來的n行每行依次包含一名新生的姓名、學號、性別,分別用一個空格隔開。  之后的一行是一個整數m(1<=m<=1000),表示詢問的數目。接著的m行每行包含兩個信息(姓名或學號),保證兩個信息不屬于同一人,中間用一個空格隔開。輸出  對于每個詢問輸出一行,如果兩人可以共舞,輸出一個大寫字母‘Y’,否則輸出一個大寫字母‘N’。樣例輸入  4  John 10 M  Jack 11 M  Kate 20 F  Jim 21 M  3  John 11  20 Jack  Jim Jack樣例輸出  N  Y  N提示  可以把名字和學號都當成字符串處理。可以按以下流程實現。  #include<iostream>  #include<cstring>  using namespace std;  struct tstudent  {  char name[21];  char num[21];  char sex;  };  void readdata(tstudent student[], int n)  {輸入N個學生的信息  }  int findstudent(tstudent student[], int n, char* data)  {  if (data == NULL) return -1;判斷是否有某個學生的學號或名字等于data,如果有,函數返回該學生在student數組中的序號,否則返回-1  }  void solve(tstudent student[], int n, int m)  {  char x[21], y[21];  for (int i=0; i<m; i++) {輸入兩個人的信息X、Y。通過調用findstudent函數判斷這兩個人能否成為舞伴  }  }  int main()  {  int n, m;  tstudent student[1010];  cin>>n;  readdata(student, n);  cin>>m;  solve(student, n, m);  }分析:我原摘抄題目,提示我也沒看,其實也沒必要。題目考察隊字符串和字符的輸入存儲,for+if判斷輸入就ok。注意去了解一下scanf對%s的處理。代碼在此:(藍橋杯測試100分)
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct node{	char str[20];	char id[10];	char gender;}Node;int n,m;Node data[1000]; //1000 * 26 / 10^6 = 0.026M(約)int byName (char str[]) {	int i;	for(i = 0; i < n; i ++){		if(strcmp(data[i].str,str) == 0){			if(data[i].gender == 'M'){				return 1;			}			else				return 0;		}	}}int byId (char str[]) {	int i;	for(i = 0; i < n; i ++){		if(strcmp(data[i].id,str) == 0){			if(data[i].gender == 'M'){				return 1;			}			else				return 0;		}	}}int main () {		int i,j;	char a[20],b[20];		scanf("%d", &n);	for(i = 0; i < n; i ++){	//注意scanf對%s的特殊處理 		scanf("%s%s %c", data[i].str, data[i].id, &data[i].gender);		getchar();	}	scanf("%d", &m);	for(i = 0; i < m; i ++){		scanf("%s%s", a, b);	//先用a,b保存 		int judge1,judge2;		if(a[0] <= 57){		//數字 			judge1 = byId(a);		} else {	//字母 			judge1 = byName(a);		}		if(b[0] <= 57){	//數字			judge2 = byId(b);		} else {	//字母 			judge2 = byName(b);		}				if(judge1 != judge2)			PRintf("Y/n");		else			printf("N/n");			}		return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溧阳市| 新泰市| 赣榆县| 桦甸市| 涞源县| 瑞丽市| 奉新县| 宝坻区| 英德市| 库尔勒市| 梁河县| 阿勒泰市| 车险| 丹东市| 郯城县| 顺义区| 黎平县| 隆德县| 河南省| 共和县| 南城县| 察雅县| 通辽市| 临武县| 锡林浩特市| 浦城县| 普兰店市| 东乡县| 霍邱县| 樟树市| 昌邑市| 河源市| 正镶白旗| 藁城市| 潼关县| 漳平市| 英吉沙县| 永兴县| 同仁县| 灯塔市| 台中县|