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

c語言代碼看不懂

發布時間: 2022-06-15 09:38:49

1. c語言初學者:很多代碼都看不明白怎麼辦

多看看書
是對的
看書不要死看
先把基本的語法
看懂

要看他的演算法
掌握這兩點
就不會很吃力了
有的剛開始看不怎麼明白
你一定要堅持
等看到後面
有時你就會豁然開然
前面為什麼不怎麼懂了

2. C語言編程 有程序 看不懂 求解釋

#include<stdio.h>
#include<string.h>
intmain()
{
inta[10000]={0};//這里賦值要注意,,表示第一人已把所有燈都關了
inti,j,n,w;
w=0;
scanf("%d",&n);
for(j=2;j<=n;j++)//如樓上所說從2開始就好,第j個人操作開關
{
for(i=1;i<=n;i++)//這種直接窮舉每一個數再判斷是否倍數的演算法,效率太低了
{
if(i%j==0) //i是j的倍數
if(a[i]==0) //這種0,1互換的方法也很low
a[i]=1;
elsea[i]=0;
else //這一步的操作更是多餘,純粹浪費資源
a[i]=a[i];
}
}
for(i=1;i<=n;i++) //操作完畢,檢查所有的燈,a[i]==1的是打開的
{
if(a[i]==1)
printf("%d ",i);
}
return0;
}

3. C語言,這個程序完全看不懂,誰能解釋一下

初始化f1和f2都為1。大循環,i從1到20
先輸出初始化的f1和f2的值,輸出為11
判斷i是否被2整除,如果整除則換行,不整除則無操作。第一輪i=1,無操作。
把f1+f2賦給f1,也就是前兩個月的值相加,賦給f1(注意現在f1=1+1=2)
再把f1+f2賦給f2,也就是剛才已經變換過的f1加上以前的f2,賦給f2(注意現在f2=2+1=3)
同理,第二輪,先輸出上一輪變過了的f1,f2,輸出為23。
再判斷i是否被2整除。i此時為2,被2整除,所以現在的輸出為1123(換行)。
之後都是循環。第三輪58(不換行),第四輪1321(換行)
總輸出應為:
1123
581321
345589144
......
共十行

4. c語言看不懂代碼,求一步步解釋,謝謝

答案正確啊。*(a+1)就是a[1],*(ptr-1)就是ptr[-1](用負數表示下標是非法的,這里只表示從ptr所指的地方向左移一個元素的位置)。那麼——
void main( void )
{
int a[5]={1,2,3,4,5};//使a[0]==1,a[1]==2 ,a[2]==3 ,a[3]==4 ,a[4]==5
int *ptr=(int *)(&a+1);//聲明指針ptr並用(int *)(&a+1)初始化到指向數組a的元素5的後面一個元素,由於&a是(*)[5]型,所以要用(int *)強制為int *以便與prt類型匹配
printf("%d,%d",a[1],*(ptr-1)); //
return;
}

5. C語言,看不懂,代碼計算5!+7!+9!+11!

還要回到課本,for的模板為:
for (初始化;開始判斷;循環調整) 循環語句;
上面有3個分號,最後一個是循環體,本程序中為空語句,重點是前面兩個分號、產生三個語句,分別是初始化、判斷、調整,程序執行的邏輯是:
初始化;
判斷;
調整;
跳轉到到判斷

復習了這個基礎之後,本程序就容易理解了,初始化是s=0,t=6,i=5;判斷是i<12;調整是s+=t*=(i*i-1),i+2;
調整部分的連續賦值如果不懂,還得把課本前翻幾頁,是從右往左執行的,調整部分語句體相當於:
t=t*(i*i-1);
s=s+t;
i=i+2;

整個代碼可以用while語法表示為:
s=0;
t=6;
i=5;
while(i<12)
{
t=t*(i*i-1);
s=s+t;
i=i+2;
}
最後就回到數學問題,為什麼這個循環可以得到答案,也可以耐心模擬,例如第一次t=6*(5*5-1)=144,第二次時候t=144*(7*7-1)

6. C語言我連程序都讀不懂怎麼辦呢

讀不懂太正常了。
因為你不知道這個演算法思想
一般來說,讀別人寫的程序代碼是很困難的事情
假如沒有文檔的化。
這也就是為個么現在要求大家寫程序要加註釋的原因
不加註釋的化,一年前寫的程序,自已可能都看不明白了

7. C語言看不懂

