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

c語言z1什麼意思

發布時間: 2022-07-02 02:11:35

『壹』 c語言中第二個z1,z2的結果是怎麼算出來的,如圖,請說一下詳細步驟,謝謝啦

注意++和--,從左往右,先看到變數,就先用值,先看到運算符,就先自增(自減)
第二個z1:
先看到第一個(x++),於是先用值-4,x再自增到-3,然後再看到第二個(x++),於是先用值-3,x再自增到-2
所以該z1=-4+-3=-7
同樣第二個z2:
先看的(--y)所以y先從16自減為15,再看第二個(--y),y再從15減為14
所以z2=15+14=29

『貳』 C語言的一個問題。 為什麼我用z1 z2 ... 輸出不行, printf的語句可以啊 我明明x1 和n的值都對的啊!

z1=x1/n;
x1和n都是整型,x1/n就是整數除法,你應該將其中一個強制類型轉換成double

『叄』 在C語言中z1=0x06,z2=0x06,if(z1==0x06&&z2==0x7d)什麼意思

下面一句一句的解釋:
①z1=0x06//將十六進制數06賦值給變數z1
②z2=0x06//將十六進制數06賦值給變數z2
③if(z1==0x06&&z2=0x7d)//這是一個判斷分支語句,if後面的括弧內是一個邏輯表達式,如果邏輯表達式的值為真,則執行if後面的語句;如果為假,則越過if後面的語句。
z1==0x06&&z2==0x7d裡面的&&是邏輯「與」運算符,只有當它前面的z1==0x06與後面的z2=0x7d都成立時,整個邏輯表達式的值才是「真」。
由前面的賦值可知,z1==0x06成立,而z2==0x7d不成立。所以,整個邏輯表達式的值為「邏輯假」。
if語句判斷完畢後,後面要做什麼,在這三句後面的程序中。
有什麼問題請留言。

『肆』 求教關於畢業論文參考文獻的中(Z1)的意思

Z就是其他文獻的意思

『伍』 C語言指針編程問題

#include<stdio.h>
intmain()
{
doublex,y,z;
double*px,*py,*pz;
px=&x;
py=&y;
pz=&z;
printf("輸入3個數據:");
scanf("%lf%lf%lf",px,py,pz);
printf("輸出數據:%8.2lf%8.2lf%8.2lf ",*px,*py,*pz);
printf("輸出變數地址: ");
printf("x的內存地址為:%x ",px);
printf("y的內存地址為:%x ",py);
printf("z的內存地址為:%x ",pz);
return0;
}

『陸』 C語言中 if ((Z1==1)&&(X1==1)) {B1=1;}什麼意思

&& 是「邏輯與」, (A && B)的意思是 A事件發生,同時B事件葉會發生。
上數語句就是:
如果(if):
Z1與1相等(Z1==1),並且(&&),B1與1相等(B1==1)
那麼:{
將B1賦值為1.(B1 = 1;)

}。

&&就是表明「 並且」的意思。

『柒』 c語言小問題

全給你了,一次性幫你解決所有問題。
全部程序在Dev-c++和win-tc或vs2005下編譯確認。
/* 大數相加簡潔代碼 */
#include <stdio.h>
#include <string.h>

char* add(char* a, char* b, char* c)
{
const char *s1 = a, *s2 = b; /* strrev()函數用來將字元串(數字)反序排列 */
size_t m = strlen(strrev(a)), n = strlen(strrev(b)), i = 0;
char u = 0;
if(m > n)
{ size_t tmp = m;
m = n; n = tmp;
s1 = b; s2 = a;
}
for( ; i < m; i++)
{ c[i] = s1[i] - '0' + s2[i] + u;
u = c[i] > '9' ? c[i] -= 10, 1 : 0;
}
for( ; i < n; i++)
{ c[i] = s2[i] + u;
u = c[i] > '9' ? c[i] -= 10, 1 : 0;
}
if(u > 0) c[i++] = '1';
c[i] = 0;
strrev(a);
strrev(b);
return strrev(c);
}
char a[501], b[501], c[501]; /*這里設最多可以處理500位的大數相加,可更改*/
int main()
{ int n, i;
printf("Please input times you want to plus:\n"); /*做加法的次數*/
scanf("%d", &n);
for(i = 1; i <= n; i++)
{ printf("Please input two digits you want to plus:\n");
fflush(stdin);
gets(a);
gets(b);
printf("Case %d:\n%s + %s = %s\n\n", i, a, b, add(a, b, c));
}
system("pause");
return 0;
}

