大家帮忙看一个简单的C程式

作者&投稿:山纪 (若有异议请与网页底部的电邮联系)
一个简单的C小程序,大家帮忙看看~

float 数据类型输出的有效位为6~7;333333.328125 这个数前7位有效

s 和 p 一个是整型指针 一个是Char型指针,

整型指针指向的地址 是一个4字节的内存空间的首地址
Char指针指向的地址 是一个1字节的内存空间的首地址

s=p 后 再 *s=1 会导致内存超范围操作
因为p指向的地址只分配了一个字节的空间,但 *s=1 会导致向该地址后的4个字节填充内容

两个结果 一个是报错 一个是 *p = '\0' 而不是 '1'

其实这个程序并不简单。先看你第一行,#include<AT87X51.H>,这个文件请问是什么系统。我国内百度,国外谷歌了一下AT87X51,都找不到这个头文件,说明这不是一个公共开放的系统。

1。我猜测这个系统是某种速度慢的IC芯片,它的时钟速度是100*20*248 Hz, 于是循环那么多次会需要一秒来执行。
2。这个是C语言语法的一部分。void main(void)第一个void是函数的返回类,第二个void是一个特殊用法,表示这个函数不接受任何参数。
3。程序的最后其实也在那个while(1)的循环之内。我猜测p0和p2是在那个AT87X51.H头文件中定义的两个变量。而这个loop的作用就是每秒钟把p0设成table[second/10],而second/10就是秒数的第一位(十位),然或把p2设成table[second%10],而那就是秒数的个位。

啊!现在我知道这是什么了。想想:两个数就够了,为什么用table呢?其实这应该是一个计数器,每60秒归零,而table里的数值就是表示那个LED灯上的7条线应该哪个亮。

比如我们把这10个16进制数写成二进制:
table[0] = 0x3f = 0111111
table[1] = 0x06 = 0000110
table[2] = 0x5b = 1011011
table[3] = 0x4f = 1001111
table[4] = 0x66 = 1100110
table[5] = 0x6f = 1101111
table[6] = 0x7d = 1111101
table[7] = 0x07 = 0000111
table[8] = 0x7f = 1111111
table[9] = 0x6f = 1101111

看table[8].液晶显示屏上数字8确实7条线都亮!
慢慢推就知道:
------
|......|
|......|
------
|......|
|......|
------
二进制中第一位数表示中间的横线,
第二位表示左上角竖线,
第三位表示左下角竖线,
第四位表示下面横线,
第五位表示右下角竖线,
第六位表示右上角竖线,
第七位表示上面横线。

原来这个是显示两位数字的程序啊!!

1.三重嵌套循环,这样算并不准确。
2、前面的表示不返回任何数据,后面的不是不带参数进来。
3、p0表示十位的数值,p2表示个位的数值。

。。。


一个简单的vb编程,总是说next,没有for,大家来帮我看看哪里错了
Next j Next i 一个for,必须有一个Next与他对应:上面的代码可以简写成这样:For i = 1 to 50 其他代码 for j = 2 to 50 其他代码 Next j,i '将两个循环变量按倒序写在Next后面,之间用逗号隔开 就是不能:for i = 1 to 50 for i = 2 to 50 同一循环变量,不能在同一个嵌套...

超简单的5个生活小妙招
在一个玻璃碗里面,倒入1\/3的清水和1\/4的白醋,放在微波炉里打热3分钟,可以有效地把微波炉里面各个地方的油垢全部软化,然后我们将玻璃碗拿出,使用抹布蘸去一些稀释过的洗洁精,因为洗洁精有些去油污的能力,清洗软化过的油垢非常轻松(前提是一定要将微波炉的电源切断,不然会威胁到我们的身体安全!) 生活中的小麻烦...

我晕,我倒啊,一个简单的ASP程序竟然说我错了,大家帮我看看吧
数据库文件的权限啊~ 给user\/everyone完全哦 还有目录一样的.

高分悬赏:想一个简单好玩的互动游戏,大家帮帮忙!!
2.争相看背,规则:两个人相对而站,由主持人在双方的背上用粉笔写上一个数字或字母。发令后,双方分别走上前,互相争看对方的后背。先看到并且讲出对方背后的数字或字母者为胜。为了确保能够段时间分出胜负,在制定规则时,可以考虑允许参加游戏者运用1只手拉另一方同学的衣服,如果两手都上,视为...

