串结构练习——字符串连接
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
给定两个字符串string1和string2,将字符串string2连接在string1的后面,并将连接后的字符串输出。
连接后字符串长度不超过110。
Input
输入包含多组数据,每组测试数据包含两行,第一行代表string1,第二行代表string2。
Output
对于每组输入数据,对应输出连接后的字符串,每组输出占一行。
Sample Input
123 654 abs sfg
Sample Output
123654 abssfg
#include<stdio.h> #include<string.h> int main(void) { char str1[1100], str2[1100]; while(~scanf("%s %s", str1, str2)) { puts(strcat(str1, str2)); } return 0; }
数据结构实验之数组三:快速转置
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
转置运算是一种最简单的矩阵运算,对于一个m*n的矩阵M( 1 = < m < = 10000,1 = < n < = 10000 ),它的转置矩阵T是一个n*m的矩阵,且T( i , j )=M( j , i )。显然,一个稀疏矩阵的转置仍然是稀疏矩阵。你的任务是对给定一个m*n的稀疏矩阵( m , n < = 10000 ),求该矩阵的转置矩阵并输出。矩阵M和转置后的矩阵T如下图示例所示。
稀疏矩阵M 稀疏矩阵T
Input
连续输入多组数据,每组数据的第一行是三个整数mu, nu, tu(tu <= 50),分别表示稀疏矩阵的行数、列数和矩阵中非零元素的个数,随后tu行输入稀疏矩阵的非零元素所在的行、列值和非零元素的值,同一行数据之间用空格间隔。(矩阵以行序为主序)
Output
输出转置后的稀疏矩阵的三元组顺序表表示。
Sample Input
3 5 5
1 2 14
1 5 -5
2 2 -7
3 1 36
3 4 28
Sample Output
1 3 36
2 1 14
2 2 -7
4 3 28
5 1 -5
#include <stdio.h> int a[51] , b[51] , c[51]; int main() { int mu , tu , nu , i , j , t; while(~scanf("%d %d %d" , &mu , &nu , &tu)) { for (i = 0 ; i < tu ; i++) { scanf("%d %d %d" , &a[i] , &b[i] , &c[i]); } for (i = 0 ; i < tu ; i++) { for (j = 0 ; j < tu - i - 1 ; j++) { if (b[j] > b[j+1] ) { t = a[j] , a[j] = a[j+1] , a[j+1] = t; t = b[j] , b[j] = b[j+1] , b[j+1] = t; t = c[j] , c[j] = c[j+1] , c[j+1] = t; } else if (b[j] == b[j+1]) { t = a[j] , a[j] = a[j+1] , a[j+1] = t; t = b[j] , b[j] = b[j+1] , b[j+1] = t; t = c[j] , c[j] = c[j+1] , c[j+1] = t; } } } for (i = 0 ; i < tu ; i++) { printf("%d %d %d\n" , b[i] , a[i] , c[i]); } } return 0; }