1、【问题描述】
立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x.求给定的x经过n次迭代后立方根的值。
输入:
输入有多组数据。
每组一行,输入x n。
输出:
迭代n次后的立方根,double精度,保留小数点后面六位。
样例输入:
3000000 28
样例输出:
144.224957
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
double fun(double x,int n)
{
double sum = 0;
int i=0;
double x1;
x1 = x;
while(i<n){
sum = x*2/3 + x1/(3*x*x);
x = sum;
i++;
}
return sum;
}
int main()
{
int x,n;
double y;
while (scanf("%d%d",&x,&n)!=EOF){
y = fun(x,n);
printf("%6f\n",y);
}
}
2、数组排序
输入一个数组的值,求出各个值从小到大排序后的次序。
输入:输入的第一个数为数组的长度,后面的数为数组中的值,以空格分割
输出:各输入的值按从小到大排列的次序。
sample
input:
4
-3 75 12 -3
output:
1 3 2 1
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#define N 1000
struct NUM{
int data;
int order;
}Array[N];
void SelectSort(NUM *a,int size)
{
int i,j;
NUM t;
int minnum;
for(i=0;i<size-1;i++)
{
minnum = i;
for(j=i;j<size;j++)
{
if(a[minnum].data>a[j].data)
minnum = j;
}
if(i!=minnum)
{
t = a[minnum];
a[minnum] = a[i];
a[i] = t;
}
}
}
int main()
{
int num;
int order[N];
NUM temp;
while(scanf("%d",&num)!=EOF){
for(int i=0;i<num;i++){
scanf("%d",&Array[i].data);
Array[i].order = i;
order[i] = 0;
}
SelectSort(Array,num);
int cnt = 1;
int pre = -999999;
for(int i=0;i<num;i++){
if(i&&pre==Array[i].data){
order[Array[i].order] = cnt;
}
else if(i&&pre!=Array[i].data){
order[Array[i].order] = ++cnt;
}
else if(!i){
order[Array[i].order] = cnt;
}
pre = Array[i].data;
}
for(int i=0;i<num;i++){
if(i!=num-1){
printf("%d ",order[i]);
}
else printf("%d\n",order[i]);
}
}
}
3、字符串的查找删除
给定文件filein.txt 按要求输出fileout.txt。
输入: 无空格的字符串
输出: 将filein.txt删除输入的字符串(不区分大小写),输出至fileout.txt
sample
输入:in
输出:将filein.txt 中的In、IN、iN、in删除,每行中的空格全部提前至行首,输出至fileout.txt
filein.txt中的值为:
#include <stdio.h>
int main()
{
printf(" Hi ");
}
输出的fileout.txt为
#clude<stdio.h>
tma()
{
prtf("Hi");
}
#include<stdio.h>
#include<string.h>
int main()
{
char str[100]={'\0'};
char del[10]={'\0'};
scanf("%s",del);
getchar();
while(gets(str)){
int i,j;
for(i=0;str[i]!='\0';){
j=0;
while(str[i]==del[j]||str[i]==del[j]+32||del[j]==str[i]+32){
i++;j++;
if(del[j]=='\0')break;
}
if(j==0)
i++;
if(del[j]=='\0'){
for(int k=i-j;k<i;k++){
str[k] = ' ';
}
}
}
for (int m = 0; str[m] != '\0'; m++)
if (str[m] != ' ')
printf("%c", str[m]);
printf("\n");
}
return 0;
}