一.练习

1.编写一段代码计算n的阶乘

提示:如5的阶乘就是5*4*3*2*1以此类推


例如以下代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main(void)
{
	int n;
	int ret = 1;
	printf("请输入n的值:");
	scanf("%d",&n);
	for (int i = 1; i <= n; i++){
		ret = ret*i;
	}
	printf("ret=%d\n",ret);
	system("pause");
	return 0;
}

程序调用scanf()函数要求用户输入阶乘的数字随后声明变量i并为其复赋值(i=1)当i<=n的时候则进入for循环,ret的值等于ret*i,随后将i进行自增,直到i>n不满足入口条件时输出ret的值,如图所示:

C语言分支与循环(8)--- 练习题(1)_for循环


2.计算 1!+ 2! + 3! ····· 10!


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main(void)
{
	int i = 0;
	int ret = 1;
	int n = 0;
	int sum = 0;
	for (n = 1; n <= 10;n++){
		for (i = 1; i <= n; i++){
			ret = ret*i;
		}
		sum = sum + ret;
	}
	printf("sum=%d\n",sum);
	system("pause");
	return 0;
}

与上面代码相类似,内层for循环用于计算1!~ 10!外层循环用于控制内层循环,最后使用sum语句使得sum的值等于ret+sum,最后输出sum的值便求出了1!~10!的阶乘,如图所示:

C语言分支与循环(8)--- 练习题(1)_for循环_02


3.编写一个程序,使其在一个有序数组中找到某一个具体的数字n,并输出其下标


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main(void)
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int k;
	printf("请输入目标数字:");
	scanf("%d",&k);
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i <= 10; i++){
		if (k == arr[i]){
			printf("已找到!目标数字为%d,数组下标为%d\n", k,i);
		}
	}
	if (k > sz){
		printf("未找到!\n");
	}
	system("pause");
	return 0;
}

代码中定义了arr的有序数组声明了变量k,并等待用户输入,利用sizeof操作符的原理,数组元素个数=数组占用内存总大小/数组单个元素占用内存大小 来计算出数组元素个数,for循环中定义了变量i并为其赋值(i=0)并进行遍历数组操作,当k的值等于数组中某一个元素的值的时候则输出k的数字以及相应数组元素的下标,若k的值大于sz(数组元素总个数)则调用printf()函数输出未找到,程序运行结果如图所示:

C语言分支与循环(8)--- 练习题(1)_练习_03

C语言分支与循环(8)--- 练习题(1)_练习_04

                                                                                                  2023/7/25

                                                                                                      王起舟