FaFu--练习复盘--1

news2024/11/26 4:25:31

1、输出图形及二维数组应用

1.1.输出图形

描述

        编写程序打印n行如下图形,其中1≤n≤500。

输入用例   

        7                           

输出用例 

具体实现

#include"stdio.h"
int main(){
 int n,i,j;
   scanf("%d",&n);
   for(i = 1; i<= n; i++){
     for (j = 1; j<= n-i; j++)
         printf(" ");
     for(j =1 ;j<=i; j++)
           printf("%c",'A'+(n-j)%26);
     for(j =1 ;j<=i-1; j++)
           printf("%c",'A'+(n+j-i)%26);
        printf("\n");
    }
  return 0;
}

  

1.2.旋转数字

描述

        编写程序打印n行如下菱形图形(1≤n≤99),图形有n行n列个整数,图形从第1行的中间开始,数字分别是1,2,……n*n-1,n*n,并且顺时针向中间转入,如果1个数据项宽度不足n*n位,用0补足到n*n位。

 输入用例

        7

输出用例

       

具体实现

#include "stdio.h"
const int N0 = 100;
struct Dir{
 	int row,col;
	}dir[4] = {{1,1},{1,-1},{-1,-1},{-1,1}};
 int a[2*N0][2*N0] = {0};
 int main(){
  int n,i,j,m;
   scanf("%d",&n);
   int row,col,rowTest,colTest,d=0;
   row = 1;
   col = n;
   m = 0;
   i = n*n;
   while(i){
     i/=10;
       m++;
    }
   for(i = 1; i<= n*n; i++){
     a[row][col] = i;
       rowTest = row + dir[d].row;
       colTest = col + dir[d].col;
       if(rowTest < 1 || rowTest >= 2*n || colTest < 1 || colTest >= 2*n || a[rowTest][colTest] != 0){
         d = (d+1)%4;
           rowTest = row + dir[d].row;
           colTest = col + dir[d].col;
        }
       row = rowTest;
       col = colTest;
    }
   for( i = 1; i < 2*n ; i++){
     for (j = 1; j< 2*n; j++)
          if(i<=n && j<n+i || i>n && j<3*n-i)
          {
              if(a[i][j] == 0)
                printf("%*c",m,' ');
              else
                printf("%0*d",m,a[i][j]);
          }
          printf("\n");        
    }
  return 0;
}

1.3求和

描述

        有1个n×n的矩阵,从左上到右下称为主斜线(倾角135º),从右上到左下称为次斜线(倾角45º),在主斜线上最大,次斜线上最小的元素称为该矩阵的斜线鞍点,求出该矩阵所有斜线鞍点的和。

        如5×5的矩阵:元素7为上面矩阵的一个斜线鞍点,元素10和19也是上面矩阵的斜线鞍点。

输入用例

5

3        2        5        98        10

44     12        1       12         8 

67     61        45      7         19 

12     21        33      56        3

35     36        78      98        19    

输出用例

36

具体实现

#include "stdio.h"
const int N0 = 105;
int a[N0][N0];
int n;
void readData(){
 int i,j;
   scanf("%d",&n);
   for(i =1 ; i<=n ; i++)
      for(j=1; j<=n; j++)
        scanf("%d",&a[i][j]);
}
bool masterMax(int i, int j){
 int p,q;
   for(p=1; p<=n ; p++)
      for(q=1; q<=n; q++)
         if(p-q == i-j && a[p][q] > a[i][j])
               return false;
   return true;
}
bool slaverMin(int i,int j){
 int p,q;
   for(p=1; p<=n ; p++)
      for(q=1; q<=n; q++)
         if(p+q == i+j && a[p][q] < a[i][j])
               return false;
   return true;
}
int main(){
 int i,j,total;
   readData();
   for(total = 0, i=1; i<=n; i++)
       for(j=1; j<=n; j++)
           if(masterMax(i,j) && slaverMin(i,j))
               total += a[i][j];
  printf("%d\n",total);
   return 0;
}

2、数组与结构体应用

 2.1.数组中的元素查找

描述

        一维数组a中有20个整数,编写程序在数组a中查找元素q,如果找到第一个等于q的元素,则输出该元素在数组中的下标;如果没找到则输出-1。

输入用例

5

3 21 5 98 44 12 64 7 66 96 76 67 61 2 13 16 9 78 56 69

输出用例

2

具体实现

#include <stdio.h>
#include<math.h>
int main (){
    int a[20];
    int i,q,flag=0;
    scanf("%d",&q);
    for (i=0;i<20;i++) 
        scanf("%d",&a[i]);
    for(i=0;i<20;i++)
    	if (a[i]==q){
    		break;
    	}	
    if (i<20) 
        printf("%d",i);
    else 
        printf("-1");
    return 0;
 } 

