紧急求救:考试要用到的八道c语言的编程题 请高手帮忙给出答案,最好是上机调试通过的(可以先做一部分)

1 编程计算1~100之间的所有素数之和。

2 有一个字符数组str,数组中存放一个字符串,编程将字符数组中ASCII值为奇数的字符从数组中删除掉,删除后形成的新字符串仍然存放在原来的字符数组str中。

3 编写程序求出所有满足以下条件的四位数:其前两位数字与其后两位数字之和的平方等于该数本身。例如:3025=(30+25)2

4 有一个含有10个元素的整型数组,编程将其元素按逆序存放

5 用选择法对含有10个整数的数组按由大到小的顺序进行排序。

6 假定输入的字符串中只包含字母和*号。请编写程序将字符串中的所有*删除,删除后的字符串仍存放在原来的数组中。例如,字符串中的内容为:"***ab*A*BC*DEF*G****",则删除后的字符串为:"abABCDEFG"。

7 从键盘上输入10个整数存放到一个数组中,找出其中的最大值并输出。

8 编写程序求出所有的水仙花数。所谓水仙花数是这样的三位数,它的各位数字的立方和就等于该数本身。例如;153=13+53+33

//1 编程计算1~100之间的所有素数之和。

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

int search(int i);

main()
{
int i,num;
num=0;

for(i=2;i<101;i++)
{
if(search(i))
{
num+=i;
printf("%d ",i);
}
}
}

int search(int i)
{
int k,j;

for(k=i/2;k>1;k--)
{
j=i;
j=j/k;
if(i==j*k) return 0;
}
return 1;
}

/*2 有一个字符数组str,数组中存放一个字符串,编程将字符数组中ASCII值为奇数的字符从数组中删除掉,
删除后形成的新字符串仍然存放在原来的字符数组str中。
*/
#include<stdio.h>

main()
{
char ch[10];
int i,num[10],j,k;

for(i=0;i<10;i++)
{
ch[i]=i+30; //这只是为了方便编程
num[i]=0;
}

for(i=0;i<10;i++)
{
k=ch[i];
if(k%2==0) num[i]=i+1;
}

for(j=0,i=0;i<10;i++)
{
if(num[i]!=0)
{
ch[j]=ch[(num[i]-1)];
j++;
}
}
ch[j]='\0';

}

/*3 编写程序求出所有满足以下条件的四位数:其前两位数字与其后两位数字之和的平方等于该数本身。
例如:3025=(30+25)2
*/
#include<stdio.h>

int search(int i);

main()
{
int i;

for(i=1000;i<10000;i++)
{
if(search(i)) printf("%d ",i);
}
}

int search(int i)
{
int j,k;

j=i/100;
k=i%100;
if(i==(k+j)*(k+j)) return 1;
else return 0;
}

//4 有一个含有10个元素的整型数组,编程将其元素按逆序存放

#include<stdio.h>

main()
{
int i,k,num[10];

for(i=0;i<10;i++)
{
num[i]=i+1;
}

for(i=0;10-i>i;i++)
{
k=num[i];
num[i]=num[9-i];
num[9-i]=k;
}

}

//5 用选择法对含有10个整数的数组按由大到小的顺序进行排序。

main()
{
int m,k,j,i,d,p[10];

p[10]=(23,25,65,9,45,73,2,56,222,20);

k=0;
m=10-1;
while(k<m)
{
j=m-1;
m=0;
for(j=k;i<=j;i++)
{
if(p[i]>p[i+1])
{
d=p[i];
p[i]=p[i+1];
p[i+1]=d;
}
}
j=k+1;
k=0;
for(i=m;i>=j;i--)
{
if(p[i-1]>p[i])
{
d=p[i];
p[i]=p[i-1];
p[i-1]=d;
}
}
}

}

/*6 假定输入的字符串中只包含字母和*号。请编写程序将字符串中的所有*删除,
删除后的字符串仍存放在原来的数组中。例如,字符串中的内容为:"***ab*A*BC*DEF*G****",
则删除后的字符串为:"abABCDEFG"。
*/
#include<stdio.h>

main()
{
int i,j;
char ch[]="***ab*A*BC*DEF*G****";

for(i=0;ch[i]!='\0';i++)
{
if(ch[i]=='*')
{
for(j=i;ch[j]!='\0';j++)
{
ch[j]=ch[j+1];
}
i--;
}
}
}

//7 从键盘上输入10个整数存放到一个数组中,找出其中的最大值并输出。

#include<stdio.h>

main()
{
int j,num[10],i;

printf("input the numbers: ");
for(i=0;i<10;i++)
{
scanf("%d ",&num[i]);
}
j=num[0];

for(i=0;i<10;i++)
{
if(j<num[i]) j=num[i];
}

printf("%d",j);
}

/*8 编写程序求出所有的水仙花数。所谓水仙花数是这样的三位数,
它的各位数字的立方和就等于该数本身。例如;153=13+53+33
*/

#include<stdio.h>

int search(int i);

main()
{
int i;

for(i=100;i<1000;i++)
{
if(search(i)) printf("%d ",i);
}
}

int search(int i)
{
int j,k,m;

j=i/10;
k=j%10;
j=i/100;
m=i%10;
j=j*j*j;
k=k*k*k;
m=m*m*m;
if(i==(j+k+m)) return 1;
else return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答