//返回
第一题
/*1、编写函数 void is_upper(char str[]) 和 void is_lower(char str[])分别实现将字符串str的字母转换成大写或者小写。主函数输入一字符串,分别调用这2个函数显示结果。
Int main()
{ char str1[80];
Printf(“please input a string:\n”);
Gets(str1);
Is_upper(str1);
Printf(“upper string=%s\n”,str1);
Printf(“please input a string:\n”);
Gets(str1);
Is_lower(str1);
Printf(“lower string=%s\n”,str1);
}
*/
/*****************************************************************/
#include <stdio.h>
#include <ctype.h>
// 将字符串str中的字母转换成大写
void is_upper(char str[])
{
int i;
for (i = 0; str[i] != '\0'; i++)
{
str[i] = toupper(str[i]); // 调用toupper函数
}
}
// 将字符串str中的字母转换成小写
void is_lower(char str[])
{
int i;
for (i = 0; str[i] != '\0'; i++)
{
str[i] = tolower(str[i]); // 调用tolower函数
}
}
int main()
{
char s[100];
printf("请输入一个字符串:\n");
gets(s); // 输入一个字符串
printf("转换成大写后的字符串为:\n");
is_upper(s); // 调用is_upper函数
puts(s); // 输出转换后的字符串
printf("转换成小写后的字符串为:\n");
is_lower(s); // 调用is_lower函数
puts(s); // 输出转换后的字符串
return 0;
}
第二题
/* 2、编写函数 int search(int a[],int n,int x)实现在数组中查找给定的x,形式参数n为数组的数据个数。要求函数查找成功返回x在数组中的下标,否则返回-1.主函数如下:
Int main()
{ int a[20]={10,21,28,33,37,40},x;
Printf(“please input search number:\n”);
Scanf(“%d”,&x);
If(search(a,6,x)>=0) printf(“search sucess!!”);
Else printf(“search fail!”);
}
*/
/*****************************************************************/
#include <stdio.h>
// 顺序查找法
int search(int a[], int n, int x)
{
int i;
for (i = 0; i < n; i++)
{
if (a[i] == x) // 找到x
{
return i; // 返回下标
}
}
return -1; // 没有找到x
}
// 折半查找法
int search(int a[], int n, int x)
{
int low, high, mid;
low = 0; // 查找范围的左端点
high = n - 1; // 查找范围的右端点
while (low <= high) // 查找范围不为空
{
mid = (low + high) / 2; // 计算中间元素的下标
if (a[mid] == x) // 找到x
{
return mid; // 返回下标
}
else if (a[mid] > x) // x小于中间元素
{
high = mid - 1; // 在左半部分继续查找
}
else // x大于中间元素
{
low = mid + 1; // 在右半部分继续查找
}
}
return -1; // 没有找到x
}
第三题
//3、编写函数 int fun(int n),计算正整数n的所有因子(1和n除外)之和。例如n=8,函数值为6,因为除1和8之外,因子有2和4
/*****************************************************************/
#include <stdio.h>
// 计算正整数n的所有因子(1和n除外)之和
int fun(int n)
{
int sum = 0; // 存储因子之和
int i; // 遍历变量
for (i = 2; i < n; i++) // 从2开始,遍历所有小于n的正整数
{
if (n % i == 0) // 如果能被n整除
{
sum += i; // 则说明是n的因子,加到sum中
}
}
return sum; // 返回sum作为函数值
}
int main()
{
int n;
printf("请输入一个正整数:\n");
scanf("%d", &n); // 输入一个正整数
printf("该数的所有因子(1和%d除外)之和为:%d\n", n, fun(n)); // 调用fun函数并输出结果
return 0;
}
第四题
/* 4、编写函数void sort(int a[],int n),用选择排序方法实现数组a的降序排列。主函数如下:
Int main()
{ int a[20]={32,12,35,23,22,15},i;
Printf(“initialized data:\n”);
For(i=0;i<n;i++)printf(“%3d”,a[i]);
Printf(“\n”);
Sort(a,6);
Printf(“sorted data:\n”);
For(i=0;i<n;i++)printf(“%3d”,a[i]);
}
*/
/*****************************************************************/
#include <stdio.h>
// 用选择排序方法实现数组a的降序排列
void sort(int a[], int n)
{
int i, j, min, temp; // 定义变量
for (i = 0; i < n - 1; i++) // 外层循环控制排序趟数
{
min = i; // 假设当前位置的元素是最小的
for (j = i + 1; j < n; j++) // 内层循环在剩余的元素中寻找最小的元素
{
if (a[j] < a[min]) // 如果找到比当前最小元素还小的元素
{
min = j; // 更新最小元素的下标
}
}
if (min != i) // 如果最小元素不是当前位置的元素
{
temp = a[i]; // 交换两个元素的值
a[i] = a[min];
a[min] = temp;
}
}
}
第五题 -然而并没有呢
//预留位置