C语言中的循环语句练习
注:练习题目均出自《明解C语言 入门篇》
一、do语句
1,求多个整数的和及平均值
#include<stdio.h>
int main(void)
{
int sum = ; //和
int cnt = ; //整数个数
int retry; //判断是否继续
do{
int t;
printf("请输入一个整数:");
scanf("%d",&t);
sum = sum + t;
cnt = cnt + ;
printf("是否继续?<Yes...0/No...9:");
scanf("%d",&retry);
} while(retry == ); printf("和为%d,平均值为%.2f。\n",sum,(double)sum / cnt);
return ;
}

二、whie语句
1,递增显示从0到输入的正整数为止的各个整数
#include<stdio.h>
int main(void)
{
int i,n;
printf("请输入一个正整数:");
scanf("%d",&n);
i = ;
while(i <= n)
printf("%d ",i++); //i的值在显示之后递增
printf("\n"); return ;
}

2,编写一段程序,按照升序显示出小于输入值的所有正偶数
#include<stdio.h>
int main(void)
{
int i,n;
printf("请输入一个正整数:");
scanf("%d",&n);
i = ;
while(i <= n){
i = i + ;
if(i < n) //应先对递增后的值进行判断,看是否越界
printf("%d ",i);
} printf("\n"); return ;
}

3,编写一段程序,使之交替显示+和-,总个数等于所输入的整数值
#include<stdio.h>
int main(void)
{
int num;
int i=;
printf("正整数:");
scanf("%d",&num);
while (i<num) {
if (++i%)
putchar('+');
else
putchar('-');
}
return ;
}

4,逆向显示正整数
#include<stdio.h>
int main(void)
{
int n;
do{
printf("请输入一个正整数:");
scanf("%d",&n);
if(n <= )
puts("请不要输入非正整数。");
}while(n <= ); printf("该整数逆向显示的结果是 ");
while(n > ){
printf("%d", n % );
n /= ;
}
puts("。 "); return ;
}

三、for语句
1,编写一段程序,根据输入的整数,循环显示1234567890,显示的位数和输入的整数值相同
#include <stdio.h>
int main(void)
{
int i,j,n;
j=;
printf("请输入一个整数:");
scanf("%d",&n);
for(i=;i<n;i++) {
printf("%d",j);
j++;
if(j>)
j-=;
}
printf("\n");
return ;
}

2,编写一段程序,显示出身高和标准体重的对照表。注:显示的身高范围和间隔由输入的整数值进行控制,标准体重精确到小数点后两位。
#include <stdio.h>
int main() {
int beginHigh = , endHigh = ;
float weight = ;
int margin = ;
printf("开始数值(cm):");
scanf("%d", &beginHigh);
printf("结束数值(cm):");
scanf("%d", &endHigh);
printf("间隔值(cm):");
scanf("%d", &margin);
for (int i = beginHigh;i <= endHigh; i+=margin) {
weight = (i - )*0.9; //这是一个计算标准体重的公式
printf("%d cm\t\t%.2f\n", i, weight); // \t代表制表符,相当于按下一次Tab键
}
return ;
}

3,显示输入的整数值的所有约数
#include<stdio.h>
int main(void)
{
int i,n;
printf("整数值:");
scanf("%d",&n);
for(i = ;i <= n;i++)
if(n % i == )
printf("%d ",i);
putchar('\n'); return ;
}

4,编写一段程序,输入一个整数值,显示该整数值个' * '。每显示5个就进行换行。
#include<stdio.h>
int main()
{
printf("请输入整数:");
int a;
scanf("%d",&a);
int b=;
for(int i=;i<a;i++)
{
if(b==)
{
printf("\n");
b=;
}
printf("*");
b=b+;
}
}

四、多重循环
1,显示九九乘法表
#include<stdio.h>
int main(void)
{
int i,j;
for(i = ;i <= ;i++){
for(j = ;j <= ;j++)
printf("%3d",i * j);
putchar('\n');
} return ;
}

2,编写一段程序,为九九乘法表增加横纵标题
#include <stdio.h>
int main()
{
int i, j ;
//打印第一行
printf(" |") ;
for(i = ; i <= ; i++)
{
printf(" %d", i) ;
}
printf("\n") ;
//打印第二行
for(i = ; i <= ; i++)
printf("-") ;
printf("\n") ;
//开始打印99乘法表,每行开头要有行号
for(i = ; i <= ; i++)//行
{
printf(" %d |", i) ;
for(j = ; j <= ; j++)//列
{
printf(" %2d", i*j) ;
}
printf("\n") ;
}
return ;
}

3,画一个长方形
#include<stdio.h>
int main(void)
{
int i,j;
int height,width; puts("让我们来画一个长方形。");
printf("高:"); scanf("%d",&height);
printf("宽:"); scanf("%d",&width); for(i = ;i <= height;i++) { //长方形有height行
for(j = ;j <= width;j++) //每行显示width个
putchar('*');
putchar('\n'); //换行
}
return ;
}

4,(1)显示直角在左下方的等腰直角三角形
#include<stdio.h>
int main(void)
{
int i,j,len;
puts("直角在左下方的等腰直角三角形。");
printf("边长:");
scanf("%d",&len); for(i = ;i <= len;i++){
for(j = ;j <= i;j++)
putchar('*');
putchar('\n');
} return ;
}

(2)显示直角在右下方的等腰直角三角形
#include<stdio.h>
int main(void)
{
int i,j,len;
puts("直角在左下方的等腰直角三角形。");
printf("边长:");
scanf("%d",&len); for(i = ;i <= len;i++){
for(j = ;j <= len-i;j++)
putchar(' ');
for(j = ;j <= i;j++)
putchar('*');
putchar('\n');
} return ;
}
(3)显示直角在左上方的等腰直角三角形
#include <stdio.h>
int main()
{
int i,j,len;
puts("直角在左下方的等腰直角三角形。");
printf("边长:");
scanf("%d",&len); for (int i = ; i<=len; i++) {
for (int j = ; j <=len-i+; j++) {
putchar('*');
}
putchar('\n'); }
return ;
}
(4)显示直角在右上方的等腰直角三角形
#include <stdio.h>
int main()
{
int i,j,len;
puts("直角在左下方的等腰直角三角形。");
printf("边长:");
scanf("%d",&len); for (int i = ; i<=len; i++) {
for (int j = ; j <=i; j++) {
putchar(' ');
}
for (int j=; j<=len-i+; j++) {
putchar('*');
}
putchar('\n');
}
return ;
}
5,编写一段程序,输入一个整数,显示出输入整数层的金字塔形状
提示:第 i 行显示 (i - 1)* 2 + 1 个 ' * '
#include "stdio.h"
int main(int argc, char const *argv[])
{
int n;
puts("让我们来描绘一个金字塔。");
printf("金字塔有几层:"); scanf("%d",&n);
for (int i = ;i<=n; i++) {
for (int j = ; j<=n-i; j++) {
putchar(' ');
}
for (int j=;j<=i ; j++) {
putchar('*');
}
for (int j=; j<i; j++) {
putchar('*');
}
putchar('\n');
}
return ;
}

金字塔变形(1)
#include<stdio.h>
int main()
{
int i,j,n;
puts("让我们来描绘一个金字塔。");
printf("金字塔有几层:"); scanf("%d",&n);
for(i=;i<=n;i++)
{
for(j=;j<n-i;j++)
printf(" ");
for(j=;j<*i;j++)
printf("%d",i);
printf("\n");
}
return ;
}

金字塔变形(2)
#include<stdio.h>
int main()
{
int i,j,n;
puts("让我们来描绘一个金字塔。");
printf("金字塔有几层:"); scanf("%d",&n);
for(i=;i<=n;i++)
{
for(j=;j<n-i;j++)
printf(" ");
for(j=;j<=i;j++)
printf("%d",j);
for(j=i-;j>;j--)
printf("%d",j);
printf("\n");
}
}

