R7-1 简单求阶乘问题 (8 分)
#include<stdio.h>
double ff(double n);
int main(void)
{
int i,n;
scanf("%d",&n);
double fff=ff(n);
printf("%.0lf\n",fff);
return 0;
}
double ff(double n)
{
double f;
if(n==1) f=1;
else f=ff(n-1)*n;
return f;
}
R7-2 求n以内最大的k个素数以及它们的和 (8 分)
#include <stdio.h>
#include <math.h>
#define N 10
int isPrime(int p);
int main(){
int n, k, i, count, sum=0;
int maxPrimes[N];
scanf("%d%d", &n, &k);
i = n;
count = 0;
while(i>0){
if(count<k){
if(isPrime(i)){
maxPrimes[count] = i;
sum += i;
count++;
}
}
else{
break;
}
i--;
}
for(i=0; i<count-1; i++){
printf("%d+", maxPrimes[i]);
}
printf("%d=%d", maxPrimes[count-1], sum);
return 0;
}
int isPrime(int p){
int isPrime=1;
int i;
if(p<2){
isPrime = 0;
}
else{
for(i=2; i<=(int)sqrt(p); i++){
/*若p为合数,则必有不大于sqrt(p)的因子*/
if(p%i == 0){
isPrime = 0;
break;
}
}
}
return isPrime;
}
R7-3 学分统计 (8 分)
#include<stdio.h>
struct student{
char ID[1000];
char name[1000];
int score;
char grade;
}S[100];
int main(void){
int n;
int cnt=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s %s %d",&S[i].ID,&S[i].name,&S[i].score);
if(S[i].score>=85){
S[i].grade='A';
}else if(S[i].score>=70){
S[i].grade='B';
}else if(S[i].score>=60){
S[i].grade='C';
}else{
S[i].grade='D';
cnt++;
}
}
for(int i=0;i<n;i++){
printf("%s %s %c\n",S[i].ID,S[i].name,S[i].grade);
}
printf("%d",cnt);
}
R7-4 输出平均分最高的学生信息 (8 分)
#include<stdio.h>
int main()
{
struct student
{
int num;
char name[10];
int a;
int b;
int c;
float aver;
}stu[10];
int n;
scanf("%d",&n);
int i;
for(i=0;i<n;i++)
{
scanf("%d %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
stu[i].aver=(stu[i].a+stu[i].b+stu[i].c)/3.0; //注意要3.0 3不对
}
float min=stu[0].aver,max=stu[0].aver;
for(i=0;i<n;i++)
{
if(stu[i].aver>max)
{
max=stu[i].aver;
}
}
for(i=0;i<n;i++)
{
if(stu[i].aver==max)
{
printf("num:%d,name:%s,average:%.2f",stu[i].num,stu[i].name,stu[i].aver);
break;//如果平均分最高的学生有多个,按输入顺序输出第一个学生的信息,注意只输出一个信息
}
}
return 0;
}
R7-5 求矩阵每行元素的和 (8 分)
#include<stdio.h>
int main(){
int m,n;
int a[7][7];
scanf("%d %d",&m,&n);
for(int i=0;i<m;i++){
int ans=0;
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
ans+=a[i][j];
}
printf("%d\n",ans);
}
return 0;
}