C语言初阶之循环与分支语句练习

在这里插入图片描述

1、计算n的阶乘

代码如下:

#include<stdio.h>
int main()
{
    
    
    int n,i,s=1;
    printf("输入一个整数计算它的阶乘:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
    
    
        s*=i;
    }
    printf("%d!=%d\n",n,s);
    return 0;
}

2、计算 1!+2!+3!+……+10!

代码如下:

#include <stdio.h>
int main()
{
    
    
    int n=0;
    int i=0;
    int s = 1;
    int sum = 0;
    for (n = 1; n <= 10; n++)
    {
    
    
        s *= n; 
        sum += s;
    }
    printf("sum=%d\n",sum);
    return 0;
}

3、九九乘法表

代码如下:

#include <stdio.h>
int main()
{
    
    
	int i = 0;
	//控制行数
	for(i=1; i<=9; i++)
	{
    
    
		//打印每一行内容,每行有i个表达式
		int j = 0;
		for(j=1; j<=i; j++)
		{
    
    
			printf("%d*%d=%2d ", i, j, i*j);
		}
		printf("\n");
	}
	return 0;
}

4、求10个数最大值

代码如下:

int main()
{
    
    
	int arr[10] = {
    
    0};
	int i = 0;
	int max = 0;

	for(i=0; i<10; i++)
	{
    
    
		scanf("%d", &arr[i]);
	}
	//
	max = arr[0];
	for(i=1; i<10; i++)
	{
    
    
		if(arr[i]>max)
			max = arr[i];
	}
	printf("max = %d\n", max);
	return 0;
}

5、计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

代码如下:

#include <stdio.h>
int  main()
{
    
    
	int i = 0;
	double sum = 0.0;
	int flag = 1;
	for(i=1; i<=100; i++)
	{
    
    
		sum += flag*1.0/i;
		flag = -flag;
	}
	printf("%lf\n", sum);
	return 0;
}

6、编写程序数一下 1到 100 的所有整数中出现多少个数字9

代码如下:

#include <stdio.h>
int main()
{
    
    
	int i = 0;
	int count = 0;


	for(i=1; i<=100; i++)
	{
    
    
		if(i%10==9)
			count++;
		if(i/10==9)
			count++;
	}
	printf("%d\n", count);
	return 0;
}

7、二分查找

代码如下:

#include <stdio.h>

int main()
{
    
    
	int arr[] = {
    
    1,2,3,4,5,6,7,8,9,10};
	int key = 3;
	int left = 0;
	int right = sizeof(arr)/sizeof(arr[0]); // right位置的数据取不到

	while(left<right) // right位置没有数据,此处不需要添加=
	{
    
    
		int mid = left+(right-left)/2;
		if(arr[mid]>key) // key小于中间位置数据,说明key可能在左半侧,需要改变右边界
		{
    
    
			right = mid; // right位置的数据取不到,因此right=mid,不需要减1
		}
		else if(arr[mid]<key)// key大于中间位置数据,说明key可能在右半侧,需要改变左边界
		{
    
    
			left = mid+1; // left位置的数据可以取到,因此left=mid+1
		}
		else
		{
    
    
			printf("找到了,下标是:%d\n", mid);
      break;
		}
	}
   
	if(left>=right)
		printf("找不到\n");
	return 0;
}

8、编写代码,演示多个字符从两端移动,向中间汇聚。

代码如下:

#include <stdio.h>
int main()
{
    
    
    char arr1[] = "welcome world...";
    char arr2[] = "################";
    int left = 0;
    int right = strlen(arr1) - 1;
    printf("%s\n", arr2);
    //while循环实现
    //while (left <= right)
    //{
    
    
    //    Sleep(1000);
    //    arr2[left] = arr1[left];
    //    arr2[right] = arr1[right];
    //    left++;
    //    right--;
    //    printf("%s\n", arr2);
    //}
    //for循环实现
    for (left = 0, right = strlen(arr1) - 1;
        left <= right;
        left++, right--)
    {
    
    
        Sleep(1000);
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        printf("%s\n", arr2);
    }
    return 0;
}

9、编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序)

代码如下:

int main()
{
    
    
    char psw[10] = "" ;
    int i = 0;
    int j = 0;
    for (i = 0; i < 3 ; ++i)
   {
    
    
        printf( "please input:");
        scanf("%s", psw);
        if (strcmp(psw, "password" ) == 0)
            break;
   }
    if (i == 3)
        printf("exit\n");
    else
        printf( "log in\n");
}

10、猜数字游戏

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
    
    
 	printf("**********************************\n");
 	printf("*********** 1.play     **********\n");
 	printf("*********** 0.exit     **********\n");
 	printf("**********************************\n");
}
//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{
    
    
 	int random_num = rand()%100+1;
 	int input = 0;
 	while(1)
 	{
    
    
 		printf("请输入猜的数字>:");
 		scanf("%d", &input);
 		if(input > random_num)
 		{
    
    
 			printf("猜大了\n");
 		}
 		else if(input < random_num)
 		{
    
    
 			printf("猜小了\n");
 		}
 		else
 		{
    
    
 			printf("恭喜你,猜对了\n");
 			break;
 		}
 	}
}
int main()
{
    
    
 	int input = 0;
 	srand((unsigned)time(NULL));
 	do
 	{
    
    
 		menu();
 		printf("请选择>:");
 		scanf("%d", &input);
 		switch(input)
 		{
    
    
 			case 1:
 				game();
				break;
 			case 0:
 				break;
 			default:
 				printf("选择错误,请重新输入!\n");
 				break;
 		}
 	}while(input);
 return 0;
}

11、关机恶搞小程序

goto写法
代码如下:

#include <stdio.h>
int main()
{
    
    
    char input[10] = {
    
    0};
    system("shutdown -s -t 60");
    again:
    printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
    scanf("%s", input);
    if(0 == strcmp(input, "我是猪"))
   {
    
    
        system("shutdown -a");
   }
    else
   {
    
    
        goto again;
   }
    return 0;
}

循环写法
代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    
    char input[10] = {
    
    0};
    system("shutdown -s -t 60");
    while(1)
   {
    
    
        printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
        scanf("%s", input);
        if(0 == strcmp(input, "我是猪"))
       {
    
    
            system("shutdown -a");
            break;
       }
   }
    return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kingxzq/article/details/130680766