2.2.多重元素下标查找

描述

        一维数组a中有10个整数,编写程序在数组a中查找所有值等于q的元素,并输出这些元素在数组中的下标;如果没找到则输出-1。

输入用例

58

57 89 76 35 58 65 58 73 58 47

输出用例

4 6 8 

具体实现 

#include <stdio.h>
#include<math.h>
int main (){
    int a[10];
    int i,q,flag=0;
    scanf("%d",&q);
    for (i=0;i<10;i++) scanf("%d",&a[i]);
    for(i=0;i<10;i++)
    	if (a[i]==q){
    		printf("%d ",i);
    		flag++;
		}	
	if (flag) ;//这有一个空语句
	else 
        printf("-1");
	return 0;
 } 

2.3.极端偏差成绩查找

描述

        输入某班级n(0<n<100)个学生的成绩到数组a中,找出所有成绩中与平均值绝对偏差最大的学生成绩,并输出该学生的成绩。

输入用例

10

23 21 5 17 19 42 6 10 8 31

输出用例

42

#include <stdio.h>
#include<math.h>
int main ()
{
    int a[100];
    int i,n,c,k,sum=0,avg;
    scanf("%d",&n);
    for (i=0;i<n;i++) scanf("%d",&a[i]);
    for (i=0;i<n;i++) sum=sum+a[i];
    avg=sum/n;
    c=fabs(a[0]-avg);
    k=0;
    for (i=0;i<n;i++)
	if (fabs(a[i]-avg)>c){
		c=fabs(a[i]-avg);
		k=i;
	}
	printf("%d",a[k]);
	return 0;
 } 

2.4.学生成绩标准差计算 

描述

        输入某班级n(0<n<100)个学生的成绩到数组a中,编写程序求成绩的标准差,求标准差的公式如下:

        其中,表示学生的总平均成绩,表示第i个学生的成绩。 

输入用例

6

95 85 75 65 55 45

输出用例

18.708

具体实现

#include <stdio.h>
#include<math.h>
int main (){
    int a[100];
    int i,n,c,k;
    double st,sum=0,avg;
    scanf("%d",&n);
    for (i=0;i<n;i++) 
      scanf("%d",&a[i]);
    for (i=0;i<n;i++) 
      sum=sum+a[i];
    avg=sum/n;
    sum=0;
    for (i=0;i<n;i++){
    	sum=sum+(a[i]-avg)*(a[i]-avg);
    }
	st=sqrt(sum/(n-1));
	printf("%.3lf",st);
	return 0;
 } 

2.5.次对角线元素求和

描述

        有一个5×5矩阵(即二维数组b),编写程序输出该矩阵次对角线上的所有元素之和。

输入用例

3          21        5        98        10

44        12        1        12        8

67        61        45      67        17

12        21        33      56        34

35        36        78      90        19

输出用例

123

具体实现

#include <stdio.h>
#include<math.h>
    int main (){
    int b[5][5];
    int i,j;
    long sum;
    for (i=0;i<5;i++)
    	for(j=0;j<5;j++)
    		scanf("%d",&b[i][j]);
    sum=0;
    for(i=0,j=5;i<5;i++){
    	j--;
		sum=sum+b[i][j];
    }
    printf("%ld",sum);
    return 0;
 } 

2.6.矩阵对角线区域调整

描述

        有一个5×5矩阵(即二维数组b),编写程序将矩阵的左下三角(含主对角线)各元素加10,右上三角各元素(不含主对角线)减10。

输入用例

13 21 55 98 47

12 18 19 67 61

89 80 36 78 10

89 87 67 80 12

12 33 88 57 70

输出用例 

23 11 45 88 37

22 28 9  57 51

99 90 46 68 0

99 97 77 90 2

22 43 98 67 80 

具体实现 

#include <stdio.h>
#include<math.h>
int main (){
  int b[5][5];
  int i,j;
	for(i=0;i<5;i++){
    	for(j=0;j<5;j++){
        scanf("%d",&b[i][j]);
        if(i<j){
        	b[i][j]-=10;
        	}else{
        	b[i][j]+=10;
        	}
          printf("%d ",b[i][j]);
        }
  	printf("\n");
    }
	return 0;
 } 

2.7.二维数组先列后行降序排序

 描述

        有一个n行m列(0<n<20,0<m<20)的整型二维数组b,编写程序对二维数组b[n][m]先按列降序排序,再按行降序排序。

输入用例

4 5

21  3   5   98   10

44 12  1   12    8

