C语言/C++常见习题问答集锦(三十五)之意犹未尽
程序之美
1、c语言编程题: 输入n个学生的姓名和百分制成绩,分段统计学生的成绩。
输入格式:
输入在第一行中给出正整数N(1≤n≤100)。随后N行,每行给出一位学生的姓名和成绩,中间以空格分隔。
输出格式:
在一行中顺序输出成绩为80-100分、60-79分、0-59分的学生人数,中间以空格分隔。
输入样例:
5
huanglan 83
wanghai 76
shenqiang 50
zhangfeng 95
zhangmeng 60
输出样例:
2 2 1
C语言版本:
#include<stdio.h>
#define MAXN 100
struct student
{
char name[20];
int score;
};
void cnt_score( struct student *p, int n );
int main()
{
int i, n;
struct student stu[MAXN];
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%s %d", stu[i].name, &stu[i].score);
}
cnt_score(stu, n);
return 0;
}
void cnt_score(struct student *p, int n)
{
int cnt_a = 0, cnt_p = 0, cnt_f = 0;
struct student *q=p+n-1;
while ( p <= q )
{
if ((*p).score>=80&&(*p).score<=100) cnt_a++;
else if ((*p).score>=60&&(*p).score<=79) cnt_p++;
else cnt_f++;
p++;
}
printf("%d %d %d\n", cnt_a, cnt_p, cnt_f);
}
C++版本:
#include <iostream>
using namespace std;
int main()
{
int i,n,count[6]={0,0,0,0,0,0};
cout<<"输入要统计的学生人数:"<<endl;
cin>>n;
int *score=new int[n];
cout<<"输入"<<n<<"位学生成绩:"<<endl;
for(i=0;i<n;++i)
cin>>score[i];
for(i=0;i<n;++i)
{
if(score[i]<60)
count[0]++;
else if(score[i]<=69&&score[i]>=60)
count[1]++;
else if(score[i]<=79&&score[i]>=70)
count[2]++;
else if(score[i]<=89&&score[i]>=80)
count[3]++;
else if(score[i]<=99&&score[i]>=90)
count[4]++;
else if(score[i]==100)
count[5]++;
}
cout<<"统计结果如下:"<<endl;
for(i=0;i!=6;++i)
cout<<count[i]<<" ";
cout<<endl;
delete [] score;
return 0;
}
2、编写一个程序,其中包括一个函数,该函数将比较两个相同大小的数组中的值。如果两个数组中的元素相同,则函数返回1,否则返回0。在函数中声明两个数组,每个有五个元素。通过使用该函数进行比较,并显示结果。
#include<stdio.h>
int compare(int* a, int *b){
int i,j;
for(i=0;i<5;i++){
for(j= i + 1;j<5;j++){
if (a[i] != b[j])
{
return 0;
}
}
}
return 1;
}
int main()
{
int a[5],b[5],i;
printf("输入数组a的元素:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("输入数组b的元素:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
printf("%d,%d",a[i],b[i]);
int ret = compare(a,b);
printf("两个数组中的元素%s\n", ret == 1 ? "相同":"不相同");
return 0;
}
结果为:
题目描述
找出一批圆中面积最小的圆,输出它的编号和面积。
输入
第一行一个整数n(n<100);
第二行n个以空格相隔的整数(每个数在[1,10000])。
输出
最大值和最大值的编号,它们之间以空格相隔;
样例输入 Copy
6
12 36 124 654 325 45
样例输出 Copy
12 1
未完待续…