C语言编程题,考试急用,请高手帮忙啊!!!!

有6道题,都是小程序,请求高手帮忙,这个学期我忙学数学,C程基本不怎么学啊~~~~大家看看会哪几道,帮我编一下吧,小弟先在这谢谢了~~~

1. 请编写函数long fun(long int x),功能是:将长整型数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。例如:程序运行时输入123456789,输出:b=97531。
#include<stdio.h>
long fun(long int x)
{
}
void main()
{long a,b;
printf("Please input a long int num:");
scanf("%ld",&a);
b=fun(a);
printf("b=%ld\n",b);
}
2. 编写函数void fun(char *s,char *t,char *p)将未在字符串s中出现、而在字符串t中出现的字符, 形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。
例如: 当s为"12345", t为"8624677"时, p中的字符为: "867";
当s为”good luck”,t为”thank you very much”时,输出:”thanyverm”
#include<math.h>
void fun(char *s,char *t,char *p)
{
}
void main()
{char s1[50],s2[50],s3[50];
gets(s1);gets(s2);
fun(s1,s2,s3);
puts(s3);
}
3. 编写函数int fun(int m),计算并返回满足表达式:1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)<=m最大的n。例如,当m=10000时,程序输出:n=38。
int fun(int m)
{
}
void main()
{int x;
scanf("%d",&x);
printf("n=%d\n",fun(x));
}
4. 编写函数void fun(int *x,int n),它的功能是:求出数组x中的最小数和次最小数,并把最小数和a[0]中的数对调、次最小数和a[1]中的数对调,其余的数保持不变。如程序运行时若输入:2 4 6 11 3 9 7 0 5 8,则输出:0 2 6 11 3 9 7 4 5 8。
#define N 10
void fun(int *x,int n)
{
}
main()
{int a[N],i;
for(i=0;i<N;i++)
scanf("%d",a+i);
fun(a,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
}
5. 编写函数long fun(int high,int n),功能是:计算并返回high以内(不包含high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若high=100,n=10,则函数的返回值为:732;若high=11,n=10,则函数返回:17。
long fun(int high,int n)
{
}
void main()
{int k,n;
scanf("%d%d",&k,&n);
printf("sum=%ld\n",fun(k,n));
}
6. 请编写函数int fun(int *a,int n),它的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。例:若输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15,输出:2 4 6 8 10 12 14 n=7
int fun(int *a,int n)
{
}
void main()
{int x[15],i,n;
for(i=0;i<15;i++)
scanf("%d",x+i);
n=fun(x,15);
for(i=0;x[i]!=-1;i++)
printf("%d ",x[i]);
printf("n=%d\n",n);
}

1.
#include<stdio.h>
long fun(long int x)
{
long ret=0;
while(x){
if(x%10%2){
ret= ret*10+ x%10;
}
x=x/10;
}
return ret;
}
void main()
{
long a,b;
printf("Please input a long int num:");
scanf("%ld",&a);
b=fun(a);
printf("b=%ld\n",b);
}

2.
#include<math.h>

void fun(char *s,char *t,char *p)
{
int i=0,j=0,k=0;
for(i=0;i<50;i++){
p[i]=0;
}
i=0;
while(t[i]){
j=0;
while(s[j]){
if(t[i]!=s[j]){
j++;
}else break;
}
k=0;
while(p[k]){
if(t[i]!=p[k]){
k++;
}else break;
}
if(s[j]==0 && p[k]==0){
p[k]=t[i];
}
i++;
}

}
void main()
{
char s1[50],s2[50],s3[50];
gets(s1);gets(s2);
fun(s1,s2,s3);
puts(s3);
}

3.
int fun(int m)
{
int sum=0,a=0,i;
if(m==1) return 1;
for(i=1;;i++){
a=a+i;
sum =sum+a;
if(sum>m)
return i-1;
}
}
void main()
{int x;
scanf("%d",&x);
printf("n=%d\n",fun(x));
}

4.
#define N 10
void fun(int *x,int n)
{
int i,min_n,min;
min=x[0];
min_n=0;
for(i=1;i<n;i++){
if(x[i]<min){
min=x[i];
min_n=i;
}
}
i=x[0];
x[0]=x[min_n];
x[min_n]=i;

min=x[1];
min_n=1;
for(i=2;i<n;i++){
if(x[i]<min){
min=x[i];
min_n=i;
}
}
i=x[1];
x[1]=x[min_n];
x[min_n]=i;

}
main()
{int a[N],i;
for(i=0;i<N;i++)
scanf("%d",a+i);
fun(a,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
}

5.
#include <math.h>
long fun(int high,int n)
{
int sum=0,count=0,k,i;
for(high--;high>=2;high--){
k=0;
for(i=2;i<=sqrt(high+1);i++){
if(high%i==0){
k=1;
break;
}
}
if(k==0){
count++;
sum += high;
}
if(count==n) break;
}
return sum;
}
void main()
{int k,n;
scanf("%d%d",&k,&n);
printf("sum=%ld\n",fun(k,n));
}

6.
int fun(int *a,int n)
{
int i,j;
for(i=j=0,j;i<n;i++){
if(!(a[i]%2)){
a[j]=a[i];
j++;
}
}
a[j]=-1;
return j;
}
void main()
{int x[15],i,n;
for(i=0;i<15;i++)
scanf("%d",x+i);
n=fun(x,15);
for(i=0;x[i]!=-1;i++)
printf("%d ",x[i]);
printf("n=%d\n",n);
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答