1、第 1 页 C#程 序 设 计 基 础 习 题 库 程 序2010 年 6 月 3 日 提 供 给 信 息 中 心 的 原 稿20 分 题 50 个40 分 题 24 个1.(20)编 一 个 程 序 , 定 义 常 量 Pi=3.14159265,从 键 盘 上 输 入 半 径 r,求 出 圆 的 面积 。 (k003101)2.( 20) 编 一 个 程 序 , 定 义 三 个 double类 型 的 变 量 , 分 别 从 键 盘 上 输 入 值 给 它们 , 然 后 用 Console.WriteLine方 法 把 它 们 输 出 成 一 列 , 小 数 点 对 齐 , 保 留 3位
2、小数 。 ( k10052703)3.( 20) 编 一 个 程 序 , 从 键 盘 上 输 入 三 个 数 , 用 三 元 运 算 符 ( ? :) 把 最 大 数 找出 来 。 (k10031505)4.( 20) 编 一 个 程 序 , 从 键 盘 上 输 入 三 个 数 , 用 三 元 运 算 符 ( ? :) 把 最 小 数 找出 来 。 (k10052702)5 ( 20) 编 一 个 程 序 , 输 入 一 个 字 符 , 如 果 是 大 写 字 母 , 就 转 换 成 小 写 字 母 , 否则 不 转 换 。 (k1003205)6 ( 20) 输 入 一 个 字 符 , 判
3、定 它 是 什 么 类 型 的 字 符 ( 大 写 字 母 , 小 写 字 母 , 数字 或 者 其 它 字 符 ) (k10031802)7 ( 20) 编 一 个 程 序 , 设 圆 的 半 径 r=1.2,高 h=1.5,定 义 圆 周 率 常 量 Pi=3.1415,求 出 圆 柱 的 体 积 。 (k10032305)8. (20)编 一 个 程 序 , 设 园 半 径 r=1.5,园 柱 高 h=3.6,圆 周 率 3.1415定 义 为 常 量 ,求 出 圆 周 长 、 圆 面 积 、 圆 柱 体 积 。 然 后 用 Console.WriteLine方 法 输 出 计 算 结
4、果 ,输 出 时 要 求 有 文 字 说 明 , 取 小 数 点 后 2位 数 字 。 例 如 , 圆 周 长 = 。( k10052707)9 ( 20) 编 一 个 程 序 , 输 入 一 个 字 符 , 如 果 输 入 的 字 符 是 大 写 字 母 , 则 转 换 为小 写 字 母 ; 如 果 输 入 的 字 符 是 小 写 字 母 , 则 转 换 为 大 写 字 母 , 否 则 不 转 换 。(k10032601)10 ( 20) 编 一 个 程 序 , 定 义 结 构 类 型 ( 有 学 号 、 姓 名 、 性 别 和 程 序 设 计 成 绩 四个 字 段 ) , 声 明 该 结
5、构 类 型 变 量 , 用 赋 值 语 句 对 该 变 量 赋 值 以 后 再 输 出 。(k10031601)11.( 20) 编 一 个 程 序 , 定 义 一 个 实 数 变 量 , 从 键 盘 上 输 入 一 个 值 ,如 果 这 个 值 在闭 区 间 0,100里 , 则 加 上 1000, 否 则 不 加 。 最 后 输 出 结 果 。 (k10032304)第 2 页12.(20)编 一 个 程 序 , 输 入 一 个 整 数 ,使 用 if else语 句 , 如 果 该 数 大 于 0, 则 加上 100, 否 则 加 上 500, 输 出 结 果 。 ( k10032301
6、)13.( 20) 编 一 个 程 序 , 用 if else语 句 ,输 入 一 个 整 数 , 如 果 该 数 大 于 0, 则 输出 “这 个 数 大 于 零 。 “,如 果 该 数 等 于 0, 则 输 出 “这 个 数 等 于 零 。 “,否 则 输 出 “这 个数 小 于 零 。 “。 (k10032302)14 (20)编 一 个 程 序 , 输 入 一 个 正 数 , 对 该 数 进 行 四 舍 五 入 到 个 位 数 的 运 算 。 例如 , 实 数 12.56经 过 四 舍 五 入 运 算 , 得 到 结 果 13; 而 12.46经 过 四 舍 五 入 运 算 , 得到
7、结 果 12。 (k10012803)15.(20)编 写 一 个 程 序 , 定 义 三 个 float类 型 的 变 量 , 分 别 从 键 盘 上 输 入 值 给 它 们 ,然 后 用 if else选 择 语 句 找 出 它 们 中 的 最 小 数 , 最 后 输 出 结 果 。 ( k10052604)16.(20)编 一 个 程 序 , 输 入 三 个 实 数 , 要 求 使 用 if else语 句 把 它 们 的 中 间 数 找出 来 , 可 以 使 用 逻 辑 运 算 符 。 (k10032309)17 ( 20) 编 一 个 程 序 , 首 先 输 入 一 个 成 绩 (0
8、到 100的 整 数 ), 用 if else语 句然 后 判 断 该 成 绩 是 优 、 良 、 中 、 及 格 还 是 不 及 格 。 (k10040501)18 ( 20) 编 一 个 程 序 , 输 入 0 100之 间 的 一 个 学 生 成 绩 分 数 ,用 switch语 句输 出 成 绩 等 第 ( 成 绩 优 秀 ( 90-100) , 成 绩 良 好 ( 80-89) , 成 绩 及 格 ( 60-79)和 成 绩 不 及 格 ( 59以 下 ) ) 。 ( k10032403)19 (20)编 一 个 程 序 , 利 用 do-while 循 环 语 句 ,从 键 盘 上
9、 输 入 10个 整 数 , 求 出它 们 的 和 。 (k10020105)20.( 20) 编 一 个 程 序 , 用 while 循 环 语 句 来 计 算 1+1/2+2/3+3/4+.+99/100之 和 。 (k10052605)21 (20)编 一 个 程 序 , 用 do-while 循 环 语 句 来 计 算 PI=4*(1-1/3+1/5+.+1/n),要 求 当 1/n= y ? x : y;temp = temp = z ? temp : z;Console.WriteLine(“最 大 数 为 : 0“, temp);4.( 20) 编 一 个 程 序 , 从 键 盘
10、 上 输 入 三 个 数 , 用 三 元 运 算 符 ( ? :) 把 最 小 数 找出 来 。 (k10052702) float x, y, z, temp;Console.Write(“请 输 入 一 个 实 数 : “);x = float.Parse(Console.ReadLine();Console.Write(“请 输 入 一 个 实 数 : “);y = float.Parse(Console.ReadLine();Console.Write(“请 输 入 一 个 实 数 : “);z = float.Parse(Console.ReadLine();temp = x = A
11、 第 11 页Console.WriteLine(“00,最 后 结 果 是 1“, i, j);elsej = i + 500;Console.WriteLine(“0 0)Console.WriteLine(“这 个 数 大 于 0“);else if(i=0)Console.WriteLine(“这 个 数 等 于 0“);elseConsole.WriteLine(“这 个 数 小 于 0“);14 (20)编 一 个 程 序 , 输 入 一 个 正 数 , 对 该 数 进 行 四 舍 五 入 到 个 位 数 的 运 算 。 例如 , 实 数 12.56经 过 四 舍 五 入 运 算
12、, 得 到 结 果 13; 而 12.46经 过 四 舍 五 入 运 算 , 得到 结 果 12。 (k10012803) double d;int i,e;Console.WriteLine(“请 输 入 一 个 正 数 “);d = double.Parse(Console.ReadLine();i=(int)d;if (d - i) = 0.5)e = i + 1;elsee = i;Console.WriteLine(“0四 舍 五 入 的 结 果 为 1“, d, e);15.(20)编 写 一 个 程 序 , 定 义 三 个 float类 型 的 变 量 , 分 别 从 键 盘 上
13、 输 入 值 给 它 们 ,然 后 用 if else选 择 语 句 找 出 它 们 中 的 最 小 数 , 最 后 输 出 结 果 。 ( k10052604)float x, y, z,min=0;Console.WriteLine(“请 输 入 三 个 float类 型 的 值 “);x = float.Parse(Console.ReadLine();y = float.Parse(Console.ReadLine();z = float.Parse(Console.ReadLine();第 12 页if (x yelse if (yxelsesecond = z;Console.Wr
14、iteLine(“这 三 个 数 中 的 中 间 数 为 0“, second);17 ( 20) 编 一 个 程 序 , 首 先 输 入 一 个 成 绩 (0到 100的 整 数 ), 用 if else语 句然 后 判 断 该 成 绩 是 优 、 良 、 中 、 及 格 还 是 不 及 格 。 (k10040501)double score;Console.WriteLine(“请 输 入 一 个 成 绩 “);score = double.Parse(Console.ReadLine();if (score = 90)Console.WriteLine(“优 “);else if (sc
15、ore = 80)Console.WriteLine(“良 “);else if (score = 70)Console.WriteLine(“中 “);else if (score = 60)Console.WriteLine(“及 格 “);elseConsole.WriteLine(“不 及 格 “);18 ( 20) 编 一 个 程 序 , 输 入 0 100之 间 的 一 个 学 生 成 绩 分 数 ,用 switch语 句输 出 成 绩 等 第 ( 成 绩 优 秀 ( 90-100) , 成 绩 良 好 ( 80-89) , 成 绩 及 格 ( 60-79)和 成 绩 不 及 格
16、( 59以 下 ) ) 。 ( k10032403)int score;Console.WriteLine(“请 输 入 学 生 成 绩 “);score = int.Parse(Console.ReadLine();score = score / 10;switch (score)第 13 页case 10:Console.WriteLine(“成 绩 优 秀 “);break;case 9:Console.WriteLine(“成 绩 优 秀 “);break;case 8:Console.WriteLine(“成 绩 良 好 “);break;case 7:Console.WriteLi
17、ne(“成 绩 及 格 “);break;case 6:Console.WriteLine(“成 绩 及 格 “);break;default:Console.WriteLine(“成 绩 不 及 格 “);break;19 (20)编 一 个 程 序 , 利 用 do-while 循 环 语 句 ,从 键 盘 上 输 入 10个 整 数 , 求 出它 们 的 和 。 (k10020105) int i=1,n,sum=0;doConsole.WriteLine(“请 输 入 一 个 整 数 “);n = int.Parse(Console.ReadLine();sum = sum + n;i
18、+;while(i= 0.000001);pi = s * 4;Console.WriteLine(“pi 的 值 为 : 0“,pi);22 (20)编 一 个 程 序 , 从 键 盘 上 输 入 二 个 实 数 , 使 用 Math 类 中 Max()和 Min()方 法 , 求 出 它 们 中 的 最 大 数 和 最 小 数 。 ( k10040604)double d1, d2,max,min;Console.WriteLine(“请 输 入 两 个 实 数 “);d1 = double.Parse(Console.ReadLine();d2 = double.Parse(Consol
19、e.ReadLine();max=Math.Max(d1,d2);min = Math.Min(d1,d2);Console.WriteLine(“最 大 值 为 0,最 小 值 为 1“,max,min);23 (20)编 一 个 程 序 , 利 用 while 循 环 语 句 和 Math 类 中 的 Pow()方 法 , 求 出 1到 10的 各 个 数 的 平 方 之 和 。 (k10040602)double i = 1,s=0;while (i max)max1 = max;max = s;else if (s max1)s = max1;i+;Console.WriteLine(
20、“最 大 值 为 0,次 大 值 为 1“,max,max1);28 (40)编 一 个 程 序 , 要 求 使 用 while语 句 , 输 入 用 户 名 和 密 码 , 实 现 用 户 登 录程 序 的 功 能 , 至 多 允 许 输 入 三 次 , 超 过 三 次 不 允 许 登 录 。 ( k10022507)const string UserName = “admin“;const string PassWord = “123456“;string username, password;int i=1;while(i= 0)x1 = (-b + Math.Sqrt(b * b -
21、4 * a * c) / (2 * a);x2 = (-b - Math.Sqrt(b * b - 4 * a * c) / (2 * a);Console.WriteLine(“这 个 方 程 的 两 个 根 是 0,1“, x1, x2);elseConsole.WriteLine(“这 个 方 程 没 有 解 “);33 编 一 个 程 序 , 利 用 while循 环 语 句 , 找 出 2到 100之 间 的 素 数 。 ( k10042104)int i = 2, j;bool b;Console.WriteLine(“2到 100中 的 素 数 为 : “);while (i m
22、athj)min = mathj;第 19 页sum = sum + mathj;ave = sum / math.Length;Console.WriteLine(“最 高 分 为 0,最 低 分 为 1, 平 均 分 为 2“,max,min,ave);38( 20) 编 一 个 程 序 , 利 用 for循 环 语 句 , 求 出 1!+2!+3!+.+10!的 和 。 (k10042502)int s = 0, jc = 1;for (int j = 1; j 0)sum1 += x;elsesum2 += x;Console.WriteLine(“正 数 之 和 : 0, 负 数 之
23、 和 : 1“, sum1, sum2);41.( 20) 编 一 个 程 序 , 把 一 张 1元 的 钞 票 换 成 5分 , 2分 和 1分 的 硬 币 , 要 求 每 种至 少 一 枚 , 并 且 所 换 硬 币 数 不 超 过 30枚 。 请 问 , 有 哪 几 种 换 法 ? ( k10050218)int i, j, k;Console.WriteLine(“一 分 :t二 分 :t五 分 :“);for (i = 1; i = 0; i-)Console.Write(“0 “, ai);Console.WriteLine();45 ( 40) 编 一 个 程 序 , 从 键 盘
24、 输 入 10个 实 数 , 存 入 一 个 数 组 , 用 冒 泡 法 对 这 个数 作 升 序 排 序 。 (k10040603)第 21 页int i, j, temp;const int n = 10;int SortArray = new intn;for (i = 0; i = 0; i-)for (j = 0; j SortArrayj + 1)temp = SortArrayj;SortArrayj = SortArrayj + 1;SortArrayj + 1 = temp;Console.Write(“n已 经 排 序 后 的 数 据 序 列 为 :“);for (i =
25、0; i = 1; j-)第 22 页if (aj - 1 aj)temp = aj - 1;aj - 1 = aj;aj = temp;elsebreak;Console.Write(“n依 次 输 出 数 组 中 的 值 : “);for (i = 0; i = A j-)aj = aj - 1;a0 = temp;for (int k = 0; k = 0 n = n / 2;for (j = i; j 0; j-) Console.Write(aj);Console.WriteLine();61. (40)所 谓 “ 降 序 数 ” 是 指 一 个 自 然 数 的 低 位 数 字 不
26、大 于 高 位 数 字 的 数 。 例 如 :64, 55, 321都 认 为 是 降 序 数 , 但 是 623不 是 降 序 数 。 一 位 数 字 被 认 为 是 降 序 数 。编 一 个 程 序 , 输 入 一 个 数 , 判 定 它 是 否 为 降 序 数 。 该 程 序 是 循 环 执 行 的 , 当 输 入的 数 为 0时 , 则 退 出 程 序 运 行 。 ( k10051501)int i, j, m, n;bool pos;while (true)n = -1;while (n 0)j = m % 10;m = m / 10;if (i j)pos = false;brea
27、k;第 29 页i = j;if (pos) Console.WriteLine(“0是 降 序 数 。 “, n);else Console.WriteLine(“0不 是 降 序 数 。 “, n);62 (40)所 谓 “ 回 文 数 ” 是 指 读 一 个 自 然 数 , 从 正 方 向 读 和 反 方 向 读 , 结 果 是 一样 的 。 例 如 : 646, 1551,891232198都 认 为 是 回 文 数 。 编 一 个 程 序 , 输 入 一 个 正整 数 , 判 定 它 是 否 为 回 文 数 。 当 输 入 的 数 为 0时 , 则 退 出 程 序 , 否 则 继 续
28、 循 环 执行 程 序 。 (k10051502) int s, k;int i, j;int a = new int20;bool pos;while (true)s = -1;while (s 0)i+;ai = k % 10;k = k / 10;/注 意 : 数 组 a的 长 度 为 (i+1)for (j = 0; j (i + 1) / 2; j+)if (aj != ai - j)pos = false;break;if (pos) Console.WriteLine(“0是 回 文 数 。 “, s);else Console.WriteLine(“0不 是 回 文 数 。 “
29、, s);63 (40)编 一 个 程 序 , 定 义 一 个 n行 n列 的 二 维 数 组 , 例 如 , n=4,输 入 该 数 组 的 全部 数 据 。 可 以 在 定 义 数 组 时 赋 于 常 量 值 。 求 二 维 数 组 中 这 样 元 素 的 位 置 : 它 在 行第 30 页上 是 最 小 , 在 列 上 也 是 最 小 。 ( 注 意 : 它 未 必 是 整 个 数 组 的 最 小 元 素 。 k10050904)int n = 4;int, a = 25, 12, 22, 14 , 15, 16, 17, 18 , 19, 20, 21, 13 , 23, 24, 11
30、, 26 ;int i, j, k, temp, min;Console.Write(“n二 维 数 组 : “);for (i = 0; i n; i+)Console.Write(“nt“);for (j = 0; j n; j+) Console.Write(“0 “, ai, j);Console.WriteLine(“nn 行 列 最 小 值 “);for (i = 0; i n; i+)for (j = 0; j n; j+)temp = ai, j;min = temp;/*for(k=0;kn;k+)if(ai,kmin)min=ai,k;if(ak,jmin)min=ak,j
31、;*/for (k = 0; k n; k+)if (ai, k min) min = ai, k;/在 第 i行 查 找 最 小 值for (k = 0; k n; k+)if (ak, j min) min = ak, j;/在 第 j列 查 找 最 小 值if (temp = min) Console.WriteLine(“i=0,j=1 2“, i, j, temp);64 ( 40) 给 定 一 个 m n的 数 值 矩 阵 A, 如 果 矩 阵 A中 存 在 这 样 的 一 个 元 素 Aij满 足 条 件 : Aij是 第 i行 中 值 最 小 的 元 素 , 且 又 是 第 j
32、列 中 值 最 大 的 元 素 , 则称 之 为 该 矩 阵 的 一 个 马 鞍 点 。 编 写 一 个 方 法 计 算 出 m*n的 矩 阵 A的 所 有 马 鞍 点 。( k10052302)int i, j, k, m = 4, n = 5, max, min;int, array = new int, 30, 20, 25, 40, 45 , 80, 19, 70, 90, 11 , 24, 14, 42, 91,96 , 32, 17, 82, 72, 38 ;Console.Write(“n0行 1列 的 数 值 矩 阵 为 : “);for (i = 0; i m; i+)Console.WriteLine();for (j = 0; j n; j+)Console.Write(“0 “, arrayi, j);