當前位置:首頁 » 編程語言 » c語言讀程序題求解
擴展閱讀
vrp使用ftp 2022-08-16 13:06:12
字元設備存儲的都是文本 2022-08-16 13:03:35
羅技壓槍腳本教程 2022-08-16 13:03:23

c語言讀程序題求解

發布時間: 2022-08-07 02:56:10

c語言讀程序的5道題,有答案,淚求詳細的解析啊

因為"=="是判斷等號兩邊的值是否相等的語句。

c語言中的「=」是賦值,「==」才是判斷。

等號左邊是x,它的值為3,右邊是y+z,因為"+"的運算優先順序大於"=="所以先執行y+z,得到表達式的值為1+0=1.

所以if(x==y+z)等價於判斷if(3==1),"3==1"的返回值自然是false

於是不執行if()語句下的語句,而是執行else中的printf("+++");

所以最後的輸出是+++


啊,是五道題啊...不是第五題...

沒看清楚,不好意思。

等下補答


1. 前綴"--"和後綴"--"的區別:前綴返回的是值改變之後的值,後綴返回的是改變之前的值。

所以輸出的一個是後綴的10,一個是前綴的9.

當然如果你再printf("%d,%d",x,y);就都輸出9了。


2. 因為x,y,z都是整型變數,所以x/y的返回值是整除的值,也就是商。

10/3=3餘1,而%相當於mod,也就是10對3取模。取模運算只能對整數進行。

在兩個數都是正整數的時候就等於除法的余數,也就是1。

z=(x/y)是賦值語句返回的值就是改變後的z。


3.可以看到,它printf的是兩個表達式的值。而且是兩個邏輯表達式。

第一個是(a+b>c && b==c)「&&」表示且,也就是當兩個都為真的時候返回true,任意一個為假,返回false,可以看到a+b>c是true,而b==c是false,所以返回值是false,因為是以整數形式輸出,那麼就是true=1,false=0.

第二個式子是c>b>a,c語言中沒有連比,這個式子會從左算到右。即(c>b)>a。

其中c>b是true,因為要和a這個整型變數比,所以會強制轉int變成1,然後1>a返回值就是false了。


4.也是前置和後置的問題。m=++i 返回的是i=i+1之後的值。也就是6,n=j--返回的是變化之前的值就是12.



Ⅱ c語言讀程序題求解析

意思是刪除字元串str1的最後一個字元。 比如:
char str1[]="abc";
則strlen(str1)等於3,strlen(str1)-1等於2。str1[strlen(str1)-1]='\0';即str1[2]='\0';字元串str1變成了"ab",puts(str1);或printf("%s",str1);將輸出"ab"。strlen(str1);等於2。

Ⅲ C語言函數讀程序題目求解!

f(0)=1.0
f(1)=1.0+1.0/1=2.0
f(2)=1.0+1.0/1+1.0/2=2.5
a=f(0)+f(1)+f(2)=5.5

Ⅳ c語言讀程序題,求解

sqrt函數用來求平方根,參數必須是浮點數。

而b是int類型,所以需要加(double)將b強制轉換為double 類型。

(double)b+c就是25,開方就是5.

Ⅳ c語言題求解

一、
3. 讀程序寫出程序執行結果

32

4.
讀程序寫出程序執行結果

1

5.
讀程序寫出程序執行結果

16

6.
讀程序寫出程序執行結果

max=10,row=1,colum=2

7.
讀程序寫出程序執行結果

210

8.
讀程序寫出程序執行結果

4

9.
讀程序寫出程序執行結果

7

10.
讀程序寫出程序執行結果

7
a=5,c=4

二、簡答題
1. 編程: 計算sum=1-1/2!+1/3!-1/4!+ …… -1/10!

#include <stdio.h>
main()
{
long term;
int i,j;
double sum,sign;
for(i=1,sum=0.0,sign=1.0;i<=10;++i)
{
for(j=1,term=1L;j<=i;++j)
term*=j;
sum+=1.0/term*sign;
sign*=-1;
}
printf("sum=%lf\n",sum);
}

2. 編程:寫一個判斷素數的函數。要求在主函數中輸入一個正整數以及列印函數調用後返回的相應的判斷信息。

