作者:叮当喵编程
简介:一只正在打怪升级的路上的小喵,欢迎大家一起探讨。
目录
1.将一个二维数组行和列元素互换,存到另一个二维数组中。
样例输入: A = [ 1 2 3 4 5 6 ] A=\begin{bmatrix} 1& 2 & 3\\ 4 &5 & 6 \end{bmatrix} A=[142536]
样例输出: B = [ 1 4 2 5 3 6 ] B=\begin{bmatrix} 1& 4\\ 2&5 \\ 3 & 6 \end{bmatrix} B= 123456
#include<stdio.h>
int main(){
int A[2][3]={{1,2,3},{4,5,6}};
int B[3][2];
int i,j;
for(i=0;i<2;i++){
for(j=0;j<3;j++){
B[j][i]=A[i][j];
}
}
printf("A:\n");
for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("%d ",A[i][j]);
}
printf("\n");
}
printf("\nB:\n");
for(i=0;i<3;i++){
for(j=0;j<2;j++){
printf("%d ",B[i][j]);
}
printf("\n");
}
return 0;
}
2.求一个矩阵的最大值以及最大值的下标。
有一个3x4的矩阵,求他的最大值以及对应的横纵坐标。
样例输入: [ 2 1 5 6 − 3 6 − 9 8 11 7 4 − 2 ] \begin{bmatrix} 2 &1 &5 &6 \\ -3& 6 &-9 & 8\\ 11 &7 & 4 & -2 \end{bmatrix} 2−3111675−9468−2
样例输出:11 2 0
#include<stdio.h>
int main(){
int A[3][4]={{2,1,5,6},{-3,6,-9,8},{11,7,4,-2}};
int i,j;
printf("A:\n");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%2d ",A[i][j]);
}
printf("\n");
}
int max=A[0][0],index_i,index_j;
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(A[i][j]>max){
max=A[i][j];
index_i=i;
index_j=j;
}
}
}
printf("最大值为A[%d][%d]=%d,",index_i,index_j,max);
return 0;
}
3.统计单词个数
输入一行字符串,统计其中单词的个数(单词之间空格隔开)
样例输入:I am a boy.
样例输出:4
#include<stdio.h>
#include<string.h>
int main(){
char str[100];
gets(str);
int i,flag=0,count=0;
for(i=0;i<strlen(str)&&str[i]!='\0';i++){
if(str[i]==' '){
flag=0;
}else if(flag==0){
flag=1;
count++;
}
}
printf("%d",count);
return 0;
}
4.比较字符串的大小
有三个字符串,比较他们的大小并输出最大值。
样例输入:
Holland
China
America
样例输出:
Holland
#include<stdio.h>
#include<string.h>
int main(){
char str[3][100];
char temp[100];
int i;
for(i=0;i<3;i++){
gets(str[i]);
}
if(strcmp(str[0],str[1])>0){
strcpy(temp,str[0]);
}else{
strcpy(temp,str[1]);
}
if(strcmp(str[2],temp)>0){
strcpy(temp,str[2]);
}
printf("%s",temp);
return 0;
}
5.求矩阵对角线之和
求出3x3矩阵的对角元素之和。
#include<stdio.h>
#include<string.h>
int main(){
int a[3][3]={{2,1,3},{5,3,4},{8,6,9}};
int i,j,sum=0;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i==j){
sum+=a[i][j];
}
}
}
printf("%d",sum);
return 0;
}
6.有序数组插入元素
给定一个有序数组1 3 5 7 9 11 13 17,插入一个元素保证原来的有序性。
样例输入:2
样例输出:1 2 3 5 7 9 11 13 17
#include<stdio.h>
int main(){
int a[9]={1,3,5,7,9,11,13,17};
int i,index=0;
int num;
scanf("%d",&num);
for(i=0;i<9;i++){
if(a[i]>num){
index=i;//找到第一个大于num的下标
for(i=8;i>index;i--){
a[i]=a[i-1];
}
a[index]=num;
break;
}
if(i==8){//边界讨论
a[8]=num;
}
}
for(i=0;i<9;i++){
printf("%d ",a[i]);
}
return 0;
}
7.将数组逆序
将一个数组中的元素全部逆序存放(在原数组中进行)
样例输入:3 1 5 4 2
样例输出:2 4 5 1 3
#include<stdio.h>
int main(){
int a[9]={1,3,5,7,9,11,13,17,22};
int i,temp=0;
for(i=0;i<9/2;i++){//原地逆序
temp=a[i];
a[i]=a[8-i];
a[8-i]=temp;
}
for(i=0;i<9;i++){
printf("%d ",a[i]);
}
return 0;
}
8.杨辉三角
输出前12行杨辉三角
#include<stdio.h>
int main(){
int a[12][12];
int i,j;
for(i=0;i<12;i++){
for(j=0;j<=i;j++){
if(i==j||j==0){
a[i][j]=1;
}
else{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
printf("%-3d ",a[i][j]);
}
printf("\n");
}
return 0;
}
9.魔方阵
魔方阵:每一行、每一列、各个对角线的元素之和全相等。
例如:三阶魔方阵为
[ 8 1 6 3 5 7 4 9 2 ] \begin{bmatrix} 8 &1 &6 \\ 3& 5 & 7\\ 4& 9& 2 \end{bmatrix} 834159672
要求输出1~n²的n阶魔方阵
#include <stdio.h>
#define N 3
int main() {
int i,j;
int a[N][N] = {0};
int count = 1;
int index_i = 0, index_j = N / 2;
while (count <= N*N) {
a[index_i][index_j] = count;
int i = index_i;
int j = index_j;
if (i == 0) {
i = N - 1;
} else {
i = i - 1;
}
j = (j + 1) % N;
if (a[i][j]!=0||(index_i==0&&index_j==N-1)) {
i = index_i + 1;
j = index_j;
}
index_i = i;
index_j = j;
count++;
}
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%4d",a[i][j]);
}
printf("\n");
}
}
10.鞍点
找出一个二维数组的鞍点,即该位置的元素在这行是最大的,在这一列是最小的。也可能没有鞍点。
#include<stdio.h>
#define M 4
#define N 3
int main(){
int i,j,k;
int a[M][N];
for(i=0;i<M;i++){
for(j=0;j<N;j++){
scanf("%d",&a[i][j]);
}
}
// 找最大最小
int max,min;
int index_i,index_j;//记录鞍点的坐标
for(i=0;i<M;i++){//找行的最大值
max=a[i][0];//默认每一行最大
for(j=0;j<N;j++){
if(a[i][j]>max){
max=a[i][j];//找到最大值所在行
index_j=j;//记录该位置j
}
}
min=a[0][index_j];//令j列的第一个为最小
for(k=0;k<M;k++){
if(a[k][index_j]<min){
min=a[k][index_j];
index_i=k;
}
}
if(max==min){
printf("鞍点:(%d,%d),值:%d",index_i,index_j,a[index_i][index_j]);
break;
}
}
if(min!=max){
printf("没有鞍点。") ;
}
return 0;
}
总结:勤能补拙,多加练习。通过大量的练习相信你能对C语言的知识和练习题易如反掌。
叮当喵的【C语言期末编程题】往期相关文章
编号 | 文章 |
---|---|
1 | C语言期末考试经典编程题Days-1(持续更新中…) |
2 | C语言期末考试经典编程题Days-2(持续更新中…) |
希望大家喜欢我的文章!!!
需要pdf版本>>>戳我<<<
标签:...,index,int,样例,Days,C语言,str,printf,include From: https://blog.csdn.net/m0_69935272/article/details/139201737