當前位置:首頁 » 編程語言 » c語言代碼分析怎麼寫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言代碼分析怎麼寫

發布時間: 2023-08-12 14:48:12

1. c語言源代碼分析(越易懂越好,我只是一個初學者)

printf「」里的是原樣輸出的東西,但是你的y是未知的,是你程序運行到這一步才可以得到的,你沒有辦法寫到「」里,所以你用%d代替,%d不會原樣輸出,它代表整數,而你的y的數值就是%d的數值,就是當printf里有%d的時候程序知道它的數值是「」,後跟的那個數,也就是這個程序里的y,比如printf(「%d%d%d」,a,b,c);第一個%d輸出的是a的值,第二個%d輸出的是b的值,第三個就是c的值了,如果是%c就是字元的意思,%f就是浮點型的數

2. 用c語言編寫24點代碼分析

#include<stdio.h>

double fun(double a1,double a2,int b) //用於嘗試著計算的函數,b為運算控制
{
switch(b)
{
case 0:return (a1+a2);
case 1:return (a1-a2);
case 2:return (a1*a2);
case 3:return (a1/a2);
}
}

void main()
{
int i,j,k,l,n,m,r,save[4];
double num[4]={1,1,1,1},tem1,tem2,tem3,abc=1111;
char sign[5]="+-*/"; //列印時候用的符號,需要和fun函數里的順序保持一致

printf("input 4 numbers:");
for(i=0;i<4;i++)
{
scanf("%lf",num+i); //輸入數據
save[i]=num[i]; //保存原始數據
}

//下面程序的思想,就是利用窮舉(其實就是使用的排列組合方法)來計算可能的組合。
//先把輸入的4個數進行排列(前4個for語句就這個用途)
//再依次插入三個運算符(後3個for語句就這個用途)
//事實上,從這里看,這個程序是不怎樣的。七層循環嵌套,這是編程的大忌。一般循環嵌套最好不要超過兩層。
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(j!=i)
{
for(k=0;k<4;k++)
if(k!=i&&k!=j)
{
for(l=0;l<4;l++)
if(l!=i&&l!=j&&l!=k)
{
for(n=0;n<4;n++)
for(m=0;m<4;m++)
for(r=0;r<4;r++)
{
tem1=fun(num[i],num[j],n);
tem2=fun(tem1,num[k],m);
tem3=fun(tem2,num[l],r);
//以下五種處理方法,涵蓋了有可能的全部運算順序
//這也是本程序最精妙的地方。

if(tem3==24.0)//如果直接算得了24,說明次序不變,直接輸出就是
printf("{(%d%c%d)%c%d}%c%d=24\n",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
else if(tem3==-24.0)//如果算得的是負的,說明需要顛倒第二次運算(第三次運算不可能是加減)
printf("{%d%c(%d%c%d)}%c%d=24\n",save[k],sign[m],save[i],sign[n],save[j],sign[r],save[l]);
else if(tem3==1.0/24.0)//如果是倒數,說明需要顛倒最後一次運算(第三次運算同樣不可能是加減)
printf("%d%c{(%d%c%d)%c%d}=24\n",save[l],sign[r],save[i],sign[n],save[j],sign[m],save[k]);
else if(tem3==-1.0/24.0)//如果是負倒數,則說明第二次和第三次運算都要顛倒(第三次運算同樣不可能是加或減)
printf("%d%c{%d%c(%d%c%d)}=24\n",save[l],sign[r],save[k],sign[n],save[i],sign[m],save[j]);
else
{ //處理()*/+/-()的情況
tem1=fun(num[i],num[j],n);
tem2=fun(num[k],num[l],r);
tem3=fun(tem1,tem2,m);
if(tem3==24.0)
printf("(%d%c%d)%c(%d%c%d)=24\n",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
}
}
}
}
}
}

//後面我再研究了下,發現"第三次不可能是加減法"這種思想是錯誤的,而程序作者在設計的時候,確實是這么認為的,所以,這個程序是有問題的.
//但程序里的主體思想沒有問題,如果需要修改這個錯誤,程序需要在運算順序判斷上下功夫.結果只能取==24的情況.