个人练习:
编程题:
1.编写一个函数,通过输入球的半径,返回球的体积;
#include <stdio.h>
#define pi 3.14
//计算球体积的函数
double v_ball(double r)
{
return 4.0 / 3.0 * pi * r * r * r;
}
int main()
{
double a;
printf("请输入球的半径\n");
scanf("%lf",&a);
double v = v_ball(a);
printf("该球的体积为:%lf\n",v);
return 0;
}
运行结果:
2.编写一个函数,通过输入一个数字字符,返回该数字
#include <stdio.h>
char num(char a)
{
return a;
}
int main()
{
int b;
printf("请输入一个字符\n");
scanf("%c",&b);
int c = num(b);
printf("该数字为:%d",c);
return 0;
}
运行结果:
3.编写一个函数,输入四个数据分别表示2个点的x,y坐标,返回两点之间的距离;
#include <stdio.h>
#include <math.h>
double distance(int x,int y,int x1,int y2)
{
return sqrt((x - x1) * (x - x1) + (y - y2) * (y - y2));
}
int main()
{
int a,b,c,d;
printf("请输入x的值y的值x1的值y1的值\n");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
double value = distance(a,b,c,d);
printf("两点之间的距离为:%.2f",value);
return 0;
}
运行结果:
4.编写一个函数,通过参数输入一个整型数,返回该数各位上数字的平方和;
#include <stdio.h>
int sq(int a)
{
int sum = 0;
while(a > 0)
{
int dight = a % 10;
sum += dight * dight;
a /= 10;
}
return sum;
}
int main()
{
int b;
printf("请输入一个数\n");
scanf("%d",&b);
int sum1 = sq(b);
printf("该数的平方和为:%d\n",sum1);
return 0;
}
运行结果:
5.编写一个函数,通过参数输入x的值,计算如下的数学函数值,当 x>5时, f(x) = 4x+7;否则 f(x) =-2x+3,返回结果值
#include <stdio.h>
int value(int x)
{
int y;
return (x > 5 ? y = 4 * x + 7 : y = -2 * x + 3);
}
int main()
{
int a;
printf("请输入一个值\n");
scanf("%d",&a);
int b = value(a);
printf("该值为:%d",b);
return 0;
}
运行结果:
6.设计一个函数,用来求出多个数据的平均值;
#include <stdio.h>
int calculateAverage()
{
int sum = 0; // 初始化sum为0
for (int i = 0; i < 5; i++)
{ // 循环5次读取数据
int n;
scanf("%d", &n);
sum += n; // 将读取的值加到sum上
}
// 除以5得到平均值
int average = sum / 5;
return average;
}
int main()
{
printf("请输入5个数据\n");
int average = calculateAverage(); // 调用函数计算平均值
printf("该组数的平均值为:%d\n", average);
return 0;
}
运行结果:
7.设计一个函数,用来查找一个字符串中某个字符的位置;
#include <stdio.h>
// 查找字符在字符串中的位置的函数
int str(char a[], int len, char target)
{
for (int i = 0; i < len; i++)
{
if (a[i] == target)
{
return i; // 找到目标字符,返回它的下标
}
}
return -1; // 如果未找到目标字符,返回 -1 表示未找到
}
int main()
{
char b[5];
// 录入字符数组
printf("请输入五个字符组成的字符串\n");
for (int i = 0; i < sizeof(b) / sizeof(char); i++)
{
scanf(" %c", &b[i]);
}
// 查询目标字符
char target_ch;
printf("请输入你要查找的字符\n");
scanf(" %c", &target_ch);
// 调用查找函数
int pos = str(b, sizeof(b) / sizeof(char), target_ch);
// 输出结果
if (pos != -1)
{
printf("%c 字符的下标为:%d\n", target_ch, pos);
}
else
{
printf("未找到该字符:%c\n", target_ch);
}
return 0;
}
运行结果:
8.设计一个函数,把一个整型数字转成对应的字符串格式
#include <stdio.h>
//转化函数
void int_to_string(int n,char a[])
{
sprintf(a,"%d",n);
}
int main()
{
int b;
char a[20];
printf("请输入一个整型数字\n");
scanf("%d",&b);
int_to_string(b,a);
printf("%d的字符串格式为:%s\n",b,a);
return 0;
}
运行结果:
9.设计一个函数,统计字符串中大写字母的个数
#include <stdio.h>
//统计大写字母
char str(char a[],int len)
{
int k;
for(int i = 0;i < len;i++)
{
if( a[i] >=65 && a[i] <= 90)
{
k++;
}
}
return k;
}
int main()
{
char s[6];
printf("请输入长度为6的字符串\n");
for(int i = 0;i < sizeof(s) / sizeof(char);i++)
{
scanf("%c",&s[i]);
}
printf("该字符串中大写字母的个数为:%d",str(s,sizeof(s) / sizeof(char)));
return 0;
}
运行结果:
10.设计函数,实现strcmp 的功能;
#include <stdio.h>
//比较字符串的函数
char str(char st[],char st2[],int len)
{
for(int i = 0;i < len;i++)
{
for(int j = 0;j < len;j++)
{
if(st[i] == st2[j])
{
printf("两个字符串相同\n");
return 0;
}
else if(st[0] < st2[j])
{
return -1;
}
else if(st[0] > st2[j])
{
return 1;
}
}
}
return 0;
}
int main()
{
//定义数组
char a[5],b[5];
//初始化字符串
printf("请输入第一个长度为5的字符串\n");
for(int i = 0;i < sizeof(a) / sizeof(char);i++)
{
scanf(" %c",&a[i]);
}
printf("请输入第二个长度为5的字符串\n");
for(int i = 0;i < sizeof(b) / sizeof(char);i++)
{
scanf(" %c",&b[i]);
}
//函数的调用
printf("该字符串的返回值为:%d",str(a,b,sizeof(a) / sizeof(char)));
return 0;
}
运行结果:
11.编写函数,用于判断输入的字符是不是个数字。是返回1,不是返回0
#include <stdio.h>
//判断
char str(char a[],int len)
{
for(int i = 0;i < len;i++)
{
if(a[i] < 65 || a[i] >122)
return 1;
}
return 0;
}
int main()
{
//初始化
char b[6];
printf("请输入长度为6的字符串\n");
//录入值
for(int i = 0;i < sizeof(b) / sizeof(char);i++)
{
scanf("%c",&b[i]);
}
printf("返回值为:%d\n",str(b, sizeof(b) / sizeof(char)));
return 0;
}
运行结果:
12.设计一程序,实现一个简单的计算器。
要求:有菜单函数 和加、减、乘、除的函数 主函数调用这些函数实现程序的功能.要求菜单函数能
够输出如下的界面
1、加法 2、减法 3、乘法 4、除法 0.退出
#include <stdio.h>
//实现乘法运算的函数
int a(int x,int y)
{
return x * y;
}
//实现加法运算的函数
int b(int x,int y)
{
return x + y;
}
//实现除法运算的函数
int c(int x,int y)
{
return x / y;
}
//实现减法运算的函数
int d(int x,int y)
{
return x - y;
}
int main()
{
int n,q,w;
printf("计算器v1.0\n");
printf("1为加法,2为减法,3乘法,4除法,0退出\n");
printf("请输入两个数字以及操作方式\n");
scanf("%d,%d,%d",&q,&w,&n);
switch(n)
{
case 1:
printf("计算结果为:%d\n",b(q,w));
break;
case 2:
printf("计算结果为:%d\n",d(q,w));
break;
case 3:
printf("计算结果为:%d\n",a(q,w));
break;
case 4:
printf("计算结果为:%d\n",c(q,w));
break;
case 0:
printf("退出\n");
break;
default:
printf("操作非法\n");
}
return 0;
}
运行结果:
13.设计函数实现冒泡排序;
#include <stdio.h>
// 实现冒泡排序的函数
void bubble_sort(int a[], int len)
{
int t;
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
int main()
{
int z[10];
// 输入待排序的10个数
printf("请输入10个数:\n");
for (int i = 0; i < 10; i++)
{
scanf("%d", &z[i]);
}
// 调用冒泡排序函数
bubble_sort(z, sizeof(z) / sizeof(int));
// 输出排序后的结果
printf("冒泡排序后的数为:");
for (int i = 0; i < 10; i++)
{
printf(" %d", z[i]);
}
printf("\n");
return 0;
}
运行结果:
14.编写一个函数,将数组中的数据首尾互换
#include <stdio.h>
//收尾互换的函数
void sw(char a[],int len)
{
char t;
t = a[0];
a[0] = a[len - 1];
a[len - 1] = t;
}
int main()
{
char b[10];
//初始化
printf("请输入长度为10的字符\n");
for(int i = 0;i < sizeof(b) / sizeof(char);i++)
{
scanf(" %c",&b[i]);
}
sw(b,sizeof(b) / sizeof(char));
printf("交换的数据为:\n");
for(int i = 0;i < sizeof(b) / sizeof(char);i++)
{
printf("%c",b[i]);
}
return 0;
}
运行结果: