
你的问题问的太笼统了。
一个程序应包括:
对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构(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语言程序该怎么分析多谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)