1.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
#include <stdio.h> int main() { int a; while (scanf("%d", &a) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf("%lld") to //printf("%d\n", a + b); for(int i =0;i<a;i++) { for(int j=0;j<a;j++) { if(i==j ||(i+j)==a-1) { printf("*"); } else { printf(" "); } } printf("\n"); } } return 0; }
2.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。
输入描述:
多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。
输出描述:
针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。
#include <stdio.h> int main() { int a; while (scanf("%d", &a) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf("%lld") to //printf("%d\n", a + b); for(int i =0;i<a;i++) { for(int j=0;j<a;j++) { if(i==0||i==a-1) { printf("* "); } else if(j==0||j==a-1) { printf("* "); } else printf(" "); } printf("\n"); } } return 0; }
3.KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。
输入描述:
第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)
从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。
输出描述:
输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。
#include <stdio.h> int main() { int n ,m; scanf("%d %d",&n,&m); int arr [n][m]; for (int i= 0;i<n ;i++) { for(int j =0;j<m; j++) { scanf("%d",&arr[i][j]); } } for (int i = 0; i<m ;i++) { for(int j= 0; j<n ;j++) { printf("%d ",arr[j][i]); } //printf("%d",arr[j][i]); printf("\n"); } return 0; }
4.输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。
输入描述:
一行,输入10个整数(范围-231~231-1),用空格分隔。
输出描述:
一行,逆序输出输入的10个整数,用空格分隔。
#include <stdio.h> int main() { int arr[10]={0}; for(int i = 9; i>=0;i--) { scanf("%d",&arr[i]); } for(int j= 0;j<10;j++) { printf("%d ",arr[j]); } return 0; }
5.输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
数据范围: 1≤𝑛,𝑚≤1000 1≤n,m≤1000 , 序列中的值满足 0≤𝑣𝑎𝑙≤30000 0≤val≤30000
输入描述:
输入包含三行,
第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数,用空格分隔。
第三行包含m个整数,用空格分隔。
输出描述:
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
#include <stdio.h> int main() { int n, m; int arr1[1000] = {0}; int arr2[1000] = {0}; scanf("%d %d", &n, &m); int i, j; for (i = 0; i < n; i++) { scanf("%d ", &arr1[i]); } for (j = 0; j < m; j++) { scanf("%d", &arr2[j]); } i=0; j=0; while (i < n && j < m) { if (arr1[i] < arr2[j]) { printf("%d ", arr1[i]); i++; } else { printf("%d ", arr2[j]); j++; } } while (i < n) { printf("%d ", arr1[i]); i++; } while (j < m) { printf("%d ", arr2[j]); j++; } return 0; }