7-1 猜数字 (20 分)
一群人坐在一起,每人猜一个 100 以内的数,谁的数字最接近大家平均数的一半就赢。本题就要求你找出其中的赢家。
输入格式:
输入在第一行给出一个正整数N(≤10
4
)。随后 N 行,每行给出一个玩家的名字(由不超过8个英文字母组成的字符串)和其猜的正整数(≤ 100)。
输出格式:
在一行中顺序输出:大家平均数的一半(只输出整数部分)、赢家的名字,其间以空格分隔。题目保证赢家是唯一的。
输入样例:
7
Bob 35
Amy 28
James 98
Alice 11
Jack 45
Smith 33
Chris 62
输出样例:
22 Amy
#include
#include
struct student
{
int x;
char name[100];
};
struct student stu[10000];
int main(void)
{
int n,i,sum=0,k=0;
float ave1,a[10000];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s %d",&stu[i].name,&stu[i].x);
for(i=0;i<n;i++)
sum+=stu[i].x;
ave1=sum/(float)n*0.5;
for(i=0;i<n;i++)
a[i]=fabs((stu[i].x-ave1));
for(i=0;i<n;i++)
{
if(a[k]>a[i])
k=i;
}
printf("%.0f %s",ave1,stu[k].name);
}
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
#include
#include
int main(void)
{
char a[80],b[80]={'\0'};
gets(a);
b[0]=a[0];
int i,j,n,k=1;
int min;
char t;
n=strlen(a);
for(i=0;i<n;i++)
{
for(j=0;j<k;j++)
if(a[i]==b[j]) break;
if(j==k)
{
b[k]=a[i];
k++;
}
}
for(i=0;i<k;i++)
{
min=i;
for(j=i+1;j<k;j++)
if(b[min]>b[j])
min=j;
if(min==i) continue;
else
{
t=b[i];
b[i]=b[min];
b[min]=t;
}
}
printf("%s",b);
}
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, …, aaz, aba, abb, …, abz, …, zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。
输入格式:
输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤10
5
)。
输出格式:
在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。
输入样例:
3 7417
输出样例:
pat
#include
#include
#include
int main(void)
{
int L,N;
scanf("%d %d",&L,&N);
char z='z';
int s[6],i,c;
c=pow(26,L);
N=N%c;
s[0]=N%26;
s[1]=N/26%26;
s[2]=N/26/26%26;
s[3]=N/26/26/26%26;
s[4]=N/26/26/26/26%26;
s[5]=N/26/26/26/26/26%26;
printf("%c",z-s[L-1]);
for(i=1;i<L-1;i++)
printf("%c",z-s[i]);
printf("%c",z-s[0]+1);
}
7-4 字符串循环左移 (20 分)
输入一个字符串和一个非负整数N,要求将字符串循环左移N次。
输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
输出格式:
在一行中输出循环左移N次后的字符串。
输入样例:
Hello World!
2
输出样例:
llo World!He
7-5 打印杨辉三角 (25 分)
本题要求按照规定格式打印前N行杨辉三角。
输入格式:
输入在一行中给出N(1≤N≤10)。
输出格式:
以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。
输入样例:
6
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
#include
int main(void)
{
int i,j,n,a[10]={1};
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=i;j>0;j--)
a[j]=a[j]+a[j-1];
for(j=0;j<n-i-1;j++)
printf(" ");
for(j=0;j<=i;j++)
printf("%4d",a[j]);
printf("\n");
}
}