一个简单的JSP程序。望大家帮忙.
function mianji(){ var up = document.frm.up.value;var down = document.frm.down.value;var hight = document.frm.hight.value;if(up.length == 0){ alert("请输入梯形的上梯");return "";} else if(down.length == 0){ alert("请输入梯形的下梯");return "";} else if(...

一个英语句子不太懂,大家帮忙看看
1. 句子中有错误,twenty patients or soon Monday morning应为twenty patients or so on Monday morning 难怪你不明白,呵呵!~2. from next month on是“从下个月开始”的意思,类似于from now on(从现在开始),from next week on(从下周开始)。3. 句子结构很简单,但要断对地方。我帮你...

问大家一个简单的数学问题吧!我也搞不懂 在分式方程中要检验结果必须看...
而等式的性质其中一个是等式两边同时乘一个不为0的数或式子等式仍然成立。这里就规定了所乘的最简公分母不能为0.2、最简公分母是通过分式分母求出来的,如果方程的解带入最简公分母为0,就必然有一个分式的分母为0,分式就没有意义。 将方程的解带入最简公分母合理且简单。

一个c语言的简单问题,c的赋值总是不成功,大家给看看怎么回事啊?_百度...
浮点数存储问题,对于不是2的负N次方的和可以表示的小数都无法在计算机当中精确表示。12.5的小数部分是0.5=0.5*1,即2的负1次方,是可以精确保存的,像0.125=0.5*0+0.25*0+0.125*1或0.625=0.5*1+0.25*0+0.125*1。像0.3永远无法用2的负N次方的和的精确表示,所以只能取近似值...

问一个关于C语言的问题 很简单 大家帮忙看看代码 maxline这个变量我看...
int ReadDat(void)函数中的while循环读取的个数赋值给了maxline=i;因此maxline有了值,这个值是根据实际情况变的,你可以将PS71.DAT文件中数据仅保留10行测试下.学习C语言一定要学会调试.

不看后悔的pdd家居好用好物!
因为冰箱里会放一些腌菜,平时就会有一股菜的味道,不好闻!可以试试这个除味蛋,小小一个像鸡蛋一样,很可爱使用简单,撕掉薄膜放进去就可以啦,里面含有茶多酚一可以分解异味。 标签打印机 因为字不太好看,还有点强迫症整齐的我,喜欢给家里的东西分门别类,随便挑了个销量高的支持打印表情,文字,图案,形状都ok,用来...

四川省15689232080: 一道简单的C程序,帮忙看一下 -
海瑗司坦: 问题出在这里 int i ,k=1; float s=0; 和 s=s+ k / i ; 因为k和i都是整数而且i++,所以k/i的结果是1和0,之后加上s(浮点型),所以最后结果自然是1.000000.我帮你改了一下程序,你自己看一下吧!#include void main() { float i,k=1,s=1; for(i=1;i { s=s+k/i; k=-k; } printf("sum=%f\n",s); }

四川省15689232080: 一段C语言程序,请大家帮忙看看~~ -
海瑗司坦: 你这个程序是想输入一个字符,如果是大写,就输出小写,如果是小写就输出原值吧. 问题是: 1、没有main函数,即main() 2、没有输入语句,即scanf("%c",&m) 3、你发上来的这个倒数第3行不太完整. 正确的应该是: #include main() { char m; scanf("%c",&m); m=(m>='A'&&m<='Z')?(m+32):m; printf("%c\n",m); return 0; } 应该就没问题了.

四川省15689232080: 简单C程序,帮忙看下 -
海瑗司坦: #include<stdio.h> 引入一个叫做stdio.h的头文件,此头文件当中有printf函数的声明 int main() main函数的定义体 { 定义体开始 int a=100; 定义一个名字为a的变量并且赋初值100 while(a<=200) 当a小于等于200的时候进入这个循环 { 循环体开始 if(a...

四川省15689232080: 急求!!!一个简单的c程序,高手请进.帮忙看一下
海瑗司坦: ------------------------------ AA(一个Tab位)BB CCCC DD(两个Tab位)EH /my/ (一个Tab位)"your"

四川省15689232080: 急求一个C语言程序,各位帮忙想想啊,很简单的,但是本人太笨了不会,先谢谢大家了啊
海瑗司坦: c++写的 你自己改下就是C了 #include<iostream.h> void main() { float crose[10]; float *p; p=crose; int i; float Sun=0; for(i=0;i<10;i++) { cin>>p[i]; Sun+=p[i]; } for(int m=0;m<9;m++) { int j=m; for(int l=m+1;l<10;l++)if(p[l]<p[j])j=l; if(j>0) { float k=p[j]; p[j]=p[...

四川省15689232080: 一道简单的C程序`请大家帮忙`
海瑗司坦: 这么简单的程序! #include <stdio.h> #include <string.h> char* reverse(char *str) { char tmp, *p, *q;//p指向字符串首,q指向字符串尾 for (p = str, q = str + strlen(str) - 1; p < q; p++, q--) { //字符交换 tmp = *p;*p = *q;*q = tmp; } return str; } void main() { char str[50]; scanf("%s", str); printf("%s\n", reverse(str)); }

四川省15689232080: C语言简单程序,帮忙看一下. -
海瑗司坦: 你最好改成if语句,你这是死循环啊.另外你将gechar()放在前面,不要再循环内.因为你放在里面涉及优先级问题,你的b[0]得到的是true 或false,所以会出现那个乱码字符.

四川省15689232080: 一个简单c语言程序
海瑗司坦: void cha(int a, int b[]) {b[3] =a;b[10] = a; }

四川省15689232080: 大家过年好,简单的C程序,请帮我解释下,谢谢了. -
海瑗司坦: 先看这一句,printf("a%c b%c\tc%c\tabc\n",c1,c2,c3); 首先输出"a",然后"%c"是格式控制符,用来输出后面的c1;接下来b也一样;"\t"是转义字符,表示输出一个水平制表符范围的空格;接着输出"abc",后面"\n"代表输出回车.接着printf("\t\b%c %c,c4,c5"); c4='\101'表示c4代表ascii码101的那个字符,查ascii码,是"A",c5如此类推

四川省15689232080: 简单的一个C程序 帮忙看下 -
海瑗司坦: 你的程序写开始就错,并且要注意你的IF条件用的时候{}要用的对称不要少一个或多一个.程序结构应是:main(){int a,b;if(条件){执行语句;}else{执行语句;}getch();}

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网