总结
循环是C语言的基础,所以要扎实练习,孰能生巧。在此列举一些注意事项:
- 注意区分while语句和do-while语句,前者是先判断后执行,后者是先执行后判断。
- do语句的循环体至少会执行一次,而while语句的循环体则有可能一次也不会执行。
- 注意不要在for语句和while语句的()后放置空语句。
- do语句的循环体,即使是单一语句,也可以用{ }括起来使之成为复合语句(程序块),这样程序会易读。
C语言中的循环语句练习的更多相关文章
- C语言中嵌入式SQL语句
原文:[转载]C语言中嵌入式SQL语句 http://blog.csdn.net/cnlht/archive/2007/12/12/1930960.aspx原文地址 实验内容: 掌握SQL Serve ...
- 怎么绘制C语言选择和循环语句的思维导图
C语言是一门非常基础的计算机语言,是大部分本科学生的公共专业,在C语言的学习中,选择和循环语句是至关重要的部分,利用思维导图可以有效节约时间并加深知识点记忆. 接下来就为大家介绍一下我用iMindMa ...
- js中的循环语句
js中的循环语句可分为三种:1.while:2.do……while:3.for. while的语法为 while (exp) { //statements;} var a=1,b=0; whil ...
- shell脚本中select循环语句用法
shell脚本中select循环语句 1. 脚本中select的语法格式 select VAR in LIST do command1 command2 ... ... commandN done s ...
- 在c语言中嵌入汇编语句,对于我来说相当难。
今天早上在csdn论坛上看到一个帖子http://topic.csdn.net/u/20120917/14/82f42e17-977a-4824-95bd-7b79db15d283.html:“C语言 ...
- 单片机c语言教程:C51循环语句
单片机c语言教程第十三课 C51循环语句 循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 ...
- 详解Python中的循环语句的用法
一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...
- C语言中的循环结构与选择结构
1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...
- Swift中的循环语句
循环语句能够使程序代码重复执行.Swift编程语言支持4种循环构造类型:while.do while.for和for in.for和while循环是在执行循环体之前测试循环条件,而do while是在 ...
随机推荐
- Flink connectedstreams
https://stackoverflow.com/questions/40613684/apache-flink-scope-of-valuestate-in-connectedstreams ht ...
- C++ 风格与技术 FAQ(中文版)
Bjarne Stroustrup 的 C++ 风格与技术 FAQ(中文版) 原作:Bjarne Stroustrup 翻译:Antigloss 译者的话:尽管我已非常用心,力求完美,但受水平所 ...
- (原创)用c++11打造类似于python的range
python中的range函数表示一个连续的有序序列,range使用起来很方便,因为在定义时就隐含了初始化过程,因为只需要给begin()和end()或者仅仅一个end(),就能表示一个连续的序列.还 ...
- GCC Reference
本文简单整理了GCC编译的命令项,可作为后续使用的参考. 编译 本文以GCC为主,默认编译*.c的c语言源代码. 源文件->可执行文件 gcc -Wall test.c -o test gcc ...
- shell格式化字符串
假如你有以下代码: TEMP_SQL="SELECT count(uid) from ${TABLE_PREFIX}_%s;" SUM= for((i=${MIN};i<${ ...
- QQ通信原理及QQ是怎么穿透内网进行通信的?
http://blog.csdn.net/frank_good/article/details/51160027 ******************************************* ...
- Python3.5爬取豆瓣电视剧数据并且同步到mysql中
#!/usr/local/bin/python # -*- coding: utf-8 -*- # Python: 3.5 # Author: zhenghai.zhang@xxx.com # Pro ...
- Logistic回归分析简介
Logistic回归:实际上属于判别分析,因拥有很差的判别效率而不常用. 1. 应用范围: ① 适用于流行病学资料的危险因素分析 ② 实验室中药物的剂量-反应关系 ③ 临床试验 ...
- phpMyadmin各版本漏洞
一: 影响版本:3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG 概述:PhpMyAdmin存在PREGREPLACEEVAL漏洞 利用模块: ...
- 使用 WebSphere ILOG JRules 开发保险应用系统
使用 WebSphere ILOG JRules 开发保险应用系统 概述 保险行业在国内是一个充分竞争的行业,竞争的加剧导致保险公司的业务管理等各项费用在增长.而保险公司业务支撑系统的先进性与灵活支撑 ...