當前位置:首頁 » 編程軟體 » 邏輯編程題

邏輯編程題

發布時間: 2023-04-06 07:03:50

1. java邏輯編程

public static int [] getRemoveSame(int [] srcArray){
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < srcArray.length; i++) {
//如果list里族敬已經有數組的某個元素,槐橋則不添加到list中,進行兆明慎下次循環
if (list.contains(srcArray[i])) {
continue;
}
list.add(srcArray[i]);
}
int [] newArray = new int[list.size()];
int index = 0;
for (int a : list) {
newArray[index++] = a;
}
return newArray;
}

2. C語言程序 邏輯題應用

#include<stdio.h>
void main()
{
int f[4];//ABCD四人的標志依次設為f[0],f[1],f[2],f[3]
int A,B,C,D;
int i,cnt=0;
int ling=1;
f[0]=1;//假設A說的是實話,說橘帆實話則該人的標志為1,假話為0
if(f[0]==1)
{
D=ling;
A=B=C=!ling;
}//下面根據A的話,判斷BCD說的是真話還是假話
if (A==ling)
f[1]=1;
else f[1]=0;
if (C!=ling)
f[2]=1;
else f[2]=0;
if(D!=ling)
f[3]=1;
else f[3]=0;
for(i=0;i<4;i++)
if(f[i]==1)
cnt++;
if(cnt==3)
{
printf("D is the leader!\n");
return;
}
cnt=0;
f[0]=0;//假設A說了假話;
f[1]=1;//假設B說了實磨碼話;
D=!ling;
A=ling;
B=C=!ling;
if(C!=ling)
f[2]=1;
else f[2]=0;
if(D!=ling)
f[3]=1;
else
f[3]=0;
for(i=0;i<4;i++)
if(f[i]==1)
cnt++;
if(cnt==3)
{
printf("圓游雹A is the leader:\n");
return;
}
}

3. C++編程(邏輯推理)

貌似是和離散數學有關的,要先把命題符號化,然後進行推理,實際計算碧迅機執行的時候用真值表判斷就可以了。。。

程序寫的一般,沒用什麼美觀界面之類的,這些你都可以自己加,演算法有很多,我用了一個比較簡單易於理解的。程序得出的答案是ACDB;你看看吧,有問題在問我。。。

#include<iostream>
#include<vector>
using namespace std;
bool isSimilar(int a[4][4],const vector<char> &answer)//該函數為判斷得出的答案是否與四人中的一人答案相似
{//即,如果其中一人的回答與得出的答案中兩個以上答案相同,則不符合每人只答對了一個;函數返回1
int count=0;
for(int i=0;i<4;i++)
{
count=0;
for(int j=0;j<4;j++)
{
if(a[i][j]==(answer[j]-'A'+1))count++;
}
if(count>=2)return 1;
}
return 0;
}
int main()
{
//answer[0],answer[1],answer[2],answer[3]分別代表甲乙丙丁;
//answer[x][0],answer[x][1],answer[x][2],answer[x][3]代表他們的答案
//1代表洞庭湖,2代表鄱陽湖,3代表洪澤湖,4代表太湖,-1代表任意答案
int an[4][4]={{1,-1,2,3},{3,2,4,1},{-1,-1,1,2},{2,3,1,4}};
vector<char> answer;
//A代表洞庭湖,B代表鄱陽湖,C代表洪澤湖,D代表太湖
answer.push_back('A');
answer.push_back('B');
answer.push_back('C');
answer.push_back('D');
//演算法思想:得出答案的全排列舉棗,然後根據題意只有一個人回答正確 逐個判讀得出的答案是否符合題意

do{
if(answer[0]=='D')continue; //最大的湖根據題意只可能正慧拆是A,B,c
if(answer[1]=='A'||answer[1]=='D')continue;//第二大的湖根據題意只可能是B,c
if(answer[2]=='A'||answer[2]=='C')continue;//第三大的湖根據題意只可能是B,D
if(!isSimilar(an,answer))//根據題意沒人只答對了一個,如果有人答對了兩個以上也不符合題意, 刪去
{
for(int i=0;i<4;i++)
cout<<answer[i];
break;
}
}while(next_permutation(answer.begin(),answer.end()));
system("pause");
}

4. C語言編程邏輯問題 輸入精度e,用公式求cosx近似值,精確到最後一項絕對值小於e。

#include

#include

