1.

编写一个简单的23 根火柴游戏程序,实现人跟计算机玩这个游戏的程序。
为了方便程序自动评测,假设计算机移动的火柴数不是随机的,而是将剩余的火柴根数减1后对4求余来计算,如果计算结果为0,则取走1根。
游戏规则是:
1、两个游戏者开始拥有23 根火柴棒;
2、每个游戏者轮流移走1 根、2根或3根火柴;
3、谁取走最后一根火柴为失败者。
程序一次运行示例如下:
这里是23根火柴游戏!!
注意:最大移动火柴数目为三根
请输入移动的火柴数目:
3
您移动的火柴数目为:3
您移动后剩下的火柴数目为:20
计算机移动的火柴数目为:3
计算机移动后剩下的火柴数目为:17
请输入移动的火柴数目:
2
您移动的火柴数目为:2
您移动后剩下的火柴数目为:15
计算机移动的火柴数目为:2
计算机移动后剩下的火柴数目为:13
请输入移动的火柴数目:
3
您移动的火柴数目为:3
您移动后剩下的火柴数目为:10
计算机移动的火柴数目为:1
计算机移动后剩下的火柴数目为:9
请输入移动的火柴数目:
1
您移动的火柴数目为:1
您移动后剩下的火柴数目为:8
计算机移动的火柴数目为:3
计算机移动后剩下的火柴数目为:5
请输入移动的火柴数目:
2
您移动的火柴数目为:2
您移动后剩下的火柴数目为:3
计算机移动的火柴数目为:2
计算机移动后剩下的火柴数目为:1
请输入移动的火柴数目:
3
您移动的火柴数目为:3
您移动后剩下的火柴数目为:-2
对不起!您输了!补充说明:
如果输入的火柴数超过3,则输出"对不起!您输入了不合适的数目,请点击任意键重新输入!\n",如果玩家赢了,则输出"恭喜您!您赢了! \n"
#include <stdio.h>int iSum = 23;
int iPlayer;
int iComputer;
int iRes = 23;int main (void)
{printf ("这里是23根火柴游戏!!\n");printf ("注意:最大移动火柴数目为三根\n");while (1){printf ("请输入移动的火柴数目:\n");scanf ("%d", &iPlayer);while (iPlayer > 3 || iPlayer <= 0){printf ("对不起!您输入了不合适的数目,请点击任意键重新输入!\n");printf ("请输入移动的火柴数目:\n");scanf ("%d", &iPlayer);}printf ("您移动的火柴数目为:%d\n", iPlayer);iRes -= iPlayer;printf ("您移动后剩下的火柴数目为:%d\n", iRes);if (iRes <= 0){printf ("对不起!您输了! \n");return 0;}iComputer = ((iRes - 1) % 4 == 0) ? 1 : ((iRes - 1) % 4);printf ("计算机移动的火柴数目为:%d\n", iComputer);iRes -= iComputer;printf ("计算机移动后剩下的火柴数目为:%d\n", iRes);if (iRes == 0){printf ("恭喜您!您赢了! \n");return 0;}}
}

(PS: 尝试一下赢过电脑 :D)

2.

程序模拟简单运算器的工作:输入一个算式(没有空格),遇等号'='说明输入结束,输出结果。假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。例如输入"1+2*10-10/2="后,输出10。
**输出格式要求:"%d" 出错提示信息:"错误的运算符:%c"
程序运行示例如下:
1+2*10-10/2=    <===此行为输入
10              <===此行为输出
#include <stdio.h>
#include <stdbool.h>bool bFlag = true;int main (void)
{int iAns;int iPut;char ch;scanf ("%d", &iAns);while ((ch = getchar ()) != '='){scanf ("%d", &iPut);if (iPut == 0 && ch == '/'){bFlag = false;break;}switch (ch){case '+':iAns += iPut;break;case '-':iAns -= iPut;break;case '*':iAns *= iPut;break;case '/':iAns /= iPut;break;default :bFlag = false;break;}if (bFlag == false){break;}}if (bFlag == false){printf("错误的运算符:%c", ch);}else{printf ("%d", iAns);}return 0;
}

3.

*输出正六边型。编写程序输出连长为N的空心正六边型,其边由‘*’组成。
**输入格式要求:"%d"  提示信息:"Enter length:"
**输出格式要求:"%c"
程序运行示例如下:
Enter length:5******     **       **         *
*           **         **       **     ******
#include<stdio.h>int main (void)
{int n;printf ("Enter length:");scanf("%d", &n);int i, j;for (i = 1; i <= (2 * n - 1); i++){if (i == 1 || i == (2 * n - 1)){for (j = 1; j <= (2 * n - 1); j ++){(j < n) ? printf(" ") : printf("*");}}if (i>1 && i <= n){for (j = 1; j <= (2 * n + i - 2); j ++){(j == (n - i + 1) || j == (2 * n + i - 2)) ? printf("*") : printf(" ");}}if (i > n && i < (2 * n - 1)){for (j = 1; j <= (4 * n - i - 2); j ++){(j == (i + 1 - n) || j == (4 * n - i - 2)) ? printf("*") : printf(" ");}}printf("\n");}return 0;
}

