題如下:
輸入多組序列,每組輸入N個數(數在1~99中),回傳true表示合法,false不合法
1.一位數和兩位數交替出現,合法
2.開頭和結尾是一位數,中間是兩位數,合法
3.開頭結尾是兩位數,中 間是一位數,合法
這個題我不知道怎么下手,有兩個大問題:
1.不知道怎么控制回圈了(EOF好像不太行),每次在一行輸入不確定的N個數,然后回車就輸出true或false,輸出完后又要下一行繼續輸入N個數
2.判斷的時候,我一般都是先int f=0表示不合法,驗證合法時又令f=1。在驗證時,遇到if條件陳述句里面有for的情況,我感覺也很混亂
有大佬幫忙看一下嗎~如果能微信聊一下下更好,問題好像有點小多哈哈哈~
對了我現在的代碼輸入一組數回車之后就崩了。。。
#include<stdio.h>
int danshu(int a){
int f=0;
if(a>0&&a<=9){
f=1;
}
return f; //輸入一位數回傳1,因為輸入只在1`99,所以回傳0默認為輸入兩位數
}
int main(){
while(1){ //控制多組序列的回圈
int result=0,i=0,a[1000];
while(scanf("%d ",a[i])){
i++; //一組輸入了i個數
}
for(int j=0;j<i;j=j+2){ //第一種合法情況
if(danshu(a[0])){
}else{
}
for(int k=j+1;k<i;){
if(danshu(a[j])&&!danshu(a[k])){
result=1; //result==1標記合法
break;
}
if(result==1) break;
}
if(result==1) break;
}
if(result==0&&danshu(a[0])&&danshu(a[i-1])){ //第二種合法情況
int r=1;
for(int j=1;j<i-1;j++){
if(danshu(a[j])){
r=0;
break;
}
}
if(r==1){
result=1;
}
}else if(result==0&&!danshu(a[0])&&!danshu(a[i-1])){
int r=1;
for(int j=1;j<i-1;j++){
if(!danshu(a[j])){
r=0;
break;
}
}
if(r==1){
result=1;
}
}
if(result==1){
printf("true");
}else{
printf("false");
}
}
return 0;
}
uj5u.com熱心網友回復:
有沒有大佬會的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/67749.html
標籤:C語言