--------------------------------------------------------------------
下面是帶小數部分的高精度大數相減代碼,我已經運行通過:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[101],s2[101]; /*最後一位存放字元串結尾標識符'\0'*/
char s3[101];
int z1=0,z2=0,x1=0,x2,t,i,flag=0,m,j;
printf("請輸入被減數:");
gets(s1);
printf("請輸入減數:");
gets(s2);
while(s1[z1]>='0'&&s1[z1]<='9') /*統計被減數的整數部分的位數*/
z1++;
while(s2[z2]>='0'&&s2[z2]<='9') /*統計減數的整數部分的位數*/
z2++;
x1=strlen(s1)-z1-1;/*統計被減數的小數部分的位數*/
x2=strlen(s2)-z2-1;/*統計減數的整數部分的位數*/
t=strlen(s1);
/*下面部分是對兩數的小數和整數部分的位數進行判斷,並對位數少的進行補零操作*/
if (x1<x2)
{ for(i=t;i<t+x2-x1;i++)/*被減數的小數後面補零,使其位數與減數相同*/
s1[i]='0';
}
s1[i]='\0';
t=strlen(s2);
if (x1>x2)
{ for (i=t;i<t+x1-x2;i++)/*減數的小數後面補零,使其位數與被減數相同*/
s2[i]='0';
}
s2[i]='\0';
if (z1<z2)/*被減數的整數前面補零,使其位數與減數的整數位數相同*/
{ for(i=strlen(s1);i>=0;i--)
s1[i+z2-z1]=s1[i];
for (i=0;i<z2-z1;i++)
s1[i]='0';
}
else
if (z1>z2)/*減數的整數前面補零,使其位數與被減數位數相同*/
{ for(i=strlen(s2);i>=0;i--)
s2[i+z1-z2]=s2[i];
for(i=0;i<z1-z2;i++)
s2[i]='0';
}
for (i=0;i<strlen(s1);i++)
{ if(s1[i]>s2[i]) break; /*判斷被減數是否大於減數*/
if(s2[i]>s1[i]) /*被減數與減數交換,並置標志位flag*/
{ strcpy(s3,s1);
strcpy(s1,s2);
strcpy(s2,s3);
flag=1;
break;
}
}
s3[strlen(s1)]='\0';
/*下面部分是對兩數進行按位相減*/
for(i=strlen(s1)-1;i>=0;i--)
{ if (s2[i]>s1[i]) /*判斷被減數的對應位的樹是否大於減數的對應位*/
{ m=1; /*置1,表示有借位*/
j=i-1;
while(s1[j]=='0'||s1[j]=='.') /*改變借位後前幾位的值*/
{ if(s1[j]=='.') /*若是小數點,無須改變*/
j--;
else
{ s1[j]='9';/*若為零,則借位後為9*/
j--;
}
}
s1[j]--;/*若不為零,則借位後應減1*/
}
else m=0; /*清零表示無借位*/
if (s1[i]=='.')
s3[i]='.';
else
s3[i]=10*m+s1[i]-s2[i]+48;/*根據m,對兩數對應的位進行相減,並轉換成ASCII碼*/
}
printf("結果為:");
if(flag) printf("-");/*若結果為負數,則應先列印一個負號*/
i=0;
while(s3[i++]=='0'&&s3[i]!='.');/*略去前面的零*/
for(i=i-1;i<strlen(s3);i++)
printf("%c",s3[i]);
printf("\n");
getch();
return 0;
}

