注:练习题目均出自《明解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. lua 工具类(二)

    local tonumber_ = tonumber function tonumber(v, base) end function toint(v) return math.round(tonumb ...

  2. SECURITY ONION:防御领域的kali

    https://securityonion.net/ Security Onion is a free and open source Linux distribution for intrusion ...

  3. IIS写权限漏洞 (HTTP PUT方法利用)

    该漏洞的产生原因来源于服务器配置不当造成,利用IIS PUT Scaner扫描有漏洞的iis,此漏洞主要是因为服务器开启了 webdav的组件导致的可以扫描到当前的操作,具体操作其实是通过webdav ...

  4. 【多线程】死锁与Java栈跟踪工具

    今天面试有一道题,写一个死锁的程序,自己也是短路了,没写出来,回来写下. 死锁常见的情况是A线程持有a锁.阻塞于b锁,B线程持有b锁,阻塞于a锁,形成一个循环阻塞的状态. import java.ut ...

  5. golang遇到的win下读取txt字符乱码的问题

    import ( "encoding/csv" "os" "github.com/axgle/mahonia" ) // GetCSV 读取 ...

  6. mysql load本地文件失败,提示access denied

    mysql load本地文件失败,提示access denied 解决方式 直接谷歌到stackoverflow,解决方式如下 mysql -u myuser -p --local-infile so ...

  7. CentOS6.5 安装Nexus配置Maven私服

    1.下载Nexus的tar包,链接地址.注意,3.x版本需要JDK版本1.8及以上版本. 2.创建安装包存放目录 命令:mkdir -p /usr/local/src/installs 3.rz或者f ...

  8. java阻塞队列与非阻塞队列

    在并发编程中,有时候需要使用线程安全的队列.如果要实现一个线程安全的队列有两种方式:一种是使用阻塞算法,另一种是使用非阻塞算法. //使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入 ...

  9. 转:安装Chrome不成功,显示代码为“0xa0430721”的解决办法

    转自:https://www.douban.com/note/475994923/ Step1: Open your Application Data Folder. For Windows XP: ...

  10. 1. pyhanlp介绍和简单应用

    1. pyhanlp介绍和简单应用 2. 观点提取和聚类代码详解 1. 前言 中文分词≠自然语言处理! 中文分词只是第一步:HanLP从中文分词开始,覆盖词性标注.命名实体识别.句法分析.文本分类等常 ...