67 61 45  67   17

35 36 78  90    19

输出用例

98  78  67 61  19

90  45  44  36  17

67  35  12  10  5

21  12   8    3   1

具体实现 

#include <stdio.h>
int main (){
    int b[20][20];
    int n,m,i,j,k,temp;
     scanf("%d%d",&n,&m); 
    for (i=0;i<n;i++)
    	for(j=0;j<m;j++)
    		scanf("%d",&b[i][j]);
    for(k=0;k<m;k++)
      for(i=n-1;i>0;i--)
        for(j=0;j<i;j++)
          if(b[j][k]<b[j+1][k]){
          	temp=b[j][k];
            b[j][k]=b[j+1][k];
            b[j+1][k]=temp;
          }
      for(k=0;k<n;k++)
        for(i=m-1;i>0;i--)
          for(j=0;j<i;j++)
            if(b[k][j]<b[k][j+1]){
            	temp=b[k][j];
              	b[k][j]=b[k][j+1];
              b[k][j+1]=temp;
            }
    for (i=0;i<n;i++){
    	for(j=0;j<m;j++)
    		printf("%d ",b[i][j]);
    	printf("\n");
    	}
     return 0;
 } 

2.8. 二维数组字符串升序排序

描述

        输入n个字符串(长度小于20)存入二维数组c中,编写程序对其进行排序(由小到大)并按次序输出。

输入用例

3

bcd

abd

abc

输出用例

abc

abd

bcd

具体实现

#include<stdio.h>
#include<string.h>
void myGets(char s[]){
	char ch;
    while((ch=getchar())!='\n' && ch!=EOF)
      *s++=ch;
  	*s=0;
}
int main(){
	char c[20][20],temp[20];
  	int n,i,j;
  	scanf("%d",&n);
  	getchar();
  	for(i=0;i<n;i++)
    	gets(c[i]);
  	for(i=n-1;i>0;i--)
  		for(j=0;j<i;j++)
    		if(strcmp(c[j],c[j+1])>0){
          		strcpy(temp,c[j]);
          		strcpy(c[j],c[j+1]);
          		strcpy(c[j+1],temp);
        		}
   	for(i=0;i<n;i++)
        puts(c[i]);
    return 0;  
}

2.9.删除小写字符形成新字符串

描述

        从键盘输入一个字符串s,删除其中所有的小写字符后形成一个新字符串,然后输出。

输入用例

www.163.com

输出用例

.163.

具体实现

#include <stdio.h>
#include <string.h>
int main (){
    char s[30];
    int i,j;
    gets(s);
    i=0;
    while (s[i]!='\0'){
    	if(s[i]>='a' && s[i]<='z'){
    		j=i;
    		while (s[j]!='\0'){
    			s[j]=s[j+1];
    			j++;	
    		}
    		s[j-1]='\0';
    	}
    	else i++;
    }
    puts(s);	
    return 0;
 } 

2.10.恺撒密码加密 

描述

        朱迪斯·恺撒在其政府的秘密通信中使用恺撒密码进行信息加密,恺撒加密因而得其名。凯撒密码的基本思想是将待加密的信息(称为明文)中每个字母在字母表中向后移动常量key,得到加密信息(称为密文)。例如,假设字母表为小写英文字母表,key等于3,则对于明文computer systems将加密为frpsxwhu vbvwhpv。

输入用例

3

computer system

输出用例

frpsxwhu vbvwhpv

具体实现

#include <stdio.h>
#include <string.h>
int main (){
    char s[100]={0};
    int i,key;
    scanf("%d",&key);
    while(getchar()!='\n');
    gets(s); 
    i=0;
    while (s[i]!='\0'){
    	if ((s[i]>=65 && s[i]<=90)  ){
    	s[i]=(s[i]+key-65)%26+65;
    	}
    	if (s[i]>=97 && s[i]<=122){
    	s[i]=(s[i]+key-97)%26+97;	
    	}
    	i++;
    }
    puts(s);	
    return 0;
 } 

2.11.优秀学生信息输出

描述

        有n个学生,每个学生的数据包括学号、姓名和成绩,要求输出成绩优秀(大于等于90分)学生的信息(包括学号、姓名和整型成绩)。如果没有符合条件的,则输出“No”。

输入用例

3

1001 Make 86

1002 Linda 58

1003 Jone 90

输出用例

1003 Jone 90

具体实现 

