C语言题目 帮下

程序题
1.从键盘上输入一个百分制成绩score,按下列原则输出其等级grade:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。(用Switch语句实现)
2.整元换零钱:把1元钱兑换成1分、2分、5分的硬币,输出每一种兑换方法和共有几种不同的换法n。(设5分、2分、1分硬币的个数分别为i,j,k)
3.求数组a 中10个元素的最大值max和最小值min。
4.由键盘任意输入两个整数,求这两个整数的最小公倍数。要求:在fun1函数中返回最小公倍数,在fun2函数中返回最大公约数。

第一题:
#include <stdio.h>
void main()
{
int x;
printf("请输入成绩score: \n");
scanf("%d",&x);
switch(x/10)
{
case 6:printf("等级为:D\n");break;
case 7:printf("等级为:C\n");break;
case 8:printf("等级为:B\n");break;
case 9:
case 10:printf("等级为:A\n");break;
default :printf("等级为:E\n");
}
}

第二题:
#include <stdio.h>
void main()
{
int i,j,k,m=0;
for(i=0;i<=20;i++)
{
for(j=0;j<=50;j++)
{
for(k=0;k<=100;k++)
{
if(5*i+2*j+k==100)
printf("5分=%d个,2分=%d个,1分=%d个\n",i,j,k);
m++;
}
}
}
printf("一共有:%d种\n",m);
}

第三题:
#include<stdio.h>
void main()
{
int a[10],i,j,k;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]<a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
printf("max=%d\nmin=%d\n",a[0],a[9]);
}

