//题目43:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
//圈子,问最后留下的是原来第几号的那位。 #include<stdio.h>
#include<stdlib.h> //分析:用while循环实现 //定于数组的大小
#define N 6 void main(){
int a[N] = { , , ,,,};
//定义报数变量
int k = ;
//定义数组下标变量
int index = ;
//定义数组有用元素变量
int num = N;
while (num != ){
//确保元素下标不会越界
if (index>N - )
{
index = ;
}
//当遇到已经删除的元素,要跳到下一个元素上
if (a[index] != )
{
if (k == )
{
//删除已经报3的元素
a[index] = ;
//实际元素个数减1
num--;
//遇到3后 重置报数
k = ;
}
else{
k++;
}
index++;
}
else{
index++;
} }
for (int i = ; i < N; i++)
{
if (a[i]!=)
{
printf("最后留下的是第%d号",a[i]);
}
} system("pause"); }
//题目44:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h> //分析:自已一个字符串数组 void main(){
char str[] = { };
printf("请输入一个字符串\n");
scanf("%s",str);
int num = ;
while (str[num]!='\0'){
num++;
}
printf("字符串的长度是%d\n", num);
system("pause");
}
//题目45:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数
//1 / 1 + 1 / 3 + ... + 1 / n(利用指针函数) #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h> //分析:知识点函数指针的调用 //偶数
double Even(int n){
double s = 0.0;
for (int i = ; i <=n; i=i+)
{
s += 1.0 / i;
}
return s;
} //奇数 Odd
double Odd(int n){
double s = 0.0;
for (int i = ; i <= n; i=i + )
{
s += 1.0 / i;
}
return s;
} void main(){
int num = ;
printf("请输入一个数字\n");
scanf("%d",&num);
//定义函数指针,函数指针的定义必须是(*p),不然会报错
double (*p)(int n);
if (num%==)
{
//如果是偶数
p = Even;
}
else{
p = Odd;
}
printf("函数的值是%lf",p(num));
system("pause");
}