C语言中的循环语句练习

时间:2021-11-23 17:53:02

注:练习题目均出自《明解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 ;
}

C语言中的循环语句练习

二、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 ;
}

C语言中的循环语句练习

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 ;
}

C语言中的循环语句练习

3,编写一段程序,使之交替显示+和-,总个数等于所输入的整数值

#include<stdio.h>
int main(void)
{
int num;
int i=;
printf("正整数:");
scanf("%d",&num);
while (i<num) {
if (++i%)
putchar('+');
else
putchar('-');
}
return ;
}

C语言中的循环语句练习

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 ;
}

C语言中的循环语句练习

三、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 ;
}

C语言中的循环语句练习

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 ;
}

C语言中的循环语句练习

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 ;
}

C语言中的循环语句练习

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+;
}
}

C语言中的循环语句练习

四、多重循环

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 ;
}

C语言中的循环语句练习

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 ;
}

C语言中的循环语句练习

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 ;
}

C语言中的循环语句练习

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 ;
}

C语言中的循环语句练习

(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 ;
}

C语言中的循环语句练习

金字塔变形(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 ;
}

C语言中的循环语句练习

金字塔变形(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语言中的循环语句练习

总结

循环是C语言的基础,所以要扎实练习,孰能生巧。在此列举一些注意事项:

  • 注意区分while语句和do-while语句,前者是先判断后执行,后者是先执行后判断。
  • do语句的循环体至少会执行一次,而while语句的循环体则有可能一次也不会执行。
  • 注意不要在for语句和while语句的()后放置空语句。
  • do语句的循环体,即使是单一语句,也可以用{ }括起来使之成为复合语句(程序块),这样程序会易读。