第四题:
#include<stdio.h>
int fun1(int m,int n)
{
int a,b,r;
a=m;
b=n;
if(m<n)
{r=m;m=n;n=r;}
r=m%n;
while(r!=0)
{m=n;n=r;r=m%n;}
return n;
}
int fun2(int m,int n)
{
int a,b,r;
a=m;
b=n;
if(m<n)
{r=m;m=n;n=r;}
r=m%n;
while(r!=0)
return (a*b)/n;
}
void main()
{
int a,b,c,d;
printf("请输入两个数:\n");
scanf("%d,%d",&a,&b);
c=fun1(a,b);
d=fun2(a,b);
printf("最小公倍数是:%d\n最大公约数是:%d\n",c,d);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-12
#include <stdio.h>
int main()
{
int flag;
int score;
printf("请输入成绩:\n");
while((flag=scanf("%d",&score)) != 1 || score >100 ||score <0)
{
if(flag != 1)
scanf("%*s");
printf("输入错误重新输入<0---100>");
}
switch(score/10)
{
case 9:printf("等级A");
break;
case 8:printf("等级B");
break;
case 7:printf("等级c");
break;
case 6;printf("等级D");
break;
default:printf("等级E");
}
printf("完成");
return 0;
}

#include <stdio.h>
#include <iostream>
#define money 100//1元是100分
#define O_feng 1
#define T_feng 2
#define F_feng 5
int main()
{
int i,j,k;
printf("兑换方法如下:\n");
for(i=0;i<=money/F_feng;i++)
{
for(j=0;j<=money/T_feng;j++)
{
for(k=0;k<=money/O_feng;k++)
if(i*F_feng+j*T_feng+k*O_feng==money)
{
printf("5分的%10d个2分的%10d个1分的%10d个",i,j,k);
}
}
}
system("pause");
return 0;
}

#define Maxsize 10
#include <stdio.h>
int max(int a[],int n)
{
int i,big=a[0];
for(i=1 ; i<n ;i++ )
if(a[i]>big)
big=a[i];
return big;
}
int main()
{
int index;
int a[Maxsize];
printf("对数组输入数字:\n");
for(index=0 ; index < Maxsize; index++)
scanf("%d",&a[index]);
printf("最大的数是%d",max(a,Maxsize));
}

/*貌似只对正数讨论这东西*/
#include <stdio.h>
int goyushu(unsigned x,unsigned y)
{
int index;
int flag=x>=y?y:x;
for(index=flag;index>=1;index--)
if(x%index==0&&y%index==0)
break;
return index;
}
unsigned gobeishu(unsigned x,unsigned y)
{
unsigned index;
unsigned flag=x>=y?x:y;
for(index=flag;index<=x*y;index++)
if(index%x==0&&index%y==0)
break;
return index;
}
int main()
{
unsigned first_number,second_number;
printf("输入两数");
scanf("%u%u",&first_number,&second_number);
printf("最大公约数是%d",goyushu(first_number,second_number));
printf("最小公倍数是%d",gobeishu(first_number,second_number));
system("pause");
return 0;
}
按顺序答案
第2个回答  2009-11-12
1.可以循环输入,想停止则输入-1回车。代码如下
#include "iostream"
using namespace std;

void main()
{
int score,g;
cout<<"请输入成绩,输入-1结束程序"<<endl;
cin>>score;
g = score/10;
while(score != -1)
{
switch(g)
{
case 9 : cout<<"A"<<endl;break;
case 8 : cout<<"B"<<endl;break;
case 7 : cout<<"C"<<endl;break;
case 6 : cout<<"D"<<endl;break;
default : cout<<"E"<<endl;break;
}
cin>>score;
g = score/10;
}

}
2.
#include "iostream"
using namespace std;
void main()
{
int i,j,k;
int num=0;
for(i=0;i<=20;i++)
for(j=0;j<=50;j++)
for(k=0;k<=100;k++)
if(i*5+j*2+k==100)
{
cout<<i<<"个5分"<<j<<"个2分"<<k<<"个1分"<<endl;
num++;
}
cout<<"有"<<num<<"种换法"<<endl;
}

3.如果要改成手动输入数据也可以。只需要把那注释掉的三行提出来。
#include "iostream"
using namespace std;

void main()
{
int a[10] = {6,10,12,41,1,13,18,32,67,14};
int max,min;
max = min = a[0];
// cout<<"请依次输入每个数组元素"<<endl;
// for(int i = 0 ; i < 10 ; i++)
// cin>>a[i];
for(int i = 0 ; i < 10 ; i ++)
{
if(a[i] > max)
max = a[i];
if(a[i] < min)
min = a[i];
}
cout<<"最大数和最小数分别是:"<<max<<" "<<min<<endl;
}
4.
#include "iostream"
using namespace std;

int fun1(int a , int b)
{
int t;
int x = a , y = b;
if(x < y)
t = x , x = y , y = t;
t = x ;
while( (x%y) != 0 )
{
x += t;
}
return x;
}

int fun2(int a , int b)
{
int t;
int x = a , y = b;
if(x > y)
t = x , x = y , y = t;
t = x;
while( ((x%t)!=0)||((y%t)!=0) )
--t;
return t;
}

void main()
{
int a,b;
cout<<"输入两个数:"<<endl;
cin>>a>>b;
cout<<"最大公约数为:"<<fun2(a,b)<<endl;
cout<<"最小公倍数为:"<<fun1(a,b)<<endl;
}
第3个回答  2009-11-12
1.
#include<stdio.h>
void main()
{
int score;
char grade;
printf("please input score:");
scanf("%d",&score);
switch(score/10)
{
case 9:
grade='A';
break;
case 8:
grade='B';
break;
case 7:
grade='C';
break;
case 6:
grade='D';
break;
default:
grade='E';
break;
}
printf("%d is %c\n",score,grade);
}

2.
#include<stdio.h>
void main()
{
int i,j,k;
int n=0;
for(i=0;i<=20;i++)
for(j=0;j<=50;j++)
for(k=0;k<=100;k++)
if(i*5+j*2+k==100)
n++;
printf("有%d种换法.\n",n);
}

3.
#include<stdio.h>
void main()
{
int a[10];
int i,j,temp;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
printf("max=%d,min=%d\n",a[0],a[9]);
}

4.
#include<stdio.h>
int fun1(int num1,int num2)
{
int min,max,i,tmp;
if(num1<num2)
{min=num1;max=num2;}
else
{max=num1;min=num2;}
for(i=max;i<=min*max;i++)
if((i%num1==0)&&(i%num2==0))
{
tmp=i;
break;
}
return tmp;

}
int fun2(int num1,int num2)
{
int min,max,i,tmp;
if(num1<num2)
{
min=num1;max=num2;
}
else
{
max=num1;min=num2;
}
for(i=min;i>0;i--)
if((num1%i==0)&&(num2%i==0))
{
tmp=i;
break;
}
return tmp;

}
void main()
{
int num1,num2;
int b,y;
printf("请输入两个数:\n");
scanf("%d%d",&num1,&num2);
b=fun1(num1,num2);
y=fun2(num1,num2);
printf("最小公倍数是:%d,最大公约数是:%d\n",b,y);

}
第4个回答  2009-11-12
课本的题目啊,哈哈,你行啊,我告诉老师去,哈哈