C语言编程

2. 按以下要求编写程序:
(1) 编写函数int countvalue(int aa[]),其功能是:求出500~800区间内的素数以及素数的个数cnt,将这些素数按从小到大的顺序依次存入aa指向的数组中,函数返回cnt的值。
(2)编写main()函数,调用countvalue()函数,将找到的所有素数按十个一行打印到屏幕上。

3. 按以下要求编写程序:
(1) 编写函数int fun(char a[]),其功能是:删除a指向的字符串中所有数字字符,统计被删除数字字符的个数并将之作为返回值返回。
(2) 编写main()函数,调用fun()函数处理从键盘输入的包含数字字符的字符串,在屏幕上打印删除的字符个数以及删除数字字符之后的字符串。

4. 按以下要求编写程序:
(1) 编写函数void fun(char xx[]),其功能是:在xx所指向的字符串中的所有数字字符之前分别插入1个字符'$'。例如,如果xx所指向的原字符串是"A1B23CD45",则变换后的字符串应为"A$1B$2$3CD$4$5"。
(2) 编写main()函数。从键盘输入一个包含数字字符的字符串,调用fun()函数对该字符串作变换处理,在屏幕上打印处理后的字符串

5. 按以下要求编写程序:
(1) 编写函数int gcd_max(int a[], int b[], int n),求长度为n的数组a中所有相邻两元素的最大公约数(共n-1个),并将之依次保存到数组b中,函数返回b数组中最大数的下标。
(2) 编写main()函数,声明一个数组并用以下测试数据对其初始化;调用函数gcd_max(),将求得的所有公约数、最大的公约数及其下标打印在屏幕上。
测试数据为:3,6,4,16,8,5,15,10,12,18
相应的输出应该是:3,2,4,8,1,5,5,2,6
max=8,max_index=3

第1个回答  2010-05-08
第二题、

#include <stdio.h>
#include <math.h>

#define N 500
#define M 800

int countvalue(int aa[])
{
int sum=0,i,j,k,x; //sum素数总数
int n=0; //aa[]数组下标
for(i=N; i<=M; i++)
{
k=(int)sqrt(N);
for(j=2; j<=k; j++)
if(i%j==0) break;
if(j>k)
{aa[n]=i; n++; sum++;}
}
for(i=0; i<n; i++)
{
if(i>0 && i%10==0) printf("\n");
printf("%d ",aa[i]);
}
printf("\n");
return sum;
}

void main()
{
int cnt,c[500];
cnt=countvalue(c);
printf("素数总数=%d\n",cnt);
}

第三题、 按以下要求编写程序:

#include<stdio.h>

#define N 20

int fun(char a[])
{
int i,j,num=0;
char b[N];
for(i=0,j=0; i<N; i++)
{
if(a[i]>='0' && a[i]<='9')
num++;
else
{b[j]=a[i]; j++;}
}
printf("删除数字字符后的数组:\n",b);
printf("%s\n",b);
return num;
}

void main()
{
char c[N];
int num=0;
printf("输入字符串:");
scanf("%s",&c);
num=fun(c);
printf("删除数字字符的个数为:%d\n",num);
}

第四题、 按以下要求编写程序:

#include<stdio.h>

#define N 20
#define M 40

void fun(char xx[])
{
int i,j;
char b[M];
for(i=0,j=0; i<N; i++,j++)
{
if(xx[i]>='0' && xx[i]<='9')
{b[j]='$'; j++;}
b[j]=xx[i];
}
printf("%s\n",b);
}

void main()
{
char a[N];
printf("输入字符串:");
scanf("%s",&a);
fun(a);
}本回答被提问者采纳