#include <stdio.h>
#include <string.h>
int main (){
    struct student{
    	int num;
    	char name[10];
    	int score;	
    };
    struct student stu[20];
    int n,i,flag=0;
    scanf("%d",&n);
    for (i=0;i<n;i++){
    	scanf("%d%s",&stu[i].num,stu[i].name);
    	scanf("%d",&stu[i].score);
    } 
    for (i=0;i<n;i++)
    	if (stu[i].score>=90){
    		flag=1;
    		printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].score);
    	}
    	if(flag==0) 
            printf("No");
    return 0;
 } 

2.12.高分学生筛选输出

描述

        有n个学生,每个学生的数据包括学号、姓名和3门课程的成绩,要求输出平均成绩高于90分以上(包括90分)或全部课程成绩均在85分以上(包括85分)的学生信息(包括学号和姓名),如果没有符合条件的,则输出“No”。

输入用例

3

1001 Make 86 91 89

1002 Linda 78 78 80

1003 Jone 90  67 71

输出用例

1001 Make

具体实现

#include <stdio.h>
#include <string.h>
int main (){
    struct student{
    	int num;
    	char name[10];
    	int score[3];
    	float avg;
    };
    struct student stu[20];
    int n,i,sum,flag=0;
    scanf("%d",&n);
    for (i=0;i<n;i++){
    	scanf("%d%s",&stu[i].num,stu[i].name);
    	scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
    } 
    for (i=0;i<n;i++){
    	stu[i].avg=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
    	if ((stu[i].avg>=90)||(stu[i].score[0]>=85 && stu[i].score[1]>=85 && stu[i].score[2]>=85)){
    		flag=1;
    		printf("%d %s\n",stu[i].num,stu[i].name);
    	}
    }
    if(flag==0) printf("No");
    return 0;
 } 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1393489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

盘点 Top 10 最好用的开发者工具箱

He3 有 500 工具&#xff0c;支持自定义工具分类&#xff0c;可以在线使用也可以下载客户端到本地&#xff0c;但有部分工具只能下载客户端才能使用&#xff0c;AI 工具需要升级购买积分&#xff0c;页面简洁&#xff0c;没有广告&#xff0c;部分小工具开源&#xff1b;JSON和…

Python vs. Rust:打破三大障碍

在我周围的每个人都知道我是Python 的忠实粉丝。大约15年前&#xff0c;当我对 Mathworks Matlab 感到厌倦时&#xff0c;我开始使用Python。虽然Matlab的理念看起来不错&#xff0c;但在掌握了Python之后&#xff0c;我再也没有回头。我甚至成为了我所在大学的Python传道者&am…

结构体内存对齐的跨平台做法

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 之前写了一篇文章&#xff1a;使用标准C库读文件时需要注意的一个问题&#xff0c;今天发现是错误的。正确的做法是使用#pragma pack预处理指令。示例程序…

idea社区版 MybatisCodeHelperPro插件使用介绍

文章目录 一、插件介绍二、idea社区版安装MybatisCodeHelperPro插件三、问题记录1. DatabaseHelper插件 加载不了部分数据库链接的列信息2. DatabaseHelper插件 数据库列显示顺序错乱3. MybatisCodeHelperPro插件 数据库字段不提示4. MybatisCodeHelperPro插件 特殊字段增加反引…

【北亚企安数据恢复】RAIDZ多块磁盘离线导致服务器崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; ORACLE SUN ZFS某型号存储&#xff0c;共40块磁盘组建存储池&#xff0c;其中的36块磁盘分为三组&#xff0c;每组12块&#xff0c;单个组使用ZFS特有的RAIDZ管理所有磁盘&#xff0c;RAIDZ级别为2&#xff1b;另外的4块磁盘作为全局热备。存储…

高效解决在本地计算机运行ubuntu服务器端的jupyter lab

文章目录 问题解决方案step1step2step3step4 问题 目前&#xff0c;网上没有什么详细的关于在本地计算机上运行服务器端jupyter lab的教程&#xff0c;由于个人计算机计算资源有限&#xff0c;我们需要利用服务器端的GPU实现高效训练 这篇文章将指导您如何使用 ssh 隧道在远…

Python学习从0到1 day4 python基础语法2 格式化输出和输入方法

其实我不是我&#xff0c;我是青山辽阔 ——24.1.14 一、百分号形式的格式化输出 1.普通输出 #1.定义一些变量 name 陈浩南 age 25 address 广州市天河区#2.变量的输出&#xff08;普通输出&#xff09; print(name) print(age) print(address)#3.Python中&#xff0c;还允…

pycharm import torch

目录 1 安装 2 conda环境配置 3 测试 开始学习Pytorch! 1 安装 我的电脑 Windows 11 Python 3.11 Anaconda3-2023.09-0-Windows-x86_64.exe cuda_11.8.0_522.06_windows.exe pytorch &#xff08;管理员命令行安装&#xff09; pycharm-community-2023.3.2.exe 2 c…

