由于疫情原因,网络复试,6道编程题。
/*1、输入2个正整数m和n(1<=m,n<=1000),输出m和n之间所有满足各位数字的 立方和等于它本身的数。(15分)*/
#include<stdio.h>
int main(){
int m,n,i,j;
scanf("%d %d",&m,&n);
if(m<1||m>1000||n<1||n>1000){
return 0;
}
for (i=m;i<=n;i++){
for (j=1;j<=10;j++){
if (i==j*j*j){
printf("%d ",i);
}
}
}
return 0;
}
//2、编写一个程序,找出最大素数,素数只能被1和自身除尽的数。(15分)
//输入:100 输出:97
#include<stdio.h>
#include<math.h>
int main(){
int x,i,j;
printf("请输入取值范围:");
scanf("%d",&x);
for(i=x;i>1;i--){
for(j=2;j<=sqrt(x);j++){
if(i%j==0){
break;
}
if(j>sqrt(x)-1){
printf("范围内最大素数为%d",i);
return 0;
}
}
}
return 0;
}
//3、编写程序计算1!+2!+3!+……+n!的值,其中n是键盘输入。(15分)
#include<stdio.h>
int main(){
int i,j,n;
int sum=1,total=0;
printf("请输入一个数n:");
scanf("%d",&n);
for (i=1;i<=n;i++){
sum = 1;
for (j=1;j<=i;j++){
sum *= j;
}
total += sum;
}
printf("%d",total);
return 0;
}
/*4、输入一个长度为10的数组,输出连续整数之和的最大值。例如: 输入:2,-3,5,-3,2,4,-6,3,1,1 输出:8(因为5+(-3)+2+4=8)(15分) */
#include<stdio.h>
int sum(int array[],int n){
int i,j,sum=0,maxSum=0;
for (i=0;i<n;i++){
sum = 0;
for (j=i;j<n;j++){
sum += array[j];
if (sum>maxSum){
maxSum = sum;
}
}
}
return maxSum;
}
int main(){
int N;
int array[] = {
2,-3,5,-3,2,4,-6,3,1,1};
N = sum(array,10);
printf("最大子序列和:%d",N);
return 0;
}
/*5、编写一个程序,输入一个长度不超过100的字符串,并删除字符串中重复的 字符。(20分) 样例输入:abacaeedabcdcd 样例输出:abced */
#include<stdio.h>
#include<string.h>
int main(){
char str[100];
char n[100];
int i,j,k,flag;
gets(str);
for (i=0;str[i]!='\0';i++){
flag = 1;
for (j=0;j<i;j++){
if (str[i]==n[j]){
flag = 0;
}
}
if (flag){
n[k++] = str[i];
}
}
n[k] = '\0';
puts(n);
return 0;
}
第六题在规定时间复杂度下目前我还做不出来
/*6、假设一整箱数组存在若干正数和负数,现在通过某种算法使得数组的所有负数 在正数的左边,且保证 负数和正数间元素相对位置不变,时间复杂度要求分为o(n) ,空间复杂度要求为o(1),不能使用辅助数组(20分)。 */
#include <stdio.h>
int sort(int *v, int len)
{
if (NULL == v || len <= 0){
return -1;
}
int i,j,k,begin,end,temp;
for(i = 0; i < len; ++ i){
k = i;//0
while(v[k] < 0){
++k;
}
begin = k;//0
while(v[k] >= 0){
++k;
}
end = k;//1
if (end > len-1){
break;
}
temp = v[end];//2
for(j=end;j>begin;--j)
{
v[j] = v[j-1];
}
v[begin] = temp;
}
return 0;
}
void print(const int *v, int len)
{
printf("Items AS : ");
unsigned int i;
for (i=0; i<len; ++i){
printf("%d ", v[i]);
}
printf("\n");
}
int main()
{
int v[] = {
-5, 2, -3, 4, -8, -9, 1, 3, -10};
int len = sizeof(v) / sizeof(v[0]);
print(v, len);
sort(v, len);
print(v, len);
return 0;
}