4.

从键盘输入1行字符串(每行最多输入80个字符),
统计字符串中所包含的各个英文小写字符及其对应的数量。
**输入格式要求:不要有任何提示信息,直接输入1行字符。
**输出格式要求:按字母顺序输出统计结果,"%c=%d\n"
每行输出一个字母的统计信息。
如果某个字母没有出现,则不输出该字母的统计信息。
如:输入字符串:
abc2ed a7bcdcd
则输出:
a=2
b=2
c=3
d=3
e=1
#include<stdio.h>
#include<string.h>#define MAXN 80int main (void)
{char letter[26]; // 存放小写字母char str[MAXN];int book[26] = {0}; // 记录出现次数int i, j;for (i = 0; i < 26; i++){letter[i] = 'a' + i;}while ((gets(str))){for (i = 0; i <= MAXN; i ++){if (str[i] == '\0'){break;}else{for (j = 0; j < 26; j ++){if (str[i] == letter[j]){book[j] ++;}}}}for (i = 0; i < 26; i ++){if (book[i] != 0){printf("%c=%d\n", letter[i], book[i]);}}}return 0;
}

5.

程序改错-3
从键盘任意输入两个符号各异的整数,直到输入的两个整数满足要求为止,然后打印这两个数。请通过测试找出下面这个程序存在的问题(不止一个问题哦),并改正。同时用下面给出的运行结果示例检查修改后的程序。

#include <stdio.h>

int main()

{

    int x1, x2;

    do

    {

        printf("Input x1, x2:");

        scanf("%d,%d", &x1, &x2);

    }

    while (x1 * x2 > 0);

    printf("x1=%d,x2=%d\n", x1, x2);

    return 0;

}

程序正确的运行结果示例:
Input x1, x2:
a,s↙
Input x1, x2:
a,1↙
Input x1, x2:
2,s↙
Input x1, x2:
1,2↙
Input x1, x2:
-1,-2↙
Input x1, x2:
0,3↙
Input x1, x2:
1.2,3.4↙
Input x1, x2:
1.2,5↙
Input x1, x2:
-1,3↙
x1=-1,x2=3输入格式: "%d,%d"
输入提示信息:"Input x1, x2:\n"
输出格式:"x1=%d,x2=%d\n"
#include <stdio.h>int main (void)
{int x1, x2;int flag = 0;do{printf("Input x1, x2:\n");flag = scanf("%d,%d", &x1, &x2);while (getchar() != '\n');}while((flag != 2) || (x1 * x2 >= 0 ));printf("x1=%d,x2=%d\n",x1,x2);return 0;
}

6.

写一个程序显示如下的金字塔树:**********************
*******|
===V===树的特点是由一系列逐渐增加的层构成。上面显示的树有3层,最后一行的=数量分别左右各3个。例如,两层时显示下面的结果:********
*****|
==V==
要求程序从键盘输入层数(最后一行的=数量随着树的层数增加)。**输入格式要求:"%d" 提示信息:"请输入树的层数:"
#include <stdio.h>void LeafPrint (int row, int n);
void TailPrint (int row);int main (void)
{int n;printf ("请输入树的层数:");scanf ("%d", &n);int row = 2;while (row <= n + 1){LeafPrint (row, n);row ++;}if (n == 1){LeafPrint (2, 2);}TailPrint (n);return 0;
}void
LeafPrint (int row, int n)
{int i, j, k, x;for (i = 1; i <= row; i ++){   // 前空格for (x = 0; x < n - row + 1; x ++){printf (" ");}for (j = 1; j <= row - i; j ++){printf(" ");        } for (k = 1; k <= 2 * i - 1; k ++){   printf("*");}printf("\n");          }
}void
TailPrint (int row)
{int i;for (i = 0; i < row; i ++){printf (" ");}printf ("|\n");for (i = 0; i < 2 * row + 1; i ++){if (i == row){printf ("V");}else{printf ("=");}}
}

7.

猴子吃桃程序_扩展2
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。同时还要增加对用户输入数据的合法性验证(如:不允许输入的天数是0和负数)程序运行结果示例:
Input days:
0↙
Input days:
-5↙
Input days:
a↙
Input days:
3↙
x=10输入格式:"%d"
输出格式:
输入提示信息:"Input days:\n"
输出:"x=%d\n"
#include<stdio.h>int peachSum (int day);int main (void)
{int day;int flag;do{printf ("Input days:\n");flag = scanf ("%d", &day);while (getchar () != '\n');}while (day <= 0 || flag != 1);printf ("x=%d\n", peachSum (day));return 0;
}int
peachSum (int day)
{if (day == 1){return 1;}else{return (peachSum (day - 1) + 1) * 2;}
}

8.

计算1-1/2+1/3-1/4+...+1/99-1/100+...,直到最后一项的绝对值小于1e-4为止。
**输出格式要求:"sum = %f\n"
#include <stdio.h>#define EPS 1.0e-4int main (void)
{double sum = 0.0;int sign = -1;double part = 0;int i = 1;do{part = 1.0 / i;sign = -sign;sum += part * sign;i ++;}while (part > EPS);printf ("sum = %f\n", sum);return 0;
}

9.

*对输入的行和字符进行计数。在计算机中,一行是以一个回车符\n作为行结束标记的,这样在程序中可以通过搜索\n对行进行计数。在UNIX操作系统中,一般有ctrl+d作为文件结束标记,其字符码为-1.当输入ctrl+d时表示文件输入结束,停止计数。在C语言中,以EOF(End Of File)作为文件结束标志
**输出格式要求:"chars=%d, lines=%d\n"
#include <stdio.h>int main (void)
{int lines = 0;int chars = 0;char ch;while ((ch = getchar ()) != EOF){chars ++;if (ch == '\n'){lines ++;}}printf ("chars=%d, lines=%d\n", chars, lines);return 0;
}

困难——循环控制结构相关推荐

  1. Java语言的循环控制结构

    Java语言的循环控制结构 循环控制结构:是在一定条件下,反复执行某段程序的流程结构,被反复执行的程序称为循环体.循环控制结构是程序中非常重要和基本的一种结构,它是由循环语句来实现的. Java 的循 ...

  2. 循环控制结构程序05 - 零基础入门学习C语言20

    第五章:循环控制结构程序05 让编程改变世界 Change the world by program break和continue语句 break语句 break语句可以用来从循环体内跳出循环体,即提 ...

  3. c语言奇数正偶数负,C语言二级考试练习题循环控制结构(二)

    <C语言二级考试练习题循环控制结构(二)>由会员分享,可在线阅读,更多相关<C语言二级考试练习题循环控制结构(二)(21页珍藏版)>请在人人文库网上搜索. 1.1)具有以下程序 ...

  4. Day1:C语言循环控制结构例题之求sinx近似值

    利用sinx,计算sinx的值,直到最后一项的绝对值小于时为止. 首先,分析一下这个题.题目要求得出sinx的近似值,如果对C语言的数学函数有所了解的话,第一时间想到的应该是C语言中已经有了求sinx ...

  5. c语言中三种常用的循环控制结构是,三C语言的基本控制结构.ppt

    三C语言的基本控制结构 第三章 C语言的基本控制结构 问题 一元二次方程根求解算法描述 3.1 程序的三种控制结构 ⒊循环结构Repetition ⒋复合语句 CompoundStatement 3. ...

  6. python的循环控制结构是什么_7.Python控制和循环结构

    7.1 Python条件语句 • Python编程if 语句用于控制程序的执行,基本形式为:if 判断条件: -- 执行语句-- else: -- 执行语句-- 7.2 Python条件表达式if-e ...

  7. java的循环控制结构有哪些_java中的控制结构(if,循环)详解

    1 说明JAVA语言中三种控制循环结构的代码形式(其他 1. while(condition){ statements; } 其中,condition是任何布尔表达式,其返回值为true 或 fals ...

  8. python的循环控制结构_Python的控制结构之For、While、If循环问题

    传统Python语言的主要控制结构是for循环.然而,需要注意的是for循环在Pandas中不常用,因此Python中for循环的有效执行并不适用于Pandas模式.一些常见控制结构如下. for循环 ...

  9. linux循环控制结构,Linux Shell 之 Shell 基本控制结构(二)(循环结构)

    与其他编程语言类似,Shell支持for循环,和while 循环. 1.for 循环 for循环一般格式为: for 变量 in 列表 do command1 command2 ... command ...

最新文章

  1. php 修改数据库表的字段的值
  2. Nat. Med.:iHMP之“微生物组与早产”
  3. 数字预失真技术基本原理
  4. c++11 call_once 使用方法
  5. 比神经网络更高级的算法,人工神经网络是算法吗
  6. 关于昆仑通态通道处理设置
  7. 通达信自编的选股公式如何使用
  8. PM_10 十大管理之项目沟通管理(七)和干系人管理(八)
  9. 什么是DNS云解析?云解析有哪些特点?
  10. yum 与pip区别
  11. 大学一年级计算机应用课程,计算机应用*的课程教学计划
  12. seo php,SEO技术:PHP页面的SEO优化
  13. 服务器之间如何传输数据
  14. 计算机视觉方向相关文献下载
  15. SSDP 简单服务发现协议
  16. 神经网络输入图片大小,神经网络 图像相似度
  17. GERL 2020 (WWW)Graph Enhanced Representation Learning for News Recommendation
  18. Mockito 框架用于单元测试
  19. 美度舵手系列多功能计时腕表伴你行走世界
  20. 路径追踪 SAH优化的Bvh

热门文章

  1. 计算机毕业设计SSM办公用品管理系统【附源码数据库】
  2. morris蠕虫病毒
  3. VS 链接问题 warning C4273: dll 链接不一致
  4. 近端梯度下降与软阈值迭代:PGD and ISTA
  5. Linux C高阶(5)arm架构函数帧栈分析
  6. 电视信号冷知识——电视测试图像
  7. 应用系统负载分析与磁盘容量预测
  8. 生活小常识 [ 光影人像 东海陈光剑 的博客 ]
  9. 机械臂单关节模型与控制
  10. php资产探查,FuelPHP-探查器