该注意的错误代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
int t;//0<t<1000
int n;//0<n<100
char a,b;
int awin=0,bwin=0;
char *result;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
while(n--){
scanf("%c%c",&a,&b);
if(a=='R'){//这种if嵌套的做法真挫,最错的
if(b=='S') awin++;
else if(b=='P') bwin++;
else
exit(0);
}
else if(a=='S'){
if(b=='R') bwin++;
else if(b=='P') awin++;
else
exit(0);
}
else if(a=='P'){
if(b=='R') awin++;
else if(b=='S') bwin++;
else
exit(0);
}
else
exit(0);
}
result = (awin==bwin?"TIE":(awin>bwin?"player1":"player2"));
printf("%s\n",result);
}
return 0;
}
a赢的情况有哪些?b赢的情况有哪些?
不要老是想着另设一个变量通过赋值输出来,直接输出指定字符串。player1,player2,TIE.
*1019石头剪子布
通过代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(){
int awin,bwin;
int i,j,t,n;
char a,b;
scanf("%d",&t);
if(0<t && t<1000){
for(i=0;i<t;i++){
awin=0;//在这里初始化为0,你懂得
bwin=0;
scanf("%d%*c",&n);
if(0<n && n<100){
for(j=0;j<n;j++){
scanf("%c %c%*c",&a,&b);//%*c有大作用,请百度,在该程序里没了它还就真不行我叉
if((a=='R'&&b=='S') || (a=='S'&&b=='P') || (a=='P'&&b=='R'))
awin++;
if((a=='S'&&b=='R') || (a=='P'&&b=='S') || (a=='R'&&b=='P'))
bwin++;
}
if(awin>bwin)
printf("Player 1\n");//别写错单词把player写成plyer
else if(awin<bwin){
printf("Player 2\n");
}
else
printf("TIE\n");
}
}
}
return 0;
}
认识一下%*c
%c:读入一个字符。%*c:读入一个字符,但忽略它(即不赋值给任何变量)
“*”修饰符放在%之后,表示读入但不赋值。
用在利用一批现成数据又不需要其中某些数据时。
%*c在输入的时候有吃掉回车符的作用。
#include <stdio.h>
int main(int argc, char* argv[]) {
int minimum_length;
for (minimum_length = 1; minimum_length < 6; minimum_length++) {
printf("Minimum length %d:\n", minimum_length);
printf("%*c\n%*s\n\n", minimum_length, 'A', minimum_length, "ABC"); // * 用来表示一个整数值
}
return 0;
}
Minimum length 1:
A
ABC
Minimum length 2:
A
ABC
Minimum length 3:
A
ABC
Minimum length 4:
A
ABC
Minimum length 5:
A
ABC
请按任意键继续. . .