一.练习
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的值,如图所示:
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!的阶乘,如图所示:
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()函数输出未找到,程序运行结果如图所示:
2023/7/25
王起舟