您的位置:首页 > 编程语言 > C语言/C++

黑马程序员——c语言基础:循环结构练习

2015-05-13 22:42 267 查看

1.while 循环练习

1) 统计从键盘输入的一行字符的个数。

#include <stdio.h>

int main(int argc,
const char * argv[]) {

//
定义变量储存字符

char ch;

//
定义字符个数计数器

int count = 0;

//
提示用户输入一行字符

printf("请输入一行字符:\n");

//
接收用户输入的字符

scanf("%c", &ch);

//
统计字符个数

while (ch != '\n') {
count ++;
// 计数器+1

//
继续取下一个字符

scanf("%c", &ch);
// scanf原理:如果缓冲区不为空,不会让用户输入内容,而是直接从缓冲区获取
}

//
输出字符个数

printf("字符个数为:%d\n",count);

return 0;
}

2) 用while语句计算从1加到100的值。

#include <stdio.h>

int main(int argc,
const char * argv[]) {

//
定义变量存放当前用于计算的数和计算结果

int i = 1;

int sum = 0;

//
计算从1加到100的值

while (i <= 100) {
sum += i;
i ++;
}

//
打印计算结果

printf("从1加到100的值为:%d",sum);

return 0;
}

3) 使用while循环实现 w(上) s(下) a(左)
d(右) 方向控制以及 q(退出)。

#include <stdio.h>

int main(int argc,
const char * argv[]) {

//
定义变量储存用户的命令

char command;

//
提示用户输入命令

printf("请输入命令: w.上 s.下
a.左 d.右 q.退出\n");

//
执行命令

int flag = 1;

while (flag) {
// 只要flag不为0,就会一直循环

//
接收用户输入的命令

scanf("%c", &command);

switch (command) {
// 判断用户输入的命令

case 'w':

case 'W':

printf("上\n");
// 上

break;

case 's':

case 'S':

printf("下\n");
// 下

break;

case 'a':

case 'A':

printf("左\n");
// 左

break;

case 'd':

case 'D':

printf("右\n");
// 右

break;

case 'q':

case 'Q':

printf("程序已退出\n");
// 退出
flag =
0;

break;

default:

break;
}
}

return 0;
}

4) 使用随机数随机产生一个1-1000的数,让用户猜10次,并打印每次猜的结果。

#include <stdio.h>

#include <stdlib.h>

int main(int argc,
const char * argv[]) {

//
定义变量

int randomNum; //
随机数

int guessNum; //
用户猜的数

int times = 1;
// 用户当前是第几次输入

int chance = 9;
// 用户还有几次机会

//
产生一个1-1000的随机数
randomNum =
arc4random_uniform(1000) +
1;

//
让用户猜

while (chance >
0) {
// 只要chance大于0,就会一直循环

//
提示用户输入

printf("当前是第%d次输入,你还有%d次机会\n",
times, chance);

//
接收用户输入的数

scanf("%d", &guessNum);

//
用户输入的数和电脑产生的随机数进行比较

if (guessNum > randomNum) {
// 猜的数比随机数大

printf("对不起,你猜大了!\n");
}
else if (guessNum < randomNum){
// 猜的数比随机数小

printf("对不起,你猜小了\n");
}
else { // 猜的数与随机数相等

printf("恭喜你,你猜对了!\n");

return 0;
// 如果猜对,退出循环
}
times ++;
chance --;
}

//
如果10次都没猜对

printf("我靠,10次都没有猜对,你的智商不适合玩这个游戏!\n");

return 0;
}

2.do-while循环

1)计算1+2+3+...+100的结果。

#include <stdio.h>

int main(int argc,
const char * argv[]) {

int i = 1;

int sum = 0;

do {
sum += i;
i ++;
}
while (i <= 100);

printf("%d",sum);

return 0;
}

2)打印100次我爱你

#include <stdio.h>

int main(int argc,
const char * argv[]) {

int i =
1;

do {

printf("第%d次我爱你\n",i);
i ++;
}
while (i <= 100);

return 0;
}

3.for 循环练习

#include <stdio.h>

void test1();
void test2();
void test3();
void test4();
void test5();

int main(int argc,
const char * argv[]) {

test1();

test2();

test3();

test4();

test5();

return 0;
}

// 打印出5行5列的*方阵
void test1(){

//
打印5行

for (int i =
1; i <= 5; i ++) {

//
每行打印5颗星

for (int j =
1; j <= 5; j++) {

printf("*\t");
}

//
打印完5颗星换行

printf("\n");
}

}

// 打印出由*排列成的正直角三角形
void test2(){

//
打印5行

for (int i =
1; i <= 5; i ++) {

//
每行打印的*数量依次递增1

for (int j =
1; j <= i; j ++) {

printf("* ");
}

//
打印完一行进行换行操作

printf("\n");
}
}

// 打印由*排列成的倒直角三角形
void test3(){

//
打印5行

for (int i =
0; i < 5; i ++) {

//
每行的*数量依次递减1

for (int j =
0; j < 5 - i; j ++) {

printf("* ");
}

//
打印完一行进行换行操作

printf("\n");
}
}

// 打印正三角形
void test4(){

//
定义变量

int n;

//
提示输入

printf("请输入一个整数:\n");

//
接收整数

scanf("%d",&n);

//
打印

//
打印n+1行

for (int i =
0; i <= n; i ++) {

//
每行先打印 n - i 个空格

for (int j =
0; j < n - i; j ++) {

printf(" ");
}

//
每行再打印 2i +1 个*

for (int k =
0; k < 2*i +1; k ++) {

printf("*");
}

//
打印完一行进行换行操作

printf("\n");
}
}

// 实现 9 * 9
乘法表
void test5(){

//
打印9行

for (int i =
1; i <= 9; i ++) {

//
每行打印的内容

for (int j =
1; j <= i; j ++) {

printf("%d*%d=%d ", j, i, j * i);
// 第i行乘以第j列
}

//
打印完一行进行换行操作

printf("\n");
}
}

4.break语句

break语句可用于switch语句和循环语句中,可以使程序跳出switch或循环语句,而执行后面的语句:

void test1(){

// break用于跳出当前循环

for (int i =
1; i <= 10; i ++) {

if (i == 5) {
// 当i = 5
时,跳出循环

break;
}

printf("%d\t",i);
}
}
例:计算r=1到r=10时的圆面积,直到area大于100为止:

#include <stdio.h>
int main(int argc,
const char * argv[]) {

//
定义变量

double area = 0;
// 圆面积

//
计算圆面积

for (int r =
1; r <= 10; r ++) {
area =
3.14 * r * r; //
计算半径为r的圆面积

if (area > 100) {
// 当圆面积大于100时跳出循环

// 输出结果

printf("半径为%d的圆的面积为:%.2f",r,
area);

break;
}
}

return 0;
}

5.continue 语句

continue语句的作用是跳过循环体中剩余的语句而继续下一次。continue语句只用在for、while、do—while等循环体中,常与if条件语句一起使用,用来加速循环:
void test1(){

// continue作用:结束本次循环的语句,继续下一次循环

for (int i =
1; i <= 10; i ++) {

if (i % 2 ==
0) {

continue;
}

printf("%d ",i);
}
}

例:把100~200之间不能被3整除的数输出

#include <stdio.h>
int main(int argc,
const char * argv[]) {

for (int i =
100; i <= 200; i ++) {

if (i % 3 ==
0) {

continue;
}

printf("%d ",i);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: