本帖最后由 Guido 于 2020-10-19 16:45 编辑
1、测试完以下系统函数完成之后,试图编写以下函数:
A)isdigit,isalpha,isalnum等
B)toupper,tolower等(参考MISDN Sample)
注意:为了防止与系统函数冲突,将函数第一个字母大写。#include<stdio.h>
//isdigit判断是否是十进制0~9的数字,若是返回真,若不是返回假。
int Isdigit(int a)
{
if (a>= '0'&&a<= '9')
return 1;
return 0;
}
int main()
{
char c = '9';
int n;
n=Isdigit(c);
while(n)
{
printf("是0~9的数字");
return 0;
}
printf("不是0~9的数字");
return 0;
}
#include<stdio.h>
//isalpah判断是否是字母(无所谓大小写),若是返回真,若不是返回假。
int Isalpha(int a)
{
if (a >= 'a'&&a <= 'z'|| a >= 'A'&&a <= 'Z')
return 1;
return 0;
}
int main()
{
char c = 'x';
int n;
n = Isalpha(c);
while (n)
{
printf("是字母");
return 0;
}
printf("不是字母");
return 0;
}
#include<stdio.h>
//isalpah判断是否是字母或数字(无所谓大小写,若是返回真,若不是返回假。
int Isalnum(int a)
{
if (a >= 'a'&&a <= 'z' || a >= 'A'&&a <= 'Z'||a>='0'&&a<='9')
return 1;
return 0;
}
int main()
{
char c = 'x';
int n;
n = Isalnum(c);
while (n)
{
printf("是字母或数字");
return 0;
}
printf("不是字母或数字");
return 0;
}
#include<stdio.h>
//toupper将小写字母转换为大写字母
int Toupper(int a)
{
int b;
if (a >= 'a'&&a <= 'z')
{
b=a - 32;
return b;
}
return 0;
}
int main()
{
char c = '0';
int n;
n = Toupper(c);
printf("%c", n);
return 0;
}
#include<stdio.h>
//tolower将小写字母转换为大写字母
int Tolower(int a)
{
int b;
if (a >= 'A'&&a <= 'Z')
{
b = a + 32;
return b;
}
return 0;
}
int main()
{
char c = 'D';
int n;
n = Tolower(c);
printf("%c", n);
return 0;
}
2、编写一个函数,用来测试带入的数字是否为素数,函数的格式为:int IsPrime(int n)当带入n的数字是素数时,返回值是1,.否则返回值是0;在main函数中调用IsPrime函效进行测试,连续输入3个数字,判断这个3个数字分别是否为素数并打印;#include<stdio.h>
int IsPrime(int n)
{
int i = 2;
int m = n / 2 + 1;
while (i < m)
{
if (n%i == 0)
break;
i++;
}
if (i < m)
return 0;
return 1;
}
int main()
{
int a, b, c;
scanf_s("%d%d%d", &a, &b, &c);
if (IsPrime(a))
printf("%d是素数\n", a);
else
printf("%d不是素数\n", a);
if (IsPrime(b))
printf("%d是素数\n", b);
else
printf("%d不是素数\n", b);
if (IsPrime(c))
printf("%d是素数\n", c);
else
printf("%d不是素数\n", c);
return 0;
}
3、编写一个函数打印出从x到y之间的素数:void PrintPrime(int x,int y);在PrintPrime中循环调用IsPrime函数实现;在main函数输入2个不同的数字传给PrintPrime的x和y参数;#include<stdio.h>
int IsPrime(int n)
{
int i = 2;
int m = n / 2 + 1;
while (i < m)
{
if (n%i == 0)
break;
i++;
}
if (i < m)
return 0;
return 1;
}
void PritPrime(int x, int y)
{
int sum=0;
if (x < y)
{
while (x < y)
{
if (IsPrime(x))
{
printf("%d ", x);
sum++;
}
x++;
}
}
else
printf("输入区间无效\n");
printf("\n共%d个素数", sum);
}
int main()
{
int a, b;
scanf_s("%d%d", &a, &b);
PritPrime(a, b);
return 0;
}
4、编写一个函数打印出从x之后n个的素数:void PrintPS(int x,int n);要求PrintPS循环调用IsPrime函数实现,在main函数输入2个数字传递PrintPS的x和n参数#include<stdio.h>
int IsPrime(int n)
{
int i = 2;
int m = n / 2 + 1;
while (i < m)
{
if (n%i == 0)
break;
i++;
}
if (i < m)
return 0;
return 1;
}
void PritPS(int x, int n)//打印出X之后的Y个素数
{
while (n)
{
if (IsPrime(x))
{
printf("%d ", x);
n--;
}
x++;
}
}
int main()
{
int a, b;
scanf_s("%d%d", &a, &b);
PritPS(a, b);
return 0;
}
5、编写一个菜单函数:int Menu()
使用puts打印菜单:要求整齐好看
1、浏览所有数据
2、添加数据
3、删除数据
4、修改数据
0、退出程序
===========
请选择:
将输入的数值作为返回值返回给主调函数,在main函数中循环调用这个Menu函数。当返回的数值是0时结束循环,退出进程。#include<stdio.h>
#include<stdlib.h>
int menu()
{
system("cls");
puts("1、浏览所有数据");
puts("2、添加数据");
puts("3、删除数据");
puts("4、修改数据");
puts("0、退出程序");
puts("========================");
puts("请选择");
int n;
scanf_s("%d", &n);
if (n >= 0 && n <= 4)
return n;
else
{
printf("输入无效\n");
system("pause");
}
return 1;
}
int main()
{
while (menu())
{
menu();
}
return 0;
}
6、编写一个函数求两个数字的最大公约数:int divisor(int a,int b)
再编写一个函数求两个数字的最小公倍数:int multiple(int a,int b)
在main函数中分别输入两个数字来调用以上两个函数,打印出最大公约数和最小公倍数。#include<stdio.h>
int divisor(int a,int b)
{
int n;
a < b ? n = a : n = b;
while (n)
{
if (a%n == 0 && b%n == 0)
{
printf("%d与%d的最大公约数为%d\n", a, b,n );
return n;
}
n--;
}
printf("%d与%d的最大公约数为%d\n", a, b, 1);
return 0;
}
int multiple(int a, int b)
{
int n;
int i = 2;
a > b ? n = a : n = b;
while (n < a*b)
{
if (n%a == 0 && n%b == 0)
{
printf("%d与%d的最小公倍数是%d", a, b, n);
return 0;
}
n++;
}
printf("%d与%d的最小公倍数是%d", a, b, a*b);
return 0;
}
int main()
{
int a;
int b;
scanf_s("%d%d", &a,&b);
divisor(a, b);
multiple(a, b);
return 0;
}
|