C# 基础编程题集锦
简单字符串加密
编写一个应用程序用来输入的字符串进行加密,对于字母字符串加密规则如下:
'a→d’ ‘b'→’e’ ‘w’→z' ...... x'→’a’ ‘y'→b' ‘z→c’ ‘A’→’D’ ‘B'→’E’ ‘W’→’Z’ ‘X’→’A’ ‘Y’→’B’ ‘Z’→’C’ ?对于其他字符,不进行加密。
static void Main(string[] args)
{
string str = Console.ReadLine();
Char[] chars = str.ToCharArray();
for (int i = 0; i < chars.Length; i++)
{
if ((chars[i] >= 'a' && chars[i] <= 'z') || (chars[i] >= 'A' && chars[i] <= 'Z'))
{
chars[i] = (char)(chars[i] + 3);
if ((chars[i] > 'z' && chars[i] <= 'z' + 3)||(chars[i] > 'Z' && chars[i] <= 'Z' + 3))
{
chars[i] = (char)(chars[i] -26);
}
}
}
foreach (char c in chars)
{
Console.Write(c);
}
Console.ReadKey();
}
找到最小值
输入(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
【假设输入的数字以空格字符隔开,例:23 15 45 78 】
static void Main(string[] args)
{
string str = Console.ReadLine();
string[] strArray = str.Split(' ');
int[] intArray = new int[strArray.Length];
for (int i = 0; i < intArray.Length; i++)
{
intArray[i] = int.Parse(strArray[i]);
}
int min = intArray[0];
int minIndex = 0;
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] < min)
{
min = intArray[i];
minIndex = i;
}
}
intArray[minIndex] = intArray[0];
intArray[0] = min;
foreach (var item in intArray)
{
Console.Write(item + " ");
}
Console.ReadKey();
}
在适当位置插入
有 n (n<=100) 个整数,已经按照从小到大顺序排列好,现在另外给一个整数 x ,请将该数插入到序列
中,并使新的序列仍然有序。
static void Main(string[] args)
{
int[] array = { 2, 3, 5, 10, 89 };
int target = int.Parse(Console.ReadLine());
int index = 0;
bool isFound = false;
for (int i = 0; i < array.Length - 1; i++)
{
if (target >= array[i] && target <= array[i + 1])
{
index = i;
isFound = true;
break;
}
}
List<int> list = array.ToList();
if (isFound)
{
list.Insert(index + 1, target);
}
else
{
if (target < list[0])
{
list.Insert(0, target);
}
else
{
list.Add(target);
}
}
array = list.ToArray();
for (int i = 0; i < array.Length; i++)
{
Console.Write(array[i] + " ");
}
Console.ReadKey();
}
排序
编写一个控制台程序,要求用户输入一组数字用空格间隔,对用户输入的数字从小到大输出。
(Array.Sort()方法和冒泡排序)
Array.Sort
static void Main(string[] args)
{
string[] strArray = Console.ReadLine().Split(' ');
int[] intArray = new int[strArray.Length];
for (int i = 0; i < intArray.Length; i++)
{
intArray[i] = int.Parse(strArray[i]);
}
Array.Sort(intArray);
for (int i = 0;i < intArray.Length; i++)
{
Console.Write(intArray[i]+" ");
}
Console.ReadKey();
}
冒泡排序
static void Main(string[] args)
{
string[] strArray = Console.ReadLine().Split(' ');
int[] intArray = new int[strArray.Length];
for (int i = 0; i < intArray.Length; i++)
{
intArray[i] = int.Parse(strArray[i]);
}
for (int i = 0; i < intArray.Length-1; i++)
{
for (int y = 0; y < intArray.Length-1; y++)
{
if (intArray[y] > intArray[y+1])
{
int temp = intArray[y];
intArray[y]= intArray[y+1];
intArray[y+1]= temp;
}
}
}
foreach (var item in intArray)
{
Console.Write(item+" ");
}
Console.ReadKey();
}
判断合法标识符
输入一个字符串,判断其是否是C#合法标识符。
【合法标识符即合法命名】 - 字母、数字、下划线
static void Main(string[] args)
{
char[] chars = Console.ReadLine().ToCharArray();
bool isLeagal = true;
if ((chars[0] >= '0' && chars[0] <= '9'))
{
isLeagal = false;
}
else
{
foreach (char c in chars)
{
if (!((c>='0'&&c<='9')||(c>='a'&&c<='z')||(c>='A'&&c<='Z')||c=='_'))
{
isLeagal=false;
break;
}
}
}
if (isLeagal)
{
Console.WriteLine("字符串合法");
}
else { Console.WriteLine("字符串不合法"); }
Console.ReadKey();
}
回文串
回文串"是一个正读和反读都一样的字符串,比如level或者noon等等就是回文串。请写一个
程序判断读入的字符串是否是“回文串”。
static void Main(string[] args)
{
char[] chars = Console.ReadLine().ToCharArray();
bool isHui = true;
for (int i = 0; i < chars.Length / 2; i++)
{
if (chars[i] != chars[chars.Length - 1 - i])
{
isHui = false;
break;
}
}
if (isHui)
{
Console.WriteLine("是回文串");
}
else
{
Console.WriteLine("不是回文串");
}
Console.ReadKey();
}
判断第二大值
输入是个不相等的正整数,输出这10个正整数中的第二大的数。
样例输入
3729531038
样例输出
9
static void Main(string[] args)
{
string[] strArray = Console.ReadLine().Split(' ');
int[] intArray = new int[strArray.Length];
for (int i = 0; i < intArray.Length; i++)
{
intArray[i] = int.Parse(strArray[i]);
}
int max1 = 0, max2 = 0;
for (int i = 0; i < intArray.Length; i++)
{
if (intArray[i]>max1)
{
max2 = max1;
max1 = intArray[i];
}
else
{
if (intArray[i]>max2)
{
max2 = intArray[i];
}
}
}
Console.WriteLine($"第二大值 {max2}");
Console.ReadKey();
}
真素数
区间内的真素数
找出正整数M和N之间(N不小于M)的所有真素数。真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。
例如,11,13均为真素数,因为11的反序还是为14,13的反序为31也为素数。
输入格式:输入两个数M和N,空格间隔,1<=M<=N<=100000。
输出格式:按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出N0。
输入样例:1035
输出样例:11.13,17,31
static void Main(string[] args)
{
string[] strArray = Console.ReadLine().Split(' ');
int[] intArray = new int[strArray.Length];
for (int i = 0; i < intArray.Length; i++) // m n
{
intArray[i] = int.Parse(strArray[i]);
}
int m = intArray[0];
int n = intArray[1];
for (int i = m; i < n + 1; i++)
{
bool isSu = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
isSu = false;
}
}
if (isSu)
{
// 取反
int temp = i;
int number = 0;
while (temp % 10 != 0)
{
number = number * 10 + temp % 10;
temp = temp / 10;
}
bool isSu2 = true;
for (int j = 2; j < number; j++)
{
if (number % j == 0)
{
isSu2 = false;
break;
}
}
if (isSu2)
{
Console.Write(i + " ");
}
}
}
Console.ReadKey();
}
递归函数类
f( n )=f(n-1)+ f(n-2) ,f(0)=2 ,f(1) = 3 , 用程序求得 f(40)
循环
static void Main(string[] args)
{
// fn = fn1 + fn2 f0=2 f1=3
int n1 = 2; // f0
int n2 = 3; // f1
int n40 = 0;
for (int i = 2; i < 41; i++)
{
n40 = n1 + n2;
n1 = n2;
n2 = n40;
}
Console.WriteLine(n40);
Console.ReadKey();
}
递归函数
static void Main(string[] args)
{
// fn = fn1 + fn2 f0=2 f1=3
int n40 = F(40);
Console.WriteLine(n40);
Console.ReadKey();
}
static int F(int n)
{
if (n == 0) { return 2; }
if (n == 1) { return 3; }
int res = F(n - 1) + F(n - 2);
return res;
}

阶乘
利用递归函数取得10!
循环
static void Main(string[] args)
{
// n! = n*(n-1)*(n-2)*...*(n-(n-1))
// 5! = 5*4*3*2*1
int result = 10;
for (int i = 9; i > 0; i--)
{
result = result * i;
}
Console.WriteLine(result);
Console.ReadKey();
}
递归函数
static void Main(string[] args)
{
// n! = n*(n-1)*(n-2)*...*(n-(n-1)) = n*(n-1)!
// 5! = 5*4*3*2*1
Console.WriteLine(F(10));
Console.ReadKey();
}
static int F(int n)
{
if (n == 1) { return 1; }
int res = n * F(n - 1);
return res;
}
找规律!!!
阶乘变种
1+2!+3!+4!+..+10!
利用多个方法计算结果
static void Main(string[] args)
{
// n! = n*(n-1)*(n-2)*...*(n-(n-1)) = n*(n-1)!
// 5! = 5*4*3*2*1
Console.WriteLine(S(10));
Console.ReadKey();
}
static int F(int n)
{
if (n == 1) { return 1; }
int res = n * F(n - 1);
return res;
}
static int S(int n)
{
if(n==1) { return 1; }
int res=F(n) + S(n - 1);
return res;
}
递归练习
有关系式1 x 1+2 x 2+3 x 3+..+ k x k<2000,编一个程序,求出满足此关系式的k的最大值
利用递归和循环解决这个问题
static void Main(string[] args)
{
// 不清楚循环何时结束 - while
int k = 1;
while (true)
{
int res = F(k);
if (res >= 2000)
{
break;
}
k++;
}
Console.WriteLine(k - 1);
Console.ReadKey();
}
static int F(int n)
{
if (n == 1) { return 1; }
int res = n * n + F(n - 1);
return res;
}
C# 基础编程题集锦的更多相关文章
- JavaScript数组基础编程题归纳
之前的随笔"JavaScript中数组类型的属性和方法"中有介绍很多数组类型的方法,但都是一些理论.最近在练习在线编程题,发现自己还是习惯于用常规的循环来答题,对于数组的方法的使用 ...
- 《ACM国际大学生程序设计竞赛题解Ⅰ》——基础编程题
这个专栏开始介绍一些<ACM国际大学生程序设计竞赛题解>上的竞赛题目,读者可以配合zju/poj/uva的在线测评系统提交代码(今天zoj貌似崩了). 其实看书名也能看出来这本书的思路,就 ...
- java基础编程题练习(一)
1.编程实现用户输入4个整数,按从大到小的顺序排列输出. 思路:将输入的数据存入数组,使用冒泡排序对数组数据进行排序后输出数组 冒泡排序的代码如下: import java.util.Scanner; ...
- java面向对象基础编程题
第一题: 设计一个形状类Shape,方法:求周长和求面积.形状类的子类:Rect(矩形),Circle(圆形).Rect类的子类:Square(正方形).不同的子类会有不同的计算周长和面积的方法1.总 ...
- java基础编程题(1)
1. 题目:打印出杨辉三角形(要求打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1...... package com.jzq.test1; ...
- PAT 基础编程题 4-11 求自定类型元素序列的中位数(希尔排序)
4-11 求自定类型元素序列的中位数 (25分) 本题要求实现一个函数,求N个集合元素A[]的中位数,即序列中第\lfloor N/2 +1\rfloor⌊N/2+1⌋大的元素.其中集合元素的类型 ...
- java基础编程题练习(二)
1.回文数 思路一:使用java特有解法,将原数字以字符串存储,翻转后赋值给新的字符串变量,再使用equals与原字符串进行对比 import java.util.Scanner; public cl ...
- k2datas 基础编程题,判断字符串是否有重复串
package String; public class DuplicateString { public static boolean isDup(String s) throws Exceptio ...
- 海龟绘图turtle库之二级基础编程题
一.画一个太极图 import turtle as t t.pensize(2)#设置笔画宽度 t.circle(100)#以100为半径的圆 t.circle(50, 180) t.circle(- ...
- Java基础编程题——打印九九乘法表
package com.yangzl.basic; /** * 九九乘法表 * @author Administrator * */ public class Nine_Nine_Multiplica ...
随机推荐
- 树链剖分 | 洛谷 P4114 Qtree1
前言 题目链接:洛谷 P4114 Qtree1 前置知识:树链剖分 题意 给定一棵树,有修改边权和查询两点之间边权最大值两种操作,对于每个查询输出结果. 解析 已经在前置博客里提到,树链剖分 可以将树 ...
- ETL之apache hop系列4-hop开发数据增量同步功能
ETL增量数据抽取CDC 概念:Change Data Capture,变化的数据捕获,也称:[增量数据抽取](名词解释) CDC是一种实现数据的增量抽取解决方案,是实现[ETL整体解决方案]中的一项 ...
- react18-webchat网页聊天实例|React Hooks+Arco Design仿微信桌面端
React18 Hooks+Arco-Design+Zustand仿微信客户端聊天ReactWebchat. react18-webchat基于react18+vite4.x+arco-design+ ...
- Kafka Stream 处理器API
6.1章节内容 了解如何使用处理器API对以下场景进行处理 ①以有规律的间隔定期执行 ②将控制记录如何向下游发送 ③将记录转发给特定的子节点 ④创建Kafka Streams API中不存在的功能 6 ...
- 万字长文教你实现华为云IoT+OpenHarmony智能家居开发
本文分享自华为云社区<华为云IoT+OpenHarmony的智能家居开发>,作者:袁睿. 一.选题说明 1. 选题为基于OpenHarmony的智能家居,应用场景为户用,受益人群为住户. ...
- Java 21的StringBuilder和StringBuffer新增了一个repeat方法
发现Java 21的StringBuilder和StringBuffer中多了repeat方法: /** * @throws IllegalArgumentException {@inheritDoc ...
- 基于FPGA 的SDRAM控制器
SDRAM基本信息 储存能力计算 4X16X4=256(Mbit),注意不是MByte SDRAM控制 sdram包含两个部分:sdram_ctrl.fifo_ctrl. sdram_ctrl:其顶层 ...
- 算法——AcWing算法提高课中代码和题解
文章目录 第一章 动态规划 (完成情况:64/68) 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP 第二章 搜索 ...
- 11g编译bbed
报错如下: make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed Linking BBED utility (bbed) rm -f /u01/app/or ...
- 铅华洗尽,粉黛不施,人工智能AI基于ProPainter技术去除图片以及视频水印(Python3.10)
视频以及图片修复技术是一项具有挑战性的AI视觉任务,它涉及在视频或者图片序列中填补缺失或损坏的区域,同时保持空间和时间的连贯性.该技术在视频补全.对象移除.视频恢复等领域有广泛应用.近年来,两种突出的 ...