字符串替换
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 | 对应字母 |
---|---|
A | Z |
B | Y |
C | X |
D | W |
… | … |
X | C |
Y | B |
Z | A |
输入:一串字符串。
输出:字符串中的大写英文字母按对应规则替换后的结果。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<string.h>
#define maxsize 10000
int main(){
char s[maxsize];
gets(s);
int i;
int len=strlen(s);
for(i=0;i<len;i++){
if(s[i]>='A'&&s[i]<='Z'){
s[i]='A'+'Z'-s[i];
}
}
puts(s);
}
字符串排序
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
输入:五串字符串。
输出:按由小到大的顺序输出。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<string.h>
int main(){
char s[5][80],t[80];
int i,j;
for(i=0;i<5;i++){
scanf("%s",&s[i]);
}
for(i=0;i<4;i++){
for(j=0;j<4-i;j++){
if(strcmp(s[j],s[j+1])>0){//比较大小
strcpy(t,s[j]);//交换顺序
strcpy(s[j],s[j+1]);
strcpy(s[j+1],t);
}
}
}
printf("After sorted:\n");
for(i=0;i<5;i++){
printf("%s\n",s[i]);
}
return 0;
}
通讯录排序
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
输入:n个朋友的信息,包括姓名name、生日birth、电话号码number。
输出:年龄从大到小的顺序依次输出通讯录。
优化目标:可能没有优化目标。
#include<stdio.h>
struct student {
char name[10];
int birth;
char number[20];
}stu[10],stu1;//stu1交换信息
int main(){
int i,j,num;
scanf("%d",&num);
for(i=0;i<num;i++){
scanf("%s %d %s",& stu[i].name, &stu[i].birth, &stu[i].number);
}
for (i=0; i<num-1;i++){
for (j=0;j<num-i-1;j++){
if (stu[j].birth>stu[j+1].birth){
stu1 = stu[j];
stu[j] = stu[j+1];
stu[j+1] = stu1;
}
}
for (i=0;i<num;i++){
printf("%s %d %s\n", stu[i].name, stu[i].birth, stu[i].number);
}
return 0;
}
}
找鞍点
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
输入:方阵为n阶方阵,输入给定的n阶方阵
输出:求一个给定的n阶方阵的鞍点。
优化目标:可能没有优化目标。
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int s[n][n];
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&s[i][j]);
}
}
int t=0;//判断程序内有无符合要求的输出
int r=0,l=0;
int flag=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(s[i][j]>=s[i][l]){
l=j;
flag=1;
}
}
for(r=0;r<n;r++){
if(s[r][l]<s[i][l]){
flag=0;
break;
}
}
if(flag){
printf("%d %d",i,l);
t=1;//表示有输出
}
}
if(t==0){
printf("NONE");
}
}
水仙花数
输入:无
输出:三位的水仙花数。
优化目标:可能没有优化目标。
#include<stdio.h>
#define maxsize 1000
int main(){
int N;
int i;
int num;
int count=0;
int a,b,c ;//用来记录个十百位的数字
for(i=100;i<1000;i++){
a=i/100;
c=i%10;
b=(i-a*100)/10;
num=(a*a*a)+(b*b*b)+(c*c*c);
if(num==i){
printf("%d ",num);
}
}
}
单链表排序
输入:表长count,表中各元素的值。
输出:表内的值按由小至大输出。
优化目标:可能没有优化目标
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode *linklist;
struct LNode{
int data;
linklist next;
};
int initlist(){
linklist L=(linklist)malloc(sizeof(linklist));
L->next=NULL;
linklist L1=L;
int num=0;
int count;
int x=0;
printf("输入元素个数");
scanf("%d",&count);
while(x<count){
printf("请输入元素%d的值",x);
scanf("%d",&num);
linklist q=(linklist)malloc(sizeof(linklist));
q->data=num;
q->next=NULL;
L1->next=q;
L1=q;
x++;
}
return L;
}
int sort(linklist L){
int i,j,num;
int count =1;
linklist L1=L,L3=L->next,tail,L2;
while(L3->next!=NULL){
L3=L3->next;
count++;
}
for(i=0;i<count-1;i++){
num=count -1-i;
L2=L->next;
L1=L2->next;
for(num;num>0;num--){
if(L2->data>L1->data){
int temp=L2->data;
L2->data=L1->data;
L1->data=temp;
}
L2=L2->next;
L1=L1->next;
}
}
return L;
}
int main(){
linklist L=initlist();
linklist L1;
L1=sort(L);
L1=L1->next;
while(L1!=NULL){
printf(" %d",L1->data);
L1=L1->next;
}
}
今天学习了一部分关于PTA上c语言的经典例题复习了一些链表的内容,明天会继续学习链表和栈的一些例题。