c语言程序设计怎样分析数据

c语言程序设计怎样分析数据,第1张

你的问题问的太笼统了。

程序的灵魂—算法

一个程序应包括:

对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。

对 *** 作的描述:即 *** 作步骤,也就是算法(algorithm)。

Nikiklaus Wirth提出的公式:

数据结构+算法=程序

教材认为:

程序=算法+数据结构+程序设计方法+语言工具和环境

这4个方面是一个程序涉及人员所应具备的知识。

算法的概念

做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。

 计算机算法:计算机能够执行的算法。

 计算机算法可分为两大类:

 数值运算算法:求解数值;

 非数值运算算法:事务管理领域。

简单算法举例

例求1×2×3×4×5。

最原始方法:

步骤1:先求1×2,得到结果2。

步骤2:将步骤1得到的乘积2乘以3,得到结果6。

步骤3:将6再乘以4,得24。

步骤4:将24再乘以5,得120。

这样的算法虽然正确,但太繁。

改进的算法:

S1: 使t=1

S2: 使i=2

S3: 使t×i, 乘积仍然放在在变量t中,可表示为t×i→t

S4: 使i的值+1,即i+1→i

S5: 如果i≤5, 返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。

如果计算100!只需将S5:若i≤5改成i≤100即可。

如果该求1×3×5×7×9×11,算法也只需做很少的改动:

S1: 1→t

S2: 3→i

S3: t×i→t

S4: i+2→t

S5:若i≤11, 返回S3,否则,结束。

该算法不仅正确,而且是计算机较好的算法,因为计算机是高速运算的自动机器,实现循环轻而易举。

思考:若将 S5写成:S5:若i<11, 返回S3;否则,结束。

一、有以下程序:

#include <stdioh>

int fun(int a,int b,int c)

{c=ab;}

main()

{int c;

fun(2,3,c); printf("%d\n",c);

}

fun 里面的int c 变量 和 main 里面的 int c 变量 是不同的变量(虽然都用一个名字,但内存地址是不同的),所以在fun 里面改变的 c 变量的值,是不会影响到main 函数 里面 c变量的值的。

二、有以下程序:

#include <stdioh>

main()

{int a[]={1,2,3,4,5,6,7,8,9,0},p;

p=a;

printf(“%x\n”,p);prinf(“%x\n”,p+9);

}

若一个int类型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句输出的结果是

A)212 B)204 C)1a4 D)1a6

选D,一个int占2字节,p 加上 9个int 就等于 194 + 9 2; 注意是16进制,所以选D;

三、以下程序运行后的输出结果是_________

#include <stringh>

#include <stdioh>

main()

{char s[20]=”goodgood!”,sp=s;

sp=sp+2;sp=”to”;put(s);

}

这个你试一下就知道了嘛,输出的还是goodgood,因为p指针从未做过 的动作(运算),也就是说从未改变过指针里面的内容,所以s数组的内容没有改变过。换句话说,在做sp=”to”运算的时候,系统给字符串 to 分配了一个地址,再把这个地址赋给p,此时p已经不指向s[2]了。

四、若有以下说明和定义:

#include <stdioh>

main()

{int(a)(int),b(),w[10],c;

}

int fun(int c) {}

则以下选项中能正确调用fun函数是

A) a=fun; a(w); B) a=fun; (a)(&c); C) b=fun;b(w); D) fun(b);

这个选D,我觉得不用怎么解释了吧,格式问题。

五、假定以下程序经编译和连接后生成可执行文件PROGEXE,如果在DOS提示符下键入PROG ABCD EFGH IJKL<CR>(此处<CR>代表Enter键)则输出结果为_________

#include<stdioh>

main(int argc,char argv[ ])

{while(--argv>0) printf(“%s”,argv[argv]);

printf(“\n”);

}

这个是不是打错了,应该是argv[argc]吧,这个也是试一下就知道了嘛。

六、有以下程序:

#include<stdioh>

main()

{union{short i[2];

long k;

char c[4];

}r,s=&r;

s->i[0]=0x39;s->i[1]=0x38;

printf(“%x\n”,s->c[0]);

}

已知字符0的ASCII码值的十进制数是48,且数组的第0个元素在低位。以上程序的运行结果是

A) 39 B) 9 C) 38 D) 8

这个你要知道long 占4个字节,short占两个字节, char 占一个字节,这样你明白了吗?union是挺闹心的,简单来说就是空间公用。

程序入口main()

fun(i++);//i++,执行后+1,输出结果,所以主函数输出:i=5①

fun(4)

m=m+k=4+0=4,

k=k+m=0+4=4,

printf("m=%dk=%d",m,k++);

输出结果:m=4,k=4

k++,执行后+1,所以主函数输出:k=5

所以程序运行结果:

m=4k=4i=5k=5

f中第一个参数是传值,编译器会复制一份a传递给函数f,复制的临时变量与a是两个不同的变量,它们的地址不同,此后f中的x与main中的变量a不再有任务关联

f的第二个参数是传地值,f中的y与b的地址在内存中是相同的, *** 作的是同一个地址

第一个貌似是一个注册用户的界面

第二个首先是有一个身份z号码合法性的验证功能,一旦输入成功便显示该身份z号对应的用户基本信息:身份z号,生日,年龄,性别,大都通过身份z号码能算出来

呃,大概是这样,不对勿喷

uint8_t ptr uint8_t len 这是传入参数。 len可能是长度,ptr可能指向的是一个数组。

^= 按位异或后赋值。

crc ^= ptr++; //首先将数组第一位异或后复制给Crc。之后ptr再向前一步,简单理解就是指向数组的下一位。

for(i = 0;i < 8;i++) { if(crc & 0x01) crc = (crc >> 1) ^ 0x8C; else crc >>= 1; }

//将取到数组第一位值,与0x01上。如果非零,crc就需要右移一位,再与0x8C异或。否则右移1位。每位数组值要做8次。

while(len--) //表示要判断数组内len个值。或则说是取得数组内len长度的元素个数。

return crc; //len个数组值都作完以后,将Crc返回。

我想你需要了解一下 0x01的意义,0x8C的意义。

0x01 = 0000 0001

0x8c = 1000 1100

没看到啊,已经有人答完了。哎,早知道就不写这么多字了。

以上就是关于c语言程序设计怎样分析数据全部的内容,包括:c语言程序设计怎样分析数据、请高手帮忙分析几个C语言程序,本人是初学者,请多多指教。、请教各位,这道c语言程序该怎么分析多谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9861338.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存