一个很简单的C语言问题,我就是想实现:输入一系列数字,然后以0为标志结束输入,再输出之前输入的数字

作者&投稿:裴强 (若有异议请与网页底部的电邮联系)
c语言一道题目。输入一组数字,以0或负数为结束标志,求这组数字中的~


#includeint main(){ int num,sum=0; while(scanf("%d",&num)&&num>0) { if(num%2==0) sum+=num; } printf("偶数和为:%d
",sum); return 0;}

#include

typedef struct linknode /* 单链表的结点类型 */
{
int data;
struct linknode *next;
} node;

main()
{
node *head=NULL,*p,*s;
int x, flag=1; /* flag为循环控制标志,其值等于1继续循环,等于0结束循环 */

while (flag)
{
scanf("%d",&x);
if (x!=0)
{
s=(node*)malloc(sizeof(node));/* 建立下一个结点,指针s 存放该结点的首地址 */

if(s==NULL)
{
printf("不能分配内存
");
while (head)
{
p=head;
head = head->next;
free(p); /*释放内存*/
}
return 0;
}

s->data = x; /* 将整数x存入该结点 */
s->next = NULL;

if (head == NULL) /*创建头指针*/
{
head = s;
p = head;
}
else
{
p->next=s;/* 把s结点连接到单链表最后一个结点的后面 */
p=s;
}
}
else flag=0;
}

p=head;/* 从第一个结点开始 */
while (head) /* 输出单链表中的所有结点 */
{
p=head;
printf("
%4d",head->data);
head = head->next;
free(p); /*释放内存*/

}

return 0;
}

a[10] 没有初始化,里面装的是上一次使用的数据,不知道具体是多少呢- -|||
建议你先全部初始化为,再用do while 或者先输入a[0] 再循环。
而且,最近老是看见人用 fflush(stdin); 有必要吗。。。
问一下,你的输入数据是怎么输入的,如果是 先将所有数据都输入再按回车的话就有问题了。
因为你所有数据都在缓冲区里,你读完一个数据之后就清空缓冲区了,结果后面的数据都被清空了。如果是每输入一个数据,按回车就没事。不过那一句仍然很多余,顺便说一下,fflush(stdin); 貌似只能用于VC(微软自己扩展的)
而且嘛,你是先 i++ 在判断 a[i] 是否等于零的,一直在判断你为输入的数据是否等于0,应该改为 a[i-1]; 在循环体之前输入a[0] 或者用do while 算了
或者直接就给一个死循环,然后再循环体里面判断a[i] 是否等于 0 等于就break
还有 ,n=0.。。。杯具了吧,循环结束后 i >=0 所以基本上不会有输出。。。应该是
n=i

#include <stdio.h>
#include <conio.h>
int main()
{
int a[10];
int i=0;int n=0;
do
{
scanf("%d",&a[i]);
i++;
} while (a[i-1]!=0);
n=i;
printf("\n");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
getch();
}

具体哪里错了 自己看看就知道了

如果你仔细看下a[i]每次的值就会发现它跟你想的不同。我重新写了个
#include <stdio.h>
#include <conio.h>

int main ()
{
int curnum =0; //这次输入的数字
int allnum [10]; //保存输入的数字
int numoff =0; // 保存的数字的个数
while (true) {
printf ("Input a number, type 0 to stop and out put all numbers \n");
scanf ("%d",&curnum);
if (curnum == 0) {
printf ("you typed 0, it's over \n");
break;
}
if (numoff > 9){
printf ("you typed more then 10 numbers, it's over \n");
break;
}
allnum[numoff++] = curnum;
}
printf ("now we will out put all numbers you typed \n");
for (int i = 0; i < numoff; i++)
printf ("%d \n",allnum[i]);
return 0;
}

错在没有退出循环的条件,当i>=10时,编辑器并不认为a[i]=0;并且我用的编辑器也没有报错,(虽然声明的数组是a【10】,数组越界),建议将循环条件改为while(i<10)


问一关于c语言的问题,虽然很简单,可写代码是时老是得不到自己想要的答案...
include <stdio.h>void main(){double r,h;scanf("%lf%lf",&r,&h);printf("圆柱的体积=%.2f",3.14159*r*r*h);}

一个很简单的C语言的问题
include<stdio.h> main(){int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};int i,j,l=0,m=14,n=1;for(i=0;i<15;i++)printf("%d ",a[i]);printf("\\n");printf("输入你要查找的数字:\\n");scanf("%d",&j);while(m>=l){if(j==a[l+(m-l)\/2]) {...

很简单很急的一个c语言的问题,问一下if(t==s[i].mz)这里的问题。如果还...
二.定义的结构体不太合理,且int cbn[1],是不能用%s输出s.cbn的。include<stdio.h> include<string.h> define NUM 1 typedef struct { char mz[48];char zz[48];char bh[48];char cbs[48];int cbn;\/\/int cbn[1]是不是显得画蛇添足了?如果改为int cbn 不是更好吗?int cby;int...

问一个最简单的C语言问题
这个变量a只存在于函数func()中,它不是全局变量因此只有在调用func()函数时a才会生效.这个func()函数的作用就是定义一个值:int func()\\\\定义函数func()的值为整数 { int a=2;\\\\定义a为整数并将2赋值给a return a;\\\\将a的值返回给函数体 } 这时函数func()的值为a即等于2 接下来运行主...

一道C语言很简单的题目,懂C语言的进来帮忙解下
那我们看这里,可以分成三部分(a++<b) ? (a++):(c<d?a++:d)。而后面的(c<d?a++:d)又可以分成三部分(c<d) ? (a++):(d)。我们先看第一个式子,如果是正确的,那么选择a++,如果是错误的就选择(c<d?a++:d)。很显然,如果是选择了(c<d?a++:d),那么还要进行一次...

一个十分简单的C语言问题!急!
include <stdio.h>int main(){char ch;for(;;){scanf("%c",&ch);if(ch<'0'||ch>'9') printf("请输入一个数字!\\n");fflush(stdin); \/\/清除标准输入缓冲区,这样就不会输出两次了}return 0;}

请教一个很简单的c语言问题,我是初学者
仅分析第二条语句printf("a%cb%c\\bc%c\\tabc\\n",c1,c2,c3);} 其中a输出a-》“a”,c输出c1也就是a-》“aa”,b输出b-》“aab”,c输出c2也就是b-》“aabb”,\\b输出退格,把上一个b擦掉了-》“aab”,c输出c-》“aabc”,c输出c3->"aabcc",\\t输出TAB符号,前进八个空格-》...

C语言简单问题
\/* 详细解释如下,希望你能好好看明白,有什么不对的地方也请你指出来!谢谢!unionp.c Created on: 2011-3-6 Author: banxi1988 已知字符0的ascii码值的十进制是48,且数组的第0个元素在低位。则以上运行结果是多少?能详细解释下最好。谢谢 \/ include<stdio.h> int main() { union { shor...

初学者求教简单的C语言问题?
问题1:将case 1, case 2, case 3 依次改作case '1',case '2', case '3'就好了。因为scanf("%c",&choice);这句表示choice是以字符形式接收输入的数据,所以case的形式应该也是字符的形式!case部分如下修改就好了 scanf("%c",&choice)while(choice!=‘4’){ scanf("%c",&choice)swit...

非常简单的C语言问题
include<stdio.h> void main(){float a,b;scanf("%f,%f",&a,&b);printf("%f+%f=%f",a,b,a+b);} 输入(a,b) 中间有逗号! 然后就可以了! 中间的逗号引起的!

易门县18821895990: 一个很简单的C语言问题,我就是想实现:输入一系列数字,然后以0为标志结束输入,再输出之前输入的数字 -
苍史妈咪: a[10] 没有初始化,里面装的是上一次使用的数据,不知道具体是多少呢- -||| 建议你先全部初始化为,再用do while 或者先输入a[0] 再循环.而且,最近老是看见人用 fflush(stdin); 有必要吗...问一下,你的输入数据是怎么输入的,如果是 先...

易门县18821895990: c语言问题:比如我现在写了1,2,3.三个语句,1是一个cin》a;语句,当程序在执行1时,我想实 -
苍史妈咪: 应该不能,你执行cin时,必须回车结束,否则它会一直等待你的输入

易门县18821895990: 一个很简单的C语言问题 -
苍史妈咪: 答案是2 1/2当做整型来处理的 结果为0 #include<stdio.h> main() {double x,y;x=2;y=x+1/2;printf("%f\n",y); } 执行结果为2.000000 如果y=x+1.0/2的话,则结果为2.500000

易门县18821895990: 关于C语言的一个很简单问题!
苍史妈咪: 这个要先说说数据在内存中的储存方式,在计算机内存中,负数都是以二进制补码形式表示和存放的.这样, 一方面可以将减法运算变为加法运算来处理,另一方面又可以对0这个数形成统一的表示(否则会出现+0和-0). 具体规则是:在保持符号位不变的情况下,将负数的原码中的0变成1,1变成0,得到的是负数的反码.负数的补码就是,在保持符号位不变的情况下,先求得其反码,然后再将其结果加1. 正数的反码,补码与其原码矢相同的. 举个例子吧:(第一位为符号位) -1的原码: 1 000000000000001 -1的反码: 1 111111111111110 -1的补码: 1 111111111111111

易门县18821895990: 一个简单的c语言问题 -
苍史妈咪: 你其实是想做字符串逆序输出对吧,char *dest = (char*)malloc( len+1); 这句是给dest申请空间 char *a = &src[len-1]; 把src数组的最后一个地址赋值给a char *b = dest; 把dest的第一个的地址赋值给b int j; 用J计数循环 j = len; 循环len次 while(j--!=0)*b++ = *a--; 一个个来,赋值,最后一个赋给第一个,stc最后一个前移,dest第一个后移

易门县18821895990: C语言 一个很简单的程序问题 -
苍史妈咪: #include<stdio.h> void main() { long float i,s=1.1,j=1.1; for(i=1;i<10;i++) s=s*j; printf("%lf\n",s); }

易门县18821895990: C语言中的一个非常简单的问题
苍史妈咪: 比如现在 i = 1; i++的意思 就是当前语句执行的时候,取 i 的值还是为1,但是执行完后 i 的值加一; ++i 的意思就是在执行此语句的时候,取 i 的值已经加了一,为2了! i += 1就是 i 的当前值加一的意思!

易门县18821895990: 一个简单的C语言问题
苍史妈咪: 运行结果应该是++i+(++i)+(++i)=15,左边输出的仅仅是字符,没有计算,右边的话++i得意思就是i加1,所以右边是4+5+6=15 我运行了答案不是16, tc运行是15,vc6运行是16 我试验了下,发现不同的编译器不一样的,你的应该是vc6把,vc6是这...

易门县18821895990: 急急急!一个很简单的C语言问题
苍史妈咪:i=isdigit(f); 调用它 如果F不为0-9之间的数字 则i返回0 然后就有i==0的判断语句了 如果说i返回的是非0的值的话则表示f是数字 懂了没

易门县18821895990: 简单的C语言问题 -
苍史妈咪: main() int a,b,c,t; scanf("%d%d%d",&a,&b,&c); /* 输入三个数 */ printf("a=%d,b=%d,c=%d",a,b,c); /* 做比较用 */ t=a;a=b;b=t; /* 现在b原来的值变成了a的值,a原来的值变成了b的值 */ t=a;a=c;c=t; /* 这时候 a的值(其实是b的原值) 变成了c的值,也就等于b 的值给了C;*/同时C的值也给a printf("%4d,%4d,%4d",a,b,c); }

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