1.键盘输入10个数,找出和平均数最接近的数
int arr[10],i,minIndex;
int sum=0,average=0,min;
printf("输入10个整数:\n");
for(i=0;i<10;i++){
scanf("%d",&arr[i]);
sum+=arr[i];
}
for(i=0;i<10;i++){
printf("%d\t",arr[i]);
}
average=sum/10;
minIndex=0;
min=abs(arr[minIndex]-average);
for(i=1;i<10;i++){
if(abs(arr[i]-average)<min){
minIndex=i;
min=abs(arr[minIndex]-average);
}
}
printf("\n平均数是:%d\n",average);
printf("最接近平均数的是%d",arr[minIndex]);
return 0;
2.求2001-2016之间的素数
法1
int flag=1;
for(int i=2001;i<=2016;i++){
flag=1;// 标记素数
for(int j=2;j<=sqrt(i)&&flag;j++){
if(i%j==0){
flag=0;// 非素数
}
}
if(flag){
printf("%d\t",i);
}
}
法2
int i,j;
for( i=2001;i<=2016;i++){
for( j=2;j<=sqrt(i);j++){
if(i%j==0) break;
}
if(j>sqrt(i)){
printf("%d\t",i);
}
}
3.求 1+2+4+7+11+16 的n项和
int main()
{
printf("输入n\n");
int n;
scanf("%d",&n);
int sum;
for(int i=1;i<=n;i++){
printf("%d\t",f(i));
sum+=f(i);
}
printf("\nn项和:%d\n",sum);
}
int f(int n){
if(n==1) return 1;
return f(n-1)+n-1;
}
4.递归求(2*n)!
int f(int n){
if(n==1) return 2;
return (2*n)*(2*n-1)*f(n-1);
}
int main(){
int n;
scanf("%d",&n);
printf("%d",f(n));
}
5.建立循环链表并正反向输出
typedef struct dlinknode{
int data;
struct dlinknode * pre;
struct dlinknode * next;
}dlinknode,*dlink;
dlink create(){
dlink head,p;
head=(dlink)malloc(sizeof(dlinknode));
head->next=head;
head->pre=head;
int x;
printf("输入整数建立链表\n");
scanf("%d",&x);
while(x!=0){
p=(dlink)malloc(sizeof(dlinknode));
p->data=x;
p->next=head->next;
head->next->pre=p;
p->pre=head;
head->next=p;
scanf("%d",&x);
}
return head;
}
//正向输出
void printPlus(dlink head){
dlink p=head->pre;
printf("正向输出:\n");
while(p!=head){
printf("%d\t",p->data);
p=p->pre;
}
}
//反向输出
void printReverse(dlink head){
dlink p=head->next;
printf("\n反向输出:\n");
while(p!=head){
printf("%d\t",p->data);
p=p->next;
}
}
int main(){
dlink head=NULL;
head=create();
printPlus(head);
printReverse(head);
}