Vim命令大全

文章目录 简述&#xff1a;1. **命令模式&#xff08;Command Mode&#xff09;**2. **插入模式&#xff08;Insert Mode&#xff09;**3. **可视模式&#xff08;Visual Mode&#xff09;**4. **末行模式&#xff08;Ex Mode&#xff09;** 详细使用案例&#xff1a;1. **文件…

Qt 状态机框架:The State Machine Framework (二)

传送门: Qt 状态机框架:The State Machine Framework (一) Qt 状态机框架:The State Machine Framework (二) 1、利用并行态避免态的组合爆炸 假设您想在单个状态机中对汽车的一组互斥属性进行建模。假设我们感兴趣的属性是干净与肮脏&#xff0c;以及移动与不移动。需要四个…

Linux 系统之部署 h5ai 目录列表程序

一、h5ai 介绍 1.1&#xff09;h5ai 简介 h5ai 是用于 HTTP Web 服务器的现代文件索引器&#xff0c;专注于您的文件。目录以吸引人的方式显示&#xff0c;浏览它们通过不同的视图、面包屑和树概述得到增强。最初 h5ai 是 HTML5 Apache Index 的首字母缩写&#xff0c;但现在它…

异步Merkle Tree

1. 引言 前序博客&#xff1a; 利用多核的Rust快速Merkle tree Anoushk Kharangate 2023年论文《Asynchronous Merkle Trees》&#xff0c;其对Merkle tree数据结构进行修改&#xff0c;使得可跨多线程异步计算。 开源代码实现见&#xff1a; https://github.com/anoushk1…

2024华数杯国际数学建模B题思路+代码+模型+论文

2024华数杯国际数学建模B题思路代码模型论文&#xff1a;1.17上午第一时间更新&#xff0c;详细内容见文末名片 问题B&#xff1a;光伏电 背景 中国的电力构成包括传统的能源发电&#xff08;如煤炭、石油和天然气&#xff09;、可再生能源发电 &#xff08;如水力发电、风能…

gin+gorm增删改查目录框架

从网上找资料,发现,很多都是直接的结构 路由&#xff0c;后端的controller层&#xff0c;还有model层&#xff0c;都是放在了同一个main.go文件中&#xff0c;如果写项目的话&#xff0c;还得自己去拆文件&#xff0c;拆代码&#xff0c;经过查询和自己总结&#xff0c;下面放…

ssh免密登录 ssh公钥分发 ssh密钥生成

在连接服务器时&#xff0c;我们会被要求输入用户名对应的密码&#xff0c;如下&#x1f447;&#xff1a; 如果我们要登录的服务器是常用服务器&#xff0c;那么每次登录输入密码就会比较麻烦。那么如何免密登录呢&#xff1f;那就需要使用到rsa公私钥认证了。 生成rsa密钥…

vue 指定区域可拖拽的限定拖拽区域的div(如仅弹窗标题可拖拽的弹窗)

<template><div class"container" ref"container"><div class"drag-box" v-drag><div class"win_head">弹窗标题</div><div class"win_content">弹窗内容</div></div><…

vivado导出时序报告为excel文件的方法

1、打开implementation下的report timing summary 2、选择要看的时钟右键点击report_timing 3、在新打开的timing窗口中&#xff0c;选择setup或者hold&#xff0c;选中一条路径右键&#xff0c;点击export to spreadsheet&#xff0c;此时就可以存为table.xlsx文件

【MySQL】权限控制

DCL-权限控制 查询权限 show grants for 用户名主机名;授予权限 grant 权限列表 on 数据库名.表名 to 用户名主机名;grant all on test.* to user%; %是通配符&#xff0c;表示任意主机。撤销权限 revoke 权限列表 on 数据库名.表名 from 用户名主机名;revoke all on test.*…

旅游平台day02

1. 用户注册 概述&#xff1a; 常见的注册方式&#xff1a;邮箱注册、手机号注册、昵称注册、或者以上几种同时支持 本项目仅仅支持手机号注册 需求&#xff1a; 项目启动后&#xff0c;访问regist.html进入注册页面 手机号校验 前后台都需要对手机号进行校验 前端校验&am…

HashMap学习和线程安全的HashMap

HashMap的底层数据结构&#xff1f; HashMap在JDK1.8里面的Node数组加链表加红黑树&#xff0c;当链表长度大于8且数组长度大于64&#xff0c;链表转化为红黑树。当红黑树节点数小于6&#xff0c;红黑树转化为链表。在JDK1.7中是数组加链表。 为什么要用红黑树&#xff1f; 当…