//
這個函數需要返回
double
類型,不然結凳圓培果很棗唯快就溢出了
double
f(int
n)
{
int
i;
double
m=1.0;
for(i=1;i<=n;i++)
m*=i;
return
m;
}
double
funcos(double
e,double
x)
{
int
i=0,flag=1;
double
cos=0,item=1.0;
while(fabs(item)>=e)
{
item=flag*pow(x,i)/f(i);
cos+=item;
flag=-flag;
//printf("%lf
%lf
%lf\n",pow(x,i),f(i),item);
i=i+2;
}
return
cos;
}
int
main()
{
double
e,x;
printf("e:
");
scanf("%lf",&e);
printf("x:
");
scanf("%lf",&x);
printf("cos(x)=%.3lf,standard
result=%.3lf\n"腔中,funcos(e,x),cos(x));
return
0;
}

5. C語言邏輯推理問題...幫忙解釋程序

main() {
short a,b,c,d,j,t;
for (j = 0;j <=15;j++) { // 16次循環表示2的4次方
a = (j & 8) >> 3; // j和8按位與,然後右移三位
b = (j & 4) >> 2; //同上
c = (j & 2) >> 1;//同上
d = j & 1; //同上 不移位
t = (b + c + d == 1) + (!b && c) + (a + d == 1) + (!b && c);
//此處是四種表達式結果的和,其中 b+c+d==1 為例,即b+c+d如果等於1 那麼這個表達式的值為1,否則為0,t即四個表達式的真值的和,用t的值來判斷有幾個是真的。
if ((t == 2) && (a + b + c + d == 1)) { //如果其中兩個條件為真,即襲唯t=2,並且拆禪兄abcd的和為1
printf ("%d,%d,%d,%d\n"旅襲,a,b,c,d); //輸出結果abcd
}

}
getch ();
}

6. C語言的邏輯題

(1)0;因為a+b>c為真,邏輯值是1,但b==c為假,邏輯值是0,&&表示「且」,所以該式值為0。
(2)1;因為a不為0,所以邏輯式a為真,同理b+c也為真,b-c也為真,所以該式值為者孝1。
(3)1;a>b為假,所以!(a>b)為真,c值不為零,所以!c的邏輯值是零,||表示「或粗滾」,1&&0||1為1。
(4)0;看後面&&0就知道是0了。
(5)1;!(a+b)的邏輯值是0,所以!(a+b)+c-1==0+5-1==4!=0,岩嫌余而b+c/2也不為零,所以該式為真。

7. 編程邏輯推理題難不難

您好,邏輯推理題難度確實較大,他需要備考人員有一定嚴密邏改宏輯思維,但是公務員考試中的邏輯思維題都是有一定規律可循的,仿旅首先建議您核大冊關注中公圖書商城,購買專業的邏輯推理教材,點撥您的思路,如果覺得自己學習難度仍較大,建議您可以報班學習,只要您的思路打開了,邏輯推理題難度不是很大的

8. 程序語言方面的問題,邏輯運算的一個題目。謝謝!

C吧,x and y其實已經決定了整個邏輯兆孫雹族帆表達式了,後面的or可以忽略,只要xandy為真整個表達凱察式幾位真

9. C語言邏輯程序題

求最小.大 公倍數的他們答的不錯
我顫氏嘩就不 班門弄斧了 (說實話: 我沒做過求最小.大 公倍數) 你看看我的這個 求怎麼表達出某年的某個日期在當年是第幾天???
是不是你想要的核猜結果
#include<stdio.h>
int f(int moon,int *m,int day)
{
int i;
for(i=0;i<moon;i++)
{
day+=m[i];
} day-=m[--moon];
return day;
}
main()
{
int print(int,int,int);

int year,moon,day;
printf("請茄行輸入年,月,日:");
scanf("%d%d%d",&year,&moon,&day);
if(moon>=1 && moon<=12 && day>=1 && day<32)
print(year,moon,day);
else printf("enter error");
}
print(int year,int moon,int day)

{ int m[12];
printf("\n* %d \\ %d \\ %d\n",year,moon,day);
if (year%4==0 && year%100!=0 || year%400==0) /* 檢驗輸入年份是否為閏年 */
m[1]=29;
else
m[1]=28;
m[0]=m[2]=m[4]=m[6]=m[7]=m[9]=m[11]=31;
m[3]=m[5]=m[8]=m[10]=30;
printf("這日為該年的第 %d 天",f(moon,m,day)); return 0;
}
有錯的話 希望能加我QQ 355884441

10. 求C語言編程大佬幫忙!這道題的邏輯哪裡出錯了!找了幾個小時了沒搞明白!

代碼有點亂,不太看得清思路,裡面有一些數組越界訪問的情況,演算法是否有效未知,重寫了一個供參考。

思路如下:

這個問題實際上是生成0~9的全排列,然後根據每個數在格子里的位置判斷每個排列是否符合要求。網路了一個全排列演算法稍做修改,得到以下代碼,輸出的有效方案數是1580,在我這里輸出大約在70ms到100ms左右。網路這個代碼排版垃圾得無以復加,vs裡面排得好好復制過來全亂,不再重排了。

另外,生成排列數以後,這個格子問題其實應該能轉化為純數學演算法來判斷,不需要真的填什麼表的,我懶得想太多,填表和判斷部分的代碼有點玩的性質。

#include<stdio.h>
//#include<time.h>//測試執行時間的GetTickCount()引用
//#include<Windows.h>//測試執行時間的GetTickCount()引用
constintROW=5;//增加兩行用於減少邊界判斷,實際使用中間3行
constintCOL=6;//增加兩列用於減少邊界判斷,實際使用中間4列
constintBORDER=-11;//表格邊界標記
constintNON=-9;//標記表格有效內容的起止位置
intgrid[ROW][COL];//表格數組
intcount;//有效方案計數
voidInitGrid(void);//初始化表格,棗亮設置邊界和標記表格有效內容的起止位置
voidPrintGrid(void);//列印輸出有效方案
voidPerm(intlist[],intk,intm);//遞歸生成排列數,生成的排列數輸出到表格中,然後判斷是否列印和計數
voidSwap(int&a,int&b);//引用、交換函數,用於遞歸生成排列數函數
voidPermOutput(intlist[]);//排列數填表、判斷、列印、計數
voidmain(void)
{
//longstart_time,end_time;//記錄測試執行時間起止的變數
intnum[10]={0,1,2,3,4,5,6,7,8,9};//0~9數值序列
//start_time=GetTickCount();//獲取此程序段開始執行時間

count=0;
InitGrid();
Perm(num,0,10);
//end_time=GetTickCount();//獲取此程序段執行結束時間
//printf(" Count=%din%ldms ",count,end_time-start_time);//列印輸出程序執行時間
getchar();
}
//初始化表格,設置邊界和標記表格慶鬧有效內容的起止位置
voidInitGrid(void)
{
inti,j;

for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
grid[i][j]=BORDER;//設置邊界
}
}
//設置有效內容的起止位置
grid[1][1]=NON;
grid[ROW-2][COL-2]=NON;
}
//列印輸出有效方案
voidPrintGrid(void)
{
inti,j;

printf("----------- ");
for(i=1;i<ROW-1;i++)
{
for(j=1;j<COL-1;j++)
{
if(grid[i][j]!=NON)
printf("%5d",grid[i][j]);//有效值
else
printf("%5s","");//有效值起止位置
}
printf(" ");
}
}
//遞歸生成排列數,生成的排列數輸出到表格中,然後判斷是否列印和計數
voidPerm(intlist[],intk,intm)//k表示前綴的位置,m是要排列的數目。
{
inti;
if(k==m-1)//前綴是最後一個位置,表示m位排列數已生成,判斷是否有效方案並列印和記數。
{
PermOutput(list);
}
else//否則進入遞歸生成一下個排列數位
{
for(i=k;i<m;i++)
{
//交換前綴,使之產生下一個前綴.
Swap(list[k],list[i]);
Perm(list,k+1,m);
//將前綴換回來,繼續做上一個的前綴排列.
Swap(list[k],list[i]);
}
}
}
//引用、交換函數,用於遞凳差寬歸生成排列數函數
voidSwap(int&a,int&b)
{
inttemp=a;a=b;b=temp;
}
//排列數填表、判斷、列印、計數
voidPermOutput(intlist[])
{
inti,j,n;//n用於引用grid[i][j]的值提高效率
boolok;//方案有效標記
//將排列數填入表格中
n=0;
for(i=1;i<ROW-1;i++)
{
for(j=1;j<COL-1;j++)
{
if(grid[i][j]!=NON)
{
grid[i][j]=list[n];
n++;
}
}
}
//判斷表格中是否有相鄰的數字
ok=true;
for(i=1;i<ROW-1;i++)
{
for(j=1;j<COL-1;j++)
{
n=grid[i][j];
if((grid[i-1][j-1]==n-1)||((grid[i-1][j-1]==n+1))||//左上
(grid[i-1][j+1]==n-1)||((grid[i-1][j+1]==n+1))||//右上
(grid[i-1][j]==n-1)||((grid[i-1][j]==n+1))||//上
(grid[i][j-1]==n-1)||((grid[i][j-1]==n+1))||//左
(grid[i][j+1]==n-1)||((grid[i][j+1]==n+1))||//右
(grid[i+1][j]==n-1)||((grid[i+1][j]==n+1))||//下
(grid[i+1][j-1]==n-1)||((grid[i+1][j-1]==n+1))||//左下
(grid[i+1][j+1]==n-1)||((grid[i+1][j+1]==n+1))//右下
)
{
ok=false;//發現任一相鄰數則設置失敗標記,跳出該輪循環
break;
}
}
if(!ok)//如標記為失敗,跳出外層循環
break;
}
//如標記為成功,方案有效,列印輸出
if(ok)
{
//PrintGrid();//列印輸出有效方案
count++;
}
}
熱點內容
成都高品質安全存儲櫃 發布:2025-07-15 23:45:38 瀏覽:55
頁面演算法操作系統 發布:2025-07-15 23:35:30 瀏覽:129
程序加密專家 發布:2025-07-15 23:28:13 瀏覽:486
別克君威15t怎麼選配置 發布:2025-07-15 23:26:52 瀏覽:509
游戲分流解壓 發布:2025-07-15 23:24:20 瀏覽:161
C語言中撤銷 發布:2025-07-15 23:24:18 瀏覽:582
常見網頁編程 發布:2025-07-15 23:20:16 瀏覽:115
投資經理編程 發布:2025-07-15 23:04:06 瀏覽:639
本地伺服器讓外網訪問 發布:2025-07-15 23:02:49 瀏覽:399
ftp掃描器 發布:2025-07-15 23:01:45 瀏覽:48