没有合适的资源?快使用搜索试试~ 我知道了~
二级C语言常用算法[借鉴].pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 108 浏览量
2021-10-12
02:21:20
上传
评论
收藏 73KB PDF 举报
温馨提示
试读
11页
二级C语言常用算法[借鉴].pdf
资源推荐
资源详情
资源评论
1
运用 / 和%分离整数的各位
1:请编写函数 fun,其功能是:将两个两位数的正整数 a、b 合并形成一个整数放在 c 中。合并的方式是:
将 a 数的十位和个位数依次放在 c 数个位和十位上, b 数的十位和个位数依次放在 c 数的百位和千位上。
例如,当 a=16,b=35,调用该函数后, c=5361。
#include<stdio.h>
void fun(int a ,int b,long *c)
{
*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;
}
2、数组 xx[N] 保存着一组3位数的无符号正整数,其元素的个数通过变量 num 传入函数 fun() 。请补充函数
fun() ,该函数的功能是: 从数组 xx 中找出个位和百位的数字相等的所有无符号整数, 结果保存在数组 yy 中,
其个数由函数 fun()返回。
例如:当 xx[8]={135,78,72,32,222,424,333,141,541} 时, bb[6]={787,232,222,424,333,141} 。
#include<conio.h>
#define N 1000
int fun(int xx[],int bb[],int num)
{
int i,n=0;
int g,b;
for(i=0;i<num;i++)
{
g=xx[i]%10;
b=xx[i]/100;
if(g==b) bb[n++]=xx[i];
}
return n;
}
3、以下程序可把输入的十进制数以十六进制数的形式输出。
main()
{
char b[17]={"0123456789ABCDEF"};
int c[64],d,i=0,base=16;
long n;
printf("Enter a number:"); scanf("%ld",&n);
do {
c[i]=n%base;i++;n=n/base;}
while(n!=0);
printf("Transmite new base:");
for(--i;i>=0;--i)
{ d=c[i];printf("%c",b[d]);}
printf("");
}
4、请补充函数 fun(),该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组 str 中。例如:
当 n=13572468 时, str="86427531" 。
2
#include<stdio.h>
#include<conio.h>
#define N 80
char str[N];
void fun(long int n)
{
int i=0;
while(n>0)
{
str[i]=n%10+'0';
n/=10;
i++;
}
str[i]='\0';
}
数组特殊位置元素的确定
5、下列程序定义了 N×N 的二维数组,并在主函数中赋值。请编写函数 fun() ,函数的功能是:求出数组周
边元素的平方和并作为函数值返回给主函数中的 s。
#define N 5
int fun (int w[][N])
{
int i,j,k=0;
int s=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i==0||i==N-1||j==0||j==N-1) /* 只要下标中有一个为 0 或 N-1,则它一定是周边元素 */
{s=s+w[i][j]*w[i][j]; /*将周边元素求平方和 */
}
return s; /* 返回周边元素的平方和 */
}
6、下列程序定义了 N×N 的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][N], int n) ,该函数的
功能是:使数字右(左)上半三角元素中的值乘以 m。
#define N 5
int fun(int a[][N], int m)
{
int i,j;
for(i=0;i<N;i++)
for(j=i;j<N;j++)
a[i][j]=a[i][j]*m;
}
最大公约数与最小公倍数
7、请补充 main 函数,该函数的功能是:输入两个正整数 m 和 n,求这两个数的最大公约和最小公倍数。
#include <stdio.h>
main()
3
{ int a, b, n, m, t;
printf("\nInput two numbers:\n");
scanf ("%d,%d",&n,&m);
if(n<m){ a=m; b=n; }
else
{a=n; b=m;}
while(b!=0)
{t=a%b; a=b;b=t; }
printf("greatest common divisor:%d\n",a);
printf("least common multiple:%d\n",n*m/a);
}
判断素数
8、请编写一个函数 void fun(int m , int k , int xx[]) ,该函数的功能是:将大于整数 m 且紧靠 m 的 k 个非素
数存入所指的数组中。
例如,若输入 15,5,则应输出 16,18,20,21,22。
void fun(int m, int k, int xx[])
{
int i,j,n;
for(i=m+1,n=0;n<k;i++) /* 找大于 m 的非素数,循环 k 次,即找出紧靠 m 的 k 个非素数 */
for(j=2;j<i;j++) /* 判断一个数是否为素数 */
if(i%j==0)
{
xx[n++]=i; /* 如果不是素数,放入数组 xx 中*/
break; /* 并跳出本层循环,判断下一个数 */
}
}
字符串逆序存放
9、请补充函数 fun(),该函数的功能是:把从主函数中输入的字符串 str2 倒置后接在字符串 str1 后面。
例如: str1="How do",str2="?od uoy", 结果输出: "How do you do?" 。
#define N 40
void fun(char *str1,char *str2)
{ int i=0,j=0,k=0,n; char ch;
char *p1=str1; char *p2=str2;
while(*(p1+i))i++;
while(*(p2+j))j++;
n= j--;
for(;k<=j/2;k++,j--)
{ ch=*(p2+k);
*(p2+k)=*(p2+j);
*(p2+j)=ch;
}
*(p2+n)='\0';
for(;*p2;i++) *(p1+i)=*p2++;
*(p1+i)='\0';
剩余10页未读,继续阅读
资源评论
czq131452007
- 粉丝: 2
- 资源: 12万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功