注:练习题目均出自《明解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语言中的循环语句练习的更多相关文章

  1. C语言中嵌入式SQL语句

    原文:[转载]C语言中嵌入式SQL语句 http://blog.csdn.net/cnlht/archive/2007/12/12/1930960.aspx原文地址 实验内容: 掌握SQL Serve ...

  2. 怎么绘制C语言选择和循环语句的思维导图

    C语言是一门非常基础的计算机语言,是大部分本科学生的公共专业,在C语言的学习中,选择和循环语句是至关重要的部分,利用思维导图可以有效节约时间并加深知识点记忆. 接下来就为大家介绍一下我用iMindMa ...

  3. js中的循环语句

    js中的循环语句可分为三种:1.while:2.do……while:3.for. while的语法为 while (exp) {    //statements;} var a=1,b=0; whil ...

  4. shell脚本中select循环语句用法

    shell脚本中select循环语句 1. 脚本中select的语法格式 select VAR in LIST do command1 command2 ... ... commandN done s ...

  5. 在c语言中嵌入汇编语句,对于我来说相当难。

    今天早上在csdn论坛上看到一个帖子http://topic.csdn.net/u/20120917/14/82f42e17-977a-4824-95bd-7b79db15d283.html:“C语言 ...

  6. 单片机c语言教程:C51循环语句

    单片机c语言教程第十三课 C51循环语句 循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 ...

  7. 详解Python中的循环语句的用法

    一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...

  8. C语言中的循环结构与选择结构

    1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...

  9. Swift中的循环语句

    循环语句能够使程序代码重复执行.Swift编程语言支持4种循环构造类型:while.do while.for和for in.for和while循环是在执行循环体之前测试循环条件,而do while是在 ...

随机推荐

  1. Flink connectedstreams

    https://stackoverflow.com/questions/40613684/apache-flink-scope-of-valuestate-in-connectedstreams ht ...

  2. C++ 风格与技术 FAQ(中文版)

    Bjarne Stroustrup 的 C++ 风格与技术 FAQ(中文版) 原作:Bjarne Stroustrup    翻译:Antigloss 译者的话:尽管我已非常用心,力求完美,但受水平所 ...

  3. (原创)用c++11打造类似于python的range

    python中的range函数表示一个连续的有序序列,range使用起来很方便,因为在定义时就隐含了初始化过程,因为只需要给begin()和end()或者仅仅一个end(),就能表示一个连续的序列.还 ...

  4. GCC Reference

    本文简单整理了GCC编译的命令项,可作为后续使用的参考. 编译 本文以GCC为主,默认编译*.c的c语言源代码. 源文件->可执行文件 gcc -Wall test.c -o test gcc ...

  5. shell格式化字符串

    假如你有以下代码: TEMP_SQL="SELECT count(uid) from ${TABLE_PREFIX}_%s;" SUM= for((i=${MIN};i<${ ...

  6. QQ通信原理及QQ是怎么穿透内网进行通信的?

    http://blog.csdn.net/frank_good/article/details/51160027 ******************************************* ...

  7. Python3.5爬取豆瓣电视剧数据并且同步到mysql中

    #!/usr/local/bin/python # -*- coding: utf-8 -*- # Python: 3.5 # Author: zhenghai.zhang@xxx.com # Pro ...

  8. Logistic回归分析简介

    Logistic回归:实际上属于判别分析,因拥有很差的判别效率而不常用. 1. 应用范围: ①     适用于流行病学资料的危险因素分析 ②     实验室中药物的剂量-反应关系 ③     临床试验 ...

  9. phpMyadmin各版本漏洞

    一: 影响版本:3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG 概述:PhpMyAdmin存在PREGREPLACEEVAL漏洞 利用模块: ...

  10. 使用 WebSphere ILOG JRules 开发保险应用系统

    使用 WebSphere ILOG JRules 开发保险应用系统 概述 保险行业在国内是一个充分竞争的行业,竞争的加剧导致保险公司的业务管理等各项费用在增长.而保险公司业务支撑系统的先进性与灵活支撑 ...