------------------------------------------------------------------
大數相乘簡練代碼
/* 大數相乘簡潔代碼 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 200

void multiply(char *num1, char *num2, char *mul)
{
int i, j, k, len1, len2, s[MAXLEN]={0};
char *p;
len1 = strlen(num1);
len2 = strlen(num2);

for (i=len1-1; i>=0; i--)
for (j=len2-1; j>=0; j--)
{
k = len1+len2-2-i-j;
s[k] += (num1[i] - '0') * (num2[j] - '0');
}
i = 0;
while ( i<=k || s[i]>=10 )
{
s[i+1] += s[i] / 10;
s[i] %= 10;
i++;
}
while ( i>0 && s[i]==0 ) i--;/* 除去開頭可能產生的0 */
p = mul;
while ( i>=0 ) *p++ = s[i--] + '0';
*p = '\0';
}

int main(void)
{
char s1[50], s2[50], *ps;
printf("Input two numbers: \n");
gets(s1);
gets(s2);
ps = (char *)malloc(sizeof(strlen(s1)+strlen(s2)+1));
multiply(s1, s2, ps);
printf("%s\n", ps);
free(ps);

system("pause");
return 0;
}

『捌』 這個c語言的賦值語句是什麼錯誤

你應該是寫錯了,YEAR[z]而不是YEAR[z1],z1這個變數沒有聲明。
另外,你這個程序,UartBuffer.rcv_buf[y]有越界的可能(最後一次循環,y有可能大於255)。

回答補充:
你舉的例子中應該沒有錯誤。下面是我的測試程序,編譯及運行成功
#include<stdio.h>
#define buffer_size 256
typedef struct
{
char rcv_buf[buffer_size];
char Send_buf[buffer_size];
char RcvGetIndex; //指向當前最後讀取的數據位,下次讀取時先步進一位.
char RcvPutIndex; //指向當前最後寫入的數據位,下次寫入時先步進一位.
char SendGetIndex;
char SendPutIndex;
int bOverFLow;
int bEnableTskTxd;
int TxdCnt;
} UART_BUFFER_TYPE;

UART_BUFFER_TYPE UartBuffer;

char YEAR[4];
int main()
{
int y, z;
for(y=0;y<250;y++)
for(z=0;z<4;z++) {
y++;
YEAR[z] = UartBuffer.rcv_buf[y] ;
printf("%d, %d, %d\n", y, z, YEAR[z]);
}

return 0;
}

『玖』 C語言問題

來個最笨的3個循環實現 演算法想計算成小額到大額度 先兌換1元的 在兌換1張5元和1元的組合,以次類推,給你個代碼
根據你的需求完善了;輸入金額後 羅列出所有兌換策略並計算張數總和 最後給你需要張數最少的策略
2;如果僅僅是求最少張數的話給你的 最簡單的演算法 rmb/10得到10元的張數 人民(rmb%10)/5的到5元的張數 (rmb%10)%5得到1元的張數
#include<stdio.h>
int main(void)
{
int x=50,y=20,z=5;
int x1=0,y1=0,z1=0,count=1;
int x2=0,y2=0,z2=0,sum;
int rmb;
printf("請輸入需要兌換的RMB數額(1~50)\n");
while(scanf("%d",&rmb))
{
if(rmb<1||rmb>50)
printf("請重新輸入");
else break;
}
printf("輸入金額是%d\n",rmb);
getchar();
for(z1=0;z1<=z;z1++)
{
for(y1=0;y1<=y;y1++)
{
for(x1=0;x1<=x;x1++)
{
if(x1+5*y1+10*z1==rmb)
{
printf("第%d種兌換方法:%d元可以兌換成%d張1元 %d張5元 %d張10元,共計%d張\n",count,rmb,x1,y1,z1,x1+y1+z1);
x2=x1;y2=y1;z2=z1;sum=x1+y1+z1;
count++;
}
else continue;
}
}
}
printf("最少張數的兌換方法:%d元兌換成%d張1元 %d張5元 %d張10元,僅僅需要%d張\n",rmb,x2,y2,z2,sum);
}

『拾』 關於c語言問題

過程是自左向右結合:
int i=3,j=5;
float x=2.5;
double y=5.0,z;
計算:y+=i-=j*=++x 和i-=j*=x+y

y+=i-=j*=++x先計算++x,x=3.5再計算j*=++x j=3.5*5=17.5
再執行i-=j i=-15.5 再執行 y+=i 結果y=-10.5

i-=j*=x+y 先執行 x+y=7.5 再執行j*=x+y j=37.5 再執行i-=j
結果i=-34.5