首页 > 编程语言 >C语言期末考试经典编程题Days-3(持续更新中...)

C语言期末考试经典编程题Days-3(持续更新中...)

时间:2024-05-25 20:06:39浏览次数:25  
标签:... index int 样例 Days C语言 str printf include

作者:叮当喵编程
简介:一只正在打怪升级的路上的小喵,欢迎大家一起探讨。

加班

目录


1.将一个二维数组行和列元素互换,存到另一个二维数组中。

样例输入: A = [ 1 2 3 4 5 6 ] A=\begin{bmatrix} 1& 2 & 3\\ 4 &5 & 6 \end{bmatrix} A=[14​25​36​]

样例输出: B = [ 1 4 2 5 3 6 ] B=\begin{bmatrix} 1& 4\\ 2&5 \\ 3 & 6 \end{bmatrix} B= ​123​456​

#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−311​167​5−94​68−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} ​834​159​672​
要求输出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语言期末编程题】往期相关文章

编号文章
1C语言期末考试经典编程题Days-1(持续更新中…)
2C语言期末考试经典编程题Days-2(持续更新中…)

希望大家喜欢我的文章!!!
需要pdf版本>>>戳我<<<

标签:...,index,int,样例,Days,C语言,str,printf,include
From: https://blog.csdn.net/m0_69935272/article/details/139201737

相关文章

  • C语言期末考试经典编程题Days-2(持续更新中...)
    目录1.统计各类字符数量2.水仙花数3.完数 4.找规律数列求和5. 自由落体6.猴子吃桃7.输出菱形8.九九乘法表1.统计各类字符数量题目:输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。格式:输入一行字符。输出统计每种字符的个数值。......
  • 《拯救大学生课设不挂科第二期之Windows11下安装VC6.0(VC++6.0)与跑通Hello World C语言
    背景与目标人群:大学第一次学C语言的时候,大部分老师会选择VC6这个编辑器。但由于很多人是新手,第一次上大学学C语言。老师要求VC6.0(VC++6.0)写C语言跑程序可能很多人还是第一次接触电脑。需要安装VC6这个编辑器并且编译C语言程序,但是不怎么会装。博主结合自己当时学习与现在......
  • c语言字符串转int型
    c语言字符串转int型在C语言中,将字符串转换为int类型通常使用标准库函数atoi()(ASCIItointeger)或strtol()(stringtolong)。然而,需要注意的是这些函数不检查溢出,并且在转换无效字符串(如包含非数字字符的字符串)时可能会产生不可预测的结果。以下是如何使用这些函数的示例:使用atoi......
  • C语言初阶 数据在内存中的存储
    数据在内存中的存储在编程的世界里,数据是如何存储和管理的,是每一位开发者都必须了解的基础知识。特别是对于C语言这样的底层语言,理解数据在内存中的存储方式,对于写出高效、安全的代码至关重要。本文将带您深入了解C语言中数据在内存中的存储方式。1.整数存储对于整型来说......
  • C语言数据结构栈的概念及结构、栈的实现、栈的初始化、销毁栈、入栈、出栈、检查是否
    文章目录前言栈的概念及结构栈的实现一、栈结构创建二、初始化结构三、销毁栈四、入栈五、出栈六、检查是否为空七、获取栈顶元素八、获取有效元素的个数九、测试1十、测试2总结前言C语言数据结构栈的概念及结构、栈的实现、栈的初始化、销毁栈、入栈、出栈、检......
  • C语言中的函数(2)
    目录前言函数的调用和声明函数的嵌套调用 函数的链式访问函数的递归调用递归求n的阶乘递归计算斐波那契数static和extern作用域和生命周期变量存储方式作用static修饰局部变量extern的使用static修饰全局变量static修饰函数函数的要求      内聚性强......
  • 探索c语言:深入了解指针
    1.内存和地址1.1内存和地址1.1内存我们可以通过一个小案例来了了解:假设有一栋宿舍楼,把你放在楼里,楼上有100个房间号,但房间里没有编号,刚好你的一个朋友找你玩,如果想要找到你就得挨个房间找,这样子效率很低,但是如果我们根据楼层和楼层的房间号的情况,给每个房间编上号,如: 1......
  • C语言---最大公约数和最小公倍数的求法
    #include<stdio.h>//欧几里得算法求的最大公约数intgcd(inta,intb){//一定要确保a>bif(a<b){inttemp=a;a=b;b=temp;//作用是创建临时变量将a和b的数值置换}while(b!=0)//当b不等于0时,继续执行循环......
  • C语言---数组中逆序输出--新
    #include<stdio.h>intmain(){//下面的是输入intarr[10]={0};//创建一个大小为10的数组for(inti=0;i<10;i++){scanf("%d",&arr[i]);//循环输入i的值}//为什么是i从9开始,不是从0开始//因为总共10个数,所以最大数......
  • 【2024年电工杯A题】园区微电网风光储协调优化配置(思路、代码......)
    ......