您的位置:首页 > 其它

华中科技大学上机(部分题)

2020-04-05 07:25 106 查看

1394 统计每个单词字符
编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。 (凡是以一个或多个空格隔开的部分就为一个单词)

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int main()
{
char a[1000];
while (gets_s(a))
{
int cnt, len;
len = strlen(a);
cnt = 0;
for (int i = 0; i < len; i++)
{
if (a[i] != ' '&&a[i] != '.')
cnt++;
else
{
if (cnt != 0)
cout << cnt <<' ';
cnt = 0;
}
}
cout << endl;
}
return 0;
}

1393 矩阵转置
输入一个N*N的矩阵,将其转置后输出。要求:不得使用任何数组(就地逆置)。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>
#define N 100
using namespace std;

int main()
{
int a[N][N], n;
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> a[i][j];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << a[j][i] << ' ';
cout << endl;
}
return 0;
}

1392 杨辉三角

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>
#define N 100
using namespace std;

int main()
{
int a[N][N], n;
cin >> n;
for (int i = 0; i < n; i++)
{
a[i][i] = 1;
a[i][0] = 1;
}
for (int i = 2; i < n; i++)
for (int j = 1; j < i; j++)
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
for (int i = 1; i < n; i++)
{
for (int j = 0; j <= i; j++)
cout << a[i][j] << ' ';
cout << endl;
}
return 0;
}

1396 二叉排序数
二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树: 1. 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值; 2. 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值; 3. 左、右子树本身也是一颗二叉排序树。 现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有父亲节点,则输出-1。

#include<bits/stdc++.h>
using namespace std;
typedef struct BTNode {
int data;
struct BTNode* lchild;
struct BTNode* rchild;
}BTNode;
BTNode* insert(BTNode *&T, int d, int &f)//在插入的时候顺便记录父节点的数据
{
if(T == NULL){
T = (BTNode *)malloc(sizeof(BTNode));
T->data = d;
T->lchild = NULL;
T->rchild = NULL;
}
else if(T->data > d){
f = T->data;
T->lchild = insert(T->lchild,d,f);
}
else{
f = T->data;
T->rchild = insert(T->rchild,d,f);
}
return T;
}
int main()
{
int n, f, d;
while (cin>>n)
{
BTNode *T = NULL;
for (int i = 0; i<n; i++)
{
f = -1;
cin>>d;
T = insert(T, d, f);
cout<<f<<endl;
}
}
return 0;
}

1397 字符串连接
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。

#include <iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<cmath>
#define N 100
using namespace std;

void link(char *a, char *b)
{
while (*a != 0)
a++;
while (*b != 0)
{
*a = *b;
a++;
b++;
}
*a = '\0';
}
int main()
{
char a[100], b[100];
while (cin >> a >> b)
{
link(a, b);
cout << a << endl;
}
return 0;
}

1399 排序
对输入的n个数进行排序并输出。

#include <iostream>
#include<algorithm>
using namespace std;

int main()
{
int n, a[100];
while (cin >> n) {
for (int i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n);
for (int i = 0; i < n; i++)
cout << a[i] << ' ';
cout << endl;
}
return 0;
}

1400 特殊排序
输入一系列整数,将其中最大的数挑出(如果有多个,则挑出一个即可),并将剩下的数进行排序,如果无剩余的数,则输出-1。

#include <iostream>
#include<algorithm>
using namespace std;

int main()
{
int a[100], n, max = -1;
while (cin >> n) {
for (int i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n);
max = a[n - 1];
if (n == 1) {
cout << max << endl;
cout << "-1" << endl;
}
else
{
cout << max << endl;
for (int j = 0; j < n; j++)
if (a[j] != max)
cout << a[j] << ' ';
cout<<endl;
}
}
return 0;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
一只很菜但是好学的猪 发布了38 篇原创文章 · 获赞 1 · 访问量 1551 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: