C语言高手进来!!!高分悬赏!!!

计算机三级网络的13和20题
为什么13题里面必须有if(!xx[i]) continue;
这一句,两个同样都是统计正整数的,只是13题里面有一个向右移一位的问题
难道0向右移一位就不是0了吗
高份悬赏!!!
高手回答
已知在文件IN20.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat() 的功能是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:(1)求出这文件中共有多少个正整数totNum; (2)求出这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT20.DAT中。

void CalValue()
{
int i,thou,hun,ten,data;
int ab;
long sum=0;
for (i=0;i<MAXNUM;i++)
{
if(xx[i]>0)
{
totNum++;
thou=xx[i]/1000;
hun=xx[i]%1000/100;
ten=xx[i]%100/10;
data=xx[i]%10;
ab=thou+hun+ten+data;
if (ab%2==0){totCnt++;sum=sum+xx[i];}
}
}
totPjz=sum/totCnt;
}

还有,把if(!xx[i]) continue; 换成了if(!xx[i]) break;居然也对,这两个有什么区别

最好把源代码贴出来
右移一位相当于除以2.
用移位的办法做整数的除法运算比用运算符"/"快
计算机网络三级上机题中一般不会出现位操作的.
本人已经过三级两年了,优秀.现在还在用C语言,用起来不错,好好掌握,在科研上很有用.

if(!xx[i])
continue;
的意思是,如果某一行的数据是0的话,忽略不管,进行下一个循环继续查找正整数,因为我们要统计的是正整数,空行(值为0)是没有意义的,这样把它排除,以便下面的语句(totNum++; )统计正整数有几个。
因为我们在输入数据的时候可能由于多输入了一个回车或TAB而导致某一行为空。以此句来检查一下,以跳过没有意义的行。当遇到空行时,即不执行下面的语句,而进行下一个循环,这样便节约了程序运行的时间。在编写大程序时,程序的有效运行时间是很重要的。

0向右移一位仍然是0。但是由于前面排除了数据为空(也就是为0)的行,所以,所操作的数据都是非零的正整数,经if(!xx[i])
continue;过滤后就不存在为零的数据了。因此,你“难道0向右移一位就不是0了吗 ”是多虑了.

if(xx[i]>0)已经过滤掉了为零的行

不可能的,
if(!xx[i]) continue;中continue的意思是指,如果条件满足将进行下一次循环,本次循环放弃,也就是说,如果现在xx[5]是零(也就是空行),下面的语句将不被执行,而是i自加,然后从xx[6]再开始判断是否满足条件.
if(!xx[i])break;的意思是,如果条件满足(即xx[i]是空行),直接从for循环跳出,不再判断以下数据是否满足;也就是说,如果当前xx[5]是空行,将不再判断xx[6],xx[7],xx[8]……是否满足。for语句将不再被执行。将执行的是for循环后面的代码。

唯一可能的原因就是,为零的行只在所有数据的后面,在最后一个数据之前没有为空的行,开头以及中间没有空行.你打开数据看一下就可以了,用记事本打开.
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-08-29
其实比较简单的记法就是:
a>>b = a乘以2的b次方
a<<b = a除以2的b次方

C语言编写一个程序,急用!!高分悬赏(正确答案追加分数)
include <stdio.h> include <stdlib.h> include <conio.h> include void Menu();void Plus();void Minus();void Multiply();void Dir();int main(){ int n, flag = 0;while(1){ Menu();do { flag = 0;scanf("%d", &n);switch(n){ case 1: Plus(); break;case 2: Min...

C语言大神帮帮我啊!!帮帮忙,我悬赏高分帮帮忙!!在线等待
void Swap(int &a,int &b){ int temp=a;a=b;b=temp;} void Perm(int list[],int k,int m)\/\/k表示前缀的位置,m是要排列的数目.{ if(k==m-1)\/\/前缀是最后一个位置,此时打印排列数.{ int tag=0;for(int i=0;i<m;i++){ if(list[i]==i+1){ tag=1;break;} } if(!...

高分悬赏!!!用C语言编一程序。将大写26个字母,小写26个字母,0到9十个...
for(int j=0;j<8;j++)printf("%c",a[j]);printf("\\n");x++;} }

...C语言!救人一命胜造七级浮屠!高分悬赏,选中的好加100!谢谢了!_百度...
m=(m<z)?m:++z 11.系统默认的c语言源文件的扩展名为( .c ),经过编译生成的目标文件扩展名为( .obj ),经过连接后生成的可执行文件扩展名为( .exe )。12.计算机程序设计语言的发展经历了从(机器语言)、(汇编语言)到(高级语言)的历程。13.c语言的字符串常量是用( ...

求高手解答一些简单的C语言题目!(高分悬赏)
1、Before GlobalPlusPlus(), it is 1 Before ++, it is 1 After ++, it is 2 After GlobalPlusPlus(), it is 2 2、over!3、(1)printf("Input a year:");scanf("%d",&year);(2)(0==year%4 && 0!=year%100) || 0==year%400 4、(1)s[i]!='\\0'(2)s[j]=s[i];5...

高分悬赏!关于C语言如何进阶学习
Python等脚本式的语言有着不同于C的有趣之处,也是可以学习的。面向应用的学习:学习语言的目的是编程应用,面要结合自己的兴趣进行面向应用的学习,比如说嵌入式系统编程是C应用较多的场合;学习用WIn32 API编写GUI或者操作Windows系统低层也很有用处;学习Linux下的编程是网络编程的重要平台。

高分悬赏急求哪位单片机C语言编程高手帮我翻译这个程序,由于要提问到...
define uint unsigned int \/\/ 宏定义“短表示”,方便书写 define uchar unsigned char \/\/ 同上 void lcd_mwc(uchar i) \/\/ 这个函数是用来写命令的:如启动液晶 \/\/ 锁定液晶等,可以查看液晶控制字就知道 \/\/ 0xb8和0x40是什么命令了,估计是启动 \/***\/ \/\/ 属于函数void lcd_clear(...

C语言代码差错。高分悬赏!!!
输入函数你只有输入一个晕 void insert(struct student stud[],int count) \/*插入函数*\/ { int j;struct student temp;printf("请输入要插入的学生的信息:\\n");temp=input();for(i=0;i<count;i++){ if(stud[i].avr<temp.avr)break;} for(j=count;j>i;j--){ stud[j+1]=stud[j...

高分悬赏!!c语言turbo c的环境中,怎样用定义整形变量的方法输出汉字...
定义一个二维的char数组,或者直接用switch语句就能搞定了。我还是喜欢二维数组,定义如下:char month[12][5]={"1月","2月"……,“12月”};输入i,对应输出month[i-1]即可,用%s输出哈

【c语言共用体】里面嵌套有结构体,求详解。高分悬赏。谢谢
共用体就是享用同一块内存 在此例中 e的大小为最长元素的大小,也就是结构体out的大小,共两个int,假设此处int为4字节 e.c和e.d和e.out.a占用同一块内存,即低4字节的内存,a.out.b占用高4字节内存 然后e.c=1;e.d=2;e.c和e.d和e.out.a都为2 e.out.a=e.c*e.d = 2*2 =...

相似回答
大家正在搜