C语言程序题目,请大神帮忙看看哪错了。谢谢!

题目描述
财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。
输入
输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资,工资额不超过100000。n=0表示输入的结束,不做处理。

输出
对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。
Sample Input
3
1 2 3
0
Sample Output
4

下面是我的程序:
#include<stdio.h>
#include<math.h>
int main(){
int n,i,j;
int b[a];
int sum;
int a1,a2,a3,a4,a5,a6;
int c1,c2,c3,c4,c5,c6;
for(i=0;i<=100;i++){
while(scanf("%d\n",&n)&&(n!=0))
for(j=1;j<=n;j++){
scanf("%d ",&b[j]);
a1 = b[j] % 100;
c1 = b[j] - 100*a1;
a2 = c1 % 50;
c2 = c1 - 50*a2;
a3 = c2 % 10;
c3 = c2 - 10*a3;
a4 = c3 % 5;
c4 = c3 - 5*a4;
a5 = c4 % 2;
c5 = c4 - 2*a5;
a6 = c5 % 1;
}
sum =a1+a2+a3+a4+a5+a6 ;
printf("%d\n",sum);
}
return 0;
}

第1个回答  2014-06-05
#include<stdio.h>
#include<math.h>
int main(){
int n,i,j;
int b[a];
int sum;
int a1,a2,a3,a4,a5,a6;
int c1,c2,c3,c4,c5,c6;
for(i=0;i<=100;i++){
while(scanf("%d\n",&n)&&(n!=0))
for(j=1;j<=n;j++){
scanf("%d ",&b[j]);
a1 = b[j] /100;
a2 =b[j] %100/50;
a3 = b[j] %100%50/10;
a4 =b[j] %100%50%10/5;
a5= b[j] %100%50%10%5/2;
a6=b[j] %2;
}
sum =a1+a2+a3+a4+a5+a6 ;
printf("%d\n",sum);
}
return 0;
}本回答被提问者采纳
第2个回答  2014-06-07
#include<stdio.h>
#include<math.h>
int main(){
int n,i,j;
int b[a];
int sum = 0;
int a1,a2,a3,a4,a5,a6;
int c1,c2,c3,c4,c5,c6;
for(i=0;i<=100;i++){ //这里最好换成while循环
while(scanf("%d\n",&n)&&(n!=0))
{
for(j=1;j<=n;j++){
scanf("%d ",&b[j]);
a1 = b[j] % 100;
c1 = b[j] - 100*a1;
a2 = c1 % 50;
c2 = c1 - 50*a2;
a3 = c2 % 10;
c3 = c2 - 10*a3;
a4 = c3 % 5;
c4 = c3 - 5*a4;
a5 = c4 % 2;
c5 = c4 - 2*a5;
a6 = c5 % 1;
}
sum +=a1+a2+a3+a4+a5+a6 ; //求的是总张数

}
printf("%d\n",sum);
return 0;
}

看出来了这一个错误,别的地方不敢保证,你再试试?追问

int b[a];
关于这个数组a的容积是不是未定义呢?还是直接采用指针?
如果定义a的容积,那势必导致a必须赋初值啊。

第3个回答  2014-06-05
你定义的数组int b[a];是什么情况?追问

就是数组啊,"b[ ]",我去掉了可以运行但是达不到上面题目的准则,能不能帮我改改?

追答#include<stdio.h>
#include<math.h>
int main(){
    int i,n,j,k;
    int b;
    int *p ;
    int sum = 0;
    int a1,a2,a5,a10,a50,a100;
    a1 = a2 = a5 = a10 = a50 = a100 = 0;
    int c2,c5,c10,c50,c100;
    printf("输入实例组数:");
    scanf("%d",&k);
    p = new int[k];
    for(i = 0;i<k;i++)
    {
     if(printf("输入老师人数:")&&scanf("%d",&n)&&(n!=0))
        for(j=1;j<=n;j++)
     {
            scanf("%d",&b);
            a100 = b / 100;
            c100 = b - 100*a100;
            a50 = c100 / 50;
            c50 = c100 - 50*a50;
            a10 = c50 / 10;
            c10 = c50 - 10*a10;
            a5 = c10 / 5;
            c5 = c10 - 5*a5;
            a2 = c5 / 2;
            a1 = c5 - 2*a2;
            sum += a1+a2+a5+a10+a50+a100 ;
        }
        p[i] = sum;
        sum = 0;
    }
    for(i = 0;i < k;i++)
    {
        printf("%d\t",p[i]);
    }
    return 0;
}

第4个回答  2014-06-05
a1 = b[j] / 100;

a2 = c1 /50;

......

一道c语言编程题求大神解答,找一下我错在哪了,谢谢了?
错误1:宏定义最后没有分号,将#define D 500;改为#define D 500 错误2:l不是整数,因此将l定义为int型就错了 错误3:既然规定输入格式为P=,那么输入时就不能直接输入数值,而应在数值之前输入P=,例如输入P=6000 另外,程序的不妥之处:1、利润不一定是整数,因此将P定义为int型不妥 2、i...

C语言编程,求大神帮忙看看哪里错了 int main() { int a=1;b=2;c;
int main(){ int a=1,b=2,c;if (a<b)c=b;if (b

C语言开关灯问题,麻烦大神们帮我看看这个程序哪里错了啊,结果不对...
两个错误:1、int a[6000]={1};这句。你这只是将a[0]赋值1,其他都是0,数组默认以0填充,应该改为:int a[6000];for(i=0;i<6000;i++)a[i]=1;2、第二层循环里:if(a[j]==0)a[j]=1;if(a[j]==1)a[j]=0;这个语句把所有的灯都关闭了,因为如果关了,就打开;打开后又...

刚学c语言,请大神看一下,哪里错了
你好,代码没有错,只是你在输入重力时,输入的格式没有按要求来输入重力g,正确的输入g应该是这样的,请看下图。希望能帮到你。

一个c语言二分查找的问题 麻烦大神看看我的程序哪里有错误 帮我改正
include<stdio.h>#include <stdlib.h>void find(int a[],int num,int value){ int start=0; int end=num-1; int mid=(start+end)\/2; while ((start<end)&&(a[mid]!=value)) { if (a[mid]>value) { end=mid-1; } else if (a[mid]<value) ...

C语言程序,求字符串长度。请大家帮我看看哪错了,在线等→_→
include <stdio.h>int main(void){ int f(char * n); char n[100]; int length; printf("请输入字符串:"); gets(n); length = f(n); printf("字符串长度为:%d\\n",length); return 0;}int f(char * n){ int i,j = 0; for(i = 0;*(n ...

C语言菜鸟跪求大神告知这个程序哪里错了。。。T^T
scanf("%1f,%1f,%1f",&a,&b,&c);这句有问题,应该改为%lf,而不是1f,lf代表输入双精度浮点型数据,如果是1f,就只会取输入的数字的第一位;希望我的答案对你有帮助!

哪位大神帮我看一下这个程序哪里错了? C语言问题,输入一个整数,输出...
} \/\/上面的程序不能实现你的功能。printf("0=%d\\n1=%d\\n2=%d\\n3=%d\\n4=%d\\n5=%d\\n6=%d\\n7=%d\\n8=%d\\n9=%d\\n",a,b,c,d,e,f,g,h,i,j);} 我写了一个,你看一下:include <stdio.h> include <string.h> int main(){ int data[10], i;for(i=0;i < 10;i++)data...

求大神帮看一下这个C语言程序哪错了,谢谢! 错误提示是expected expressio...
double calculate_charges(double);void main(){ int i,d,a;double b,c,m;c=0;d=0;float num[4];m=num[a];for(i = 1;i<=3;i++){ printf("Please enter your parking hour: ");scanf("%d",&num[a]);printf("Car%d ",i);c = c + calculate_charges(b);d=d+num[a]...

c语言 请问这个程序哪里出错了?求大神解释
p1=&a p1是指针里面放的是地址 p1是指针指向地址的值 你可以在之后改变a的值的时候用 *p1=某个数值

相似回答