求教大神如何用c语言编写程序:输入100到n的数,输出各位数的和为9的数,并求和

输入100到n的若干个数,输出其中各位数的和为九的数,并求和

第1个回答  2013-04-19
#include <stdio.h>
int main()
{
int re,x,i,j,sum,s;
printf("请输入一个数");
scanf("%d",&x);
if (x>=100) {
for (i=100,sum=0;i<=x;i++) {
for (s=0,j=i;j!=0;) {
re=j%10;
s=s+re;
j=j/10;
}
if (s==9) {
printf("%d ",i);
sum=sum+i;
}
}
}
printf("\n The sum of them is: %d",sum);
return 0;
}
望采纳,嘻嘻追问

不行啊,是输入若干个数,然后输出其中各位数之和为九的数,求大神再赐教

追答

你的意思是说100到n中的n是在编译的时候决定的吗,并且所谓的若干个是指输入的数据个数是不确定的(即输入了多少个就多少个)的吗?如果是的话以下程序将满足你的要求;
当然有更好的算法,但是涉及动态内存分配、结构体和链表,如果楼主能看的明白也可以给出来。
要注意的是这个程序在输入时要一口气输入所有要输入的数据比如“107 207 108 801 456 123 603 306 504 789”,由于gets()函数的特性,空格会作为有效字符输入的,结果就是按下回车键后程序马上开始分析计算了

#include
#define N 1000
int a[N-100];
int main()
{
int re,x,i,j,sum,s;
char *str;
printf("请输入若干个小于%d的数,并用空格隔开:\n",N);
gets(str);
for (x=0;*str!='\0';str++) {
if (*str>='0' && *str='0' && *str=100 && a[i]<=N) {
for (s=0,j=a[i];j!=0;) {
re=j%10;
s=s+re;
j=j/10;
}
if (s==9) {
printf("%d ",a[i]);
sum=sum+a[i];
}
}else{
printf("输入有误");
}
}
printf("\n The sum of them is: %d",sum);
return 0;
}
望采纳

第2个回答  2013-04-20
#include<stdio.h>
main( )
{int i,j,n,sum=0;
scanf("%d",&n);
for (i=100,i<=n,i++)
{a1=i%10;a2=i/100%10;a3=i/100;
if(a1+a2+a3==9){printf(“%d”,i);sum+=;printf(“%d”,sum);}
相似回答