本人能力有限,发出只为帮助有需要的人。
建议同学们自己写完后再进行讨论。
1字符串替换(10分)
题目内容:编写程序,将字符串中的所有大写英文字母按以下对应规则替换,其余类型的字符不替换:
原字母: ABCD……XYZ
替换后字母:ZYXW……CBA
输入:在一行中输入一个不超过99个字符、并以回车结束的字符串。
输出:在一行中输出替换完成后的字符串。
样例1:输入:ABCD 输出:ZYXW
样例2:输入:AbCDefG, Hijklmn OPq …XYZ 输出:ZbXWefT, Sijklmn LKq …CBA
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[100];
int i,t;
gets(a);
for(i=0;i<strlen(a);i++)
{
if(a[i]>='A'&&a[i]<='Z')
{
t=a[i]-'A';//此处运用了字符型的本质就是ascii码
printf("%c",'Z'-t);//所以直接用ascii码相加减即可得到结果
}
else
printf("%c",a[i]);//可以将输出放入另一个数组
}
return 0;
}
2求n名学生各自的总成绩(10分)
题目内容:定义一个学生结构体,包括学生姓名、两门课成绩和总成绩。实现用户从键盘输入n名学生的所有信息(最多不超过200人),求每个学生的总成绩并输出。
输入:学生人数n(1个正整数),n名学生的姓名(1个字符串,长度不超过19个字符)和两门课程的成绩(2个正整数)
输出:每个学生的姓名、总成绩 (相邻数据用一个空格隔开,每个学生信息占用一行)
样例:
输入:
3
zhang 68 89
wang 72 56
zhao 34 78
输出:
zhang 157
wang 128
zhao 112
#include <stdio.h>
struct stu
{
char name[20];
int first,second,sum;//在结构体中多加入一个sum,方便储存成绩之和
};
int main(void)
{
int n,i;
struct stu s[300];
scanf("%d",&n);
for(i=0;i<n;i++)//其实用这种读入完就输出的形式可以直接不写结构体
{
scanf("%s %d %d",&s[i].name,&s[i].first,&s[i].second);
s[i].sum=s[i].first+s[i].second;
printf("%s %d\n",s[i].name,s[i].sum);
}
return 0;
}
3成绩排序(10分)
题目内容:定义一个学生结构体,包括学生名字、1门课程的成绩。实现用户从键盘输入n名学生的所有信息(最多不超过200人),根据成绩从高到低进行排序并输出。
输入:学生人数n(1个正整数),n名学生的姓名(1个字符串,长度不超过19个字符)和成绩(1个非负整数)
输出:每个学生的姓名、总成绩 (相邻数据用一个空格隔开,每个学生信息占用一行)
样例:
输入:
3
zhang 68
wang 72
zhao 34
输出:
wang 72
zhang 68
zhao 34
#include <stdio.h>
struct stu
{
char name[20];
int score;
};
int main(void)
{
struct stu s[200],r;
int i,n,flag=1;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s %d",&s[i].name,&s[i].score);
while(flag)//冒泡排序
{
flag=0;
for(i=0;i<n-1;i++)
if(s[i].score<s[i+1].score)//排序的标志为分量score
{
flag=1;//进行结构体的整体交换
r=s[i];//结构体可以直接赋值处理
s[i]=s[i+1];
s[i+1]=r;
}
}
for(i=0;i<n;i++)
printf("%s %d\n",s[i].name,s[i].score);
return 0;
}