#include <stdio.h>
#include <math.h>
int isprime(int x);
main()
{
int x;
scanf("%d",&x);
if(isprime(x))
printf("%d is a prime\n",x);
else
printf("%d isn't a prime\n",x);
}
int isprime(int x)
{
int i,k;
if(x<2)
return 0;
k=sqrt(x);
for(i=2;i<=k;++i)
if(x%i==0)
return 0;
return 1;
}

Ⅵ C語言 程序分析題 求詳解

這個程序應該是把
十進制數
轉換成
二進制數
輸出
#include
//
頭文件
void
main()
{
int
a,b[10],c,i=0;
//
a存儲待轉換的十進制數,b[10]存儲轉換後的二進制位,
//
c
是存儲
余數

printf("輸入一個整數\n");
scanf("%d",&a);
//
輸入需轉換的十進制數
while(a!=0)
//
只要a不為零,就繼續轉換
{
c=a%2;
//
把a除以2
的余數賦值給c
a=a/2;
//
把商存入a進行下一次循環
b[i]=c;
//
把余數存到數組中作為二進制中的一位
i++;
}
for(;i>0;i--)
printf("%d",
b[i-1]);
//反向輸出余數,即得到二進制
例如輸入4
因為4
!=
0
4
/
2
=
2((商=a)...........0(余數=c=b[0])
因為2
!=
0
2
/
2
=
1((商=a)...........0(余數=c=b[1])
因為1
!=
0
1
/
2
=
0((商=a)...........1(余數=c=b[2])
因為
0
=
0
結束循環輸出
b[2]
b[1]
b[0]

100,也就是二進制的
4

Ⅶ C語言讀程題,根據圖中源程序代碼,分析解答下列問題

(1)while((ch=getchar())!='\n')
使用getchar函數從鍵盤獲取一次按鍵輸入(只是按下一個按鈕),如果按的鍵不是回車(回車鍵的輸入即為'\n'),繼續執行循環體內代碼。然後回到該行代碼,獲取下一個按鍵輸入,一直循環下去,直到按下回車為止。總的效果等同於輸入任意字元串,以回車鍵結束。
(2)if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
在ASCII碼表中,基本字元通過ASCII碼進行編碼。字母a到z的ASCII碼范圍對應為97~122,字母A到Z則對應65~90。所以當輸入字元的ASCII碼在上述范圍之內時,則輸入的字元為大小寫英文字母。字元的比較即ASCII碼的比較。若輸入其它字元,直接輸出不進行處理。
&&代表邏輯與,表示兩側的條件同真時為真,否則為假;||代表邏輯或,表示兩側的條件同假時為假,否則為真。例如,必須當字元大於等於'a'並且小於等於'z'時,字元才是小寫字母;若字元是小寫字母,或者字元是大寫字母,則字元是英文字母。

(3)ch+=3
直接對字元的ASCII碼進行操作,即可實現字元的轉換。這里對字元加3,就實現了字元移位的運算(ASCII碼表中小寫字母是按照實際順序排列的,大寫字母同理)
(4)if(ch>'z'||(ch>'Z'&&ch<='Z'+4)) ch-=26
if條件表示對移位後的ch進行判斷,若超出字母表范圍,因為大小寫字母各有26個,只需對ASCII碼減26就可以回到字母表開頭位置,原理類似於求余運算。

Ⅷ C語言程序閱讀題怎麼做

1.執行預處理命令
2.開始執行程序,從main()進入程序
3.聲明結構體變數,把指針(*pd)和md變數設為⼀個可以使⽤data結構體的結構體變數,則指針(*pd)和md這個變數就包含了其data結構體中的所有元素
4.通過變數md尋找結構體中變數,為其賦值,然後賦值後結構體的地址給指針接收
5.執行調用函數fun,將指針尋找到的變數(64,14)傳遞到fun函數中,用形參x,y接收傳遞的參數
1).進入while循環,判斷x是否不等於y,成立進入循環,不成立則結束循環

2).如果(x>y),計算x-y,將結果賦給x;否則就計算y-x,將結果賦給y(ps:x與y在進入循環就不可能等於,所以結果只有兩種情況,再寫else if的條件判斷就有些多餘,用else即可)
3).結束循環,函數返回x的值,結束fun函數的周期

(循環7-8次,沒仔細數,最後x=2,y=2)
將得函數返回到的值,通過指針,賦給結構體中res的變數(傳值res=2)
6.列印結構體res的最後得到的數據
res=2