對於第一個的一大堆的if條件語句,只能逐個的使用play_state的值去與後面的比較,當然要遵守&&運算符的短路規則,也就是對於a&&b,如果a的值為0,那麼就不用去判斷b是多少了,因為不管b是多少,對於&&運算符來說與0的運算其結果都為0。
至於你說的找不到play_state的值,play_state這個值,如果是在其他函數中或者if語句中定義的,那麼這個值可以不用看,因為這個值是局部變數,局部變數一但離開定義他的語句塊或者函數,其值將不會存在,而且在語句塊或函數外的程序是看不到局部變數的。因此對於play_state的值,你應該查找,是不是定義了一個全局變數,應找到全局變數的值才是有效的值。
至於邏輯預處理指令#if,其實這個語句就與C中的if語句是一樣的,如果#if後面的條件成立,則執行後面的語句,否則就跳出。並不是像你所說#ifdef語句,是否後面沒有定義就不用看了,應該判斷後面的條件是否成立。一般#if語句是與#define連合使用的,下面給你介紹一下#if語句。
邏輯預處理器指令:
1、邏輯#if指令:該指令原理與條件語句if相同,如果測試為真就執行後面的語句,如果為假則跳過後面的語句。該指令有兩種用法,其一可以用#if指令測試某個符號以前是否用#define指令定義過,這是最常用的用法,其二可以用來測試某個條件表達式是否為真。
2、#if指令用法一:測試某個符號是否以前用#define定義過,該用法的指令如下#if
defined
標識符
….
#endif
其縮寫形式為#ifdef
標識符….#endif表示如果,指定的標識符已被#define定義,則中間的語句就包含在源文件中,如果該標識符還未被#define定義,則跳過#if和#endif之間的語句,該語句以#endif結束,還要注意的是標識符前的關見字是defined比define多一個字母d。
3、測試標識符是否不存在:其語法為#if
!defined
標識符…..#endif縮寫形式為#ifnedf
標識符…..#endif表示如果指定的標識符沒有定義,則把#if和#endif之間的語句包含在源文件中,如果標識符已定義則跳過#if和#endif之間的代碼,實標上#ifndef語句比#ifdef語句使用得更頻繁,因為系統使用該語句防止頭文件被多次包含,
4、防止頭文件被包含多次的方:其方法為#ifndef
HY
#define
HY語句#endif程序在開始遇到標識符HY時沒有被定義,這時執行後面的語句,再第二次被使用時則標識符HY已經被定義,這時不會執行後面的語句,從而防止了同一頭文件被包含多次的情況。這里要注意使用#define後面定義的標識符不需要值。
5、#if語句還可以使用邏輯運算符以測試多個值,比如#if
defined
HY1&&HY2….#endif當HY1與HY2都為真時才執行,同樣還可以使用其他邏輯運算符。
6、#if指令用法二:測試某個表達式的值是否為真,其語法格式為:#if
常量表達式….#endif,注意常量表達式的求值結果應是整數常量表達式,比如#if
a=2
….
#endif測試a的值是否為2,如果為2則執行#if與#endif之間的語句。
4.7、多個#if選擇塊:和常規的if語句一樣#if也有對應的#else和#elif語句,比如#if
a=3
….
#else
….
#endif表示如果a=3則執行if後面且在#else前面的語句,如果為假則執行#else與#endif間的語句。#elif用來實現多個選擇,該語句和常規語句的else
if相似,比如#if
a=1
….
#elif
a=2
….
#elif
a=3….
#else
….
#endif表示,如果a=1則執行#if後的語句,如果a=2則執行該條件後的語句。
執行開始後,按順序先執行x=0;,因為它不在循環體內,所以只執行1次,
接下來是個循環嵌套,外層循環的for(i=1;i<n;i++)語句要執行n次,(因為要進行n次判斷),內層循環要執行n+(n-1)+(n-2)+...+1次,用等差數列求和公式表示這個和,就是n(n+1)/2次

8. C語言的一些題目:不太理解代碼,求詳細解釋,手寫部分看不懂

首先main()是主函數,通俗來說就是一個程序的入口,只能先運行main函數。

而題中的fun在main中被調用了,並且傳入的參數值是500

9. c語言代碼看不懂

開頭的float height(float father,float mother);是載入一個函數。
中間的son=height(father,mother);是調用這個函數。
最後面的float height(float father,float mother)是定義一個函數,關於函數,你可以理解為一個方法,可以重復使用的方法。
你看代碼最下面有這個函數的聲明。

10. C語言 一段代碼看不懂 求教

long
filesize(FILE
*stream)
{
long
curpos,
length;
curpos
=
ftell(stream);
//
獲取文件指針的位置
fseek(stream,
0L,
SEEK_END);
//
將文件指針移到文件末尾
length
=
ftell(stream);
//獲取文件當前指針的位置。
fseek(stream,
curpos,
SEEK_SET);
//將文件指針移到curpos處
return
length;
}