注:练习题目均出自《明解C语言 入门篇》
一、do语句
1,求多个整数的和及平均值
#include
int main(void)
{int sum = 0; //和
int cnt = 0; //整数个数
int retry; //判断是否继续
do{intt;
printf("请输入一个整数:");
scanf("%d",&t);
sum= sum +t;
cnt= cnt + 1;
printf("是否继续?
scanf("%d",&retry);
}while(retry == 0);
printf("和为%d,平均值为%.2f。n",sum,(double)sum /cnt);return 0;
}
二、whie语句
1,递增显示从0到输入的正整数为止的各个整数
#include
int main(void)
{inti,n;
printf("请输入一个正整数:");
scanf("%d",&n);
i= 0;while(i <=n)
printf("%d",i++); //i的值在显示之后递增
printf("n");return 0;
}
2,编写一段程序,按照升序显示出小于输入值的所有正偶数
#include
int main(void)
{inti,n;
printf("请输入一个正整数:");
scanf("%d",&n);
i= 0;while(i <=n){
i= i + 2;if(i < n) //应先对递增后的值进行判断,看是否越界
printf("%d",i);
}
printf("n");return 0;
}
3,编写一段程序,使之交替显示+和-,总个数等于所输入的整数值
#include
int main(void)
{intnum;int i=0;
printf("正整数:");
scanf("%d",&num);while (i
putchar('+');elseputchar('-');
}return 0;
}
4,逆向显示正整数
#include
int main(void)
{intn;do{
printf("请输入一个正整数:");
scanf("%d",&n);if(n <= 0)
puts("请不要输入非正整数。");
}while(n <= 0);
printf("该整数逆向显示的结果是");while(n > 0){
printf("%d", n % 10);
n/= 10;
}
puts("。");return 0;
}
三、for语句
1,编写一段程序,根据输入的整数,循环显示1234567890,显示的位数和输入的整数值相同
#include
int main(void)
{inti,j,n;
j=1;
printf("请输入一个整数:");
scanf("%d",&n);for(i=0;i
printf("%d",j);
j++;if(j>9)
j-=10;
}
printf("n");return 0;
}
2,编写一段程序,显示出身高和标准体重的对照表。注:显示的身高范围和间隔由输入的整数值进行控制,标准体重精确到小数点后两位。
#include
intmain() {int beginHigh = 0, endHigh = 0;float weight = 0;int margin = 0;
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 - 100)*0.9; //这是一个计算标准体重的公式
printf("%d cmtt%.2fn", i, weight); //t代表制表符,相当于按下一次Tab键
}return 0;
}
3,显示输入的整数值的所有约数
#include
int main(void)
{inti,n;
printf("整数值:");
scanf("%d",&n);for(i = 1;i <= n;i++)if(n % i == 0)
printf("%d",i);
putchar('n');return 0;
}
4,编写一段程序,输入一个整数值,显示该整数值个' * '。每显示5个就进行换行。
#include
intmain()
{
printf("请输入整数:");inta;
scanf("%d",&a);int b=0;for(int i=0;i
{if(b==5)
{
printf("n");
b=0;
}
printf("*");
b=b+1;
}
}
四、多重循环
1,显示九九乘法表
#include
int main(void)
{inti,j;for(i = 1;i <= 9;i++){for(j = 1;j <= 9;j++)
printf("%3d",i *j);
putchar('n');
}return 0;
}
2,编写一段程序,为九九乘法表增加横纵标题
#include
intmain()
{inti, j ;//打印第一行
printf("|") ;for(i = 1; i <= 9; i++)
{
printf("%d", i) ;
}
printf("n") ;//打印第二行
for(i = 1; i <= 32; i++)
printf("-") ;
printf("n") ;//开始打印99乘法表,每行开头要有行号
for(i = 1; i <= 9; i++)//行
{
printf("%d |", i) ;for(j = 1; j <= 9; j++)//列
{
printf("%2d", i*j) ;
}
printf("n") ;
}return 0;
}
3,画一个长方形
#include
int main(void)
{inti,j;intheight,width;
puts("让我们来画一个长方形。");
printf("高:"); scanf("%d",&height);
printf("宽:"); scanf("%d",&width);for(i = 1;i <= height;i++) { //长方形有height行
for(j = 1;j <= width;j++) //每行显示width个
putchar('*');
putchar('n'); //换行
}return 0;
}
4,(1)显示直角在左下方的等腰直角三角形
#include
int main(void)
{inti,j,len;
puts("直角在左下方的等腰直角三角形。");
printf("边长:");
scanf("%d",&len);for(i = 1;i <= len;i++){for(j = 1;j <= i;j++)
putchar('*');
putchar('n');
}return 0;
}
(2)显示直角在右下方的等腰直角三角形
#include
int main(void)
{inti,j,len;
puts("直角在左下方的等腰直角三角形。");
printf("边长:");
scanf("%d",&len);for(i = 1;i <= len;i++){for(j = 1;j <= len-i;j++)
putchar(' ');for(j = 1;j <= i;j++)
putchar('*');
putchar('n');
}return 0;
}
(3)显示直角在左上方的等腰直角三角形
#include
intmain()
{inti,j,len;
puts("直角在左下方的等腰直角三角形。");
printf("边长:");
scanf("%d",&len);for (int i = 1; i<=len; i++) {for (int j = 1; j <=len-i+1; j++) {
putchar('*');
}
putchar('n');
}return 0;
}
(4)显示直角在右上方的等腰直角三角形
#include
intmain()
{inti,j,len;
puts("直角在左下方的等腰直角三角形。");
printf("边长:");
scanf("%d",&len);for (int i = 1; i<=len; i++) {for (int j = 1; j <=i; j++) {
putchar(' ');
}for (int j=1; j<=len-i+1; j++) {
putchar('*');
}
putchar('n');
}return 0;
}
5,编写一段程序,输入一个整数,显示出输入整数层的金字塔形状
提示:第 i 行显示 (i - 1)* 2 + 1 个 ' * '
#include "stdio.h"
int main(int argc, char const *argv[])
{intn;
puts("让我们来描绘一个金字塔。");
printf("金字塔有几层:"); scanf("%d",&n);for (int i = 1;i<=n; i++) {for (int j = 1; j<=n-i; j++) {
putchar(' ');
}for (int j=1;j<=i ; j++) {
putchar('*');
}for (int j=1; j
putchar('*');
}
putchar('n');
}return 0;
}
金字塔变形(1)
#include
intmain()
{inti,j,n;
puts("让我们来描绘一个金字塔。");
printf("金字塔有几层:"); scanf("%d",&n);for(i=1;i<=n;i++)
{for(j=0;j
printf(" ");for(j=1;j<2*i;j++)
printf("%d",i);
printf("n");
}return 0;
}
金字塔变形(2)
#include
intmain()
{inti,j,n;
puts("让我们来描绘一个金字塔。");
printf("金字塔有几层:"); scanf("%d",&n);for(i=1;i<=n;i++)
{for(j=0;j
printf(" ");for(j=1;j<=i;j++)
printf("%d",j);for(j=i-1;j>0;j--)
printf("%d",j);
printf("n");
}
}
总结
循环是C语言的基础,所以要扎实练习,孰能生巧。在此列举一些注意事项:
注意区分while语句和do-while语句,前者是先判断后执行,后者是先执行后判断。
do语句的循环体至少会执行一次,而while语句的循环体则有可能一次也不会执行。
注意不要在for语句和while语句的()后放置空语句。
do语句的循环体,即使是单一语句,也可以用{ }括起来使之成为复合语句(程序块),这样程序会易读。
内容来源于网络如有侵权请私信删除