当前位置:首页 » 编程语言 » 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;
}