C语言操作TC2.0题目 20
一、程序改错第1题功能:用起泡法对n个整数从小到大排序,n不大于10。#include"stdio.h"/**********FOUND**********/voidso...
一、程序改错
第1题功能:用起泡法对n个整数从小到大排序,n不大于10。
#include "stdio.h"
/**********FOUND**********/
void sort(int x,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=n-2;j>=i;j--)
/**********FOUND**********/
if(x[j]<x[j+1])
{
t=x[j];
x[j]=x[j+1];
x[j+1]=t;
}
}
main()
{
int i,n,a[10];
printf("please input the length of the array:\n");
scanf("%d",&n);
printf("please input the array:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
/**********FOUND**********/
sort(a[10],n);
printf("output the sorted array:\n");
/**********FOUND**********/
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
第2题功能:有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的位置(下标加1);如果该数不在数组中,则输出“not find!”。
/**********FOUND**********/
#define <stdio.h>
#include <conio.h>
main()
{int mid,low=0,high=14,x,i;
int num[15]={2,6,8,9,12,15,18,20,23,26,29,32,36,38,40};
clrscr();
printf("printf 15 numbers:\n");
for(i=0;i<15;i++)
/**********FOUND**********/
printf("%3d",num+i);
printf("\ninput x:");
scanf("%d",&x);
/**********FOUND**********/
while(low<=14)
{ mid=(low+high)/2;
if(x==*(num+mid))
/**********FOUND**********/
{ printf("%d",mid);
exit(1);
}
if(x>*(num+mid)) low=mid+1;
if(x<*(num+mid)) high=mid-1;
}
printf("not find!\n");
}
第3题
功能:用递归法将一个整数n转换成字符串。例如,输入整数987, 应输出字符串“987”。
说明:n 的位数不超过5位,并且在主函数中输入。
/**********FOUND**********/
#define "stdio.h"
/**********FOUND**********/
char s[6]='0';
int i=4;
int changdg(int n)
{
if(n/10==0) s[i]=n+48;
else
{
/**********FOUND**********/
s[i]=n%10+65;
i--;
changdg(n/10);
}
}
main()
{
int n;
scanf("%d",&n);
/**********FOUND**********/
changdg(int n);
puts(&s[i]);
}
第5题 (10.0分) 题号:28
功能:用辗转相除法求出一组正整数的最大公约数。
#include<math.h>
#define N 101
struct PR{ int i;int flag; };
void prime(struct PR a[],int n)
{ int i,j;
for(i=2;i<sqrt(n);i++)
if(a[i].i)
for(j=i+1;j<n;j++)
/***********FOUND***********/
if(a[j].i && a[j].i%a[i].i=0)
a[j].i=0;
for(i=12;i<=n;i++)
if(a[i].i)
{ int k=i,s=0;
while(k) { s=s*10+k%10;k/=10; }
if(a[s].i)
/***********FOUND***********/
{ a[k].flag=i;a[i].flag=k;}
}
}
main()
/***********FOUND***********/
{ struct PR a[N]=0;
int i;
clrscr();
for(i=2;i<N;i++)
/***********FOUND***********/
a[i]=i;
prime(a,N);
for(i=2;i<N;i++)
if(a[i].i) printf("%3d",a[i].i);
printf("\n");
for(i=10;i<N;i++)
if(a[i].flag) printf("%4d,%4d\n",a[i].i,a[i].flag);
getch();
} 展开
第1题功能:用起泡法对n个整数从小到大排序,n不大于10。
#include "stdio.h"
/**********FOUND**********/
void sort(int x,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=n-2;j>=i;j--)
/**********FOUND**********/
if(x[j]<x[j+1])
{
t=x[j];
x[j]=x[j+1];
x[j+1]=t;
}
}
main()
{
int i,n,a[10];
printf("please input the length of the array:\n");
scanf("%d",&n);
printf("please input the array:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
/**********FOUND**********/
sort(a[10],n);
printf("output the sorted array:\n");
/**********FOUND**********/
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
第2题功能:有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的位置(下标加1);如果该数不在数组中,则输出“not find!”。
/**********FOUND**********/
#define <stdio.h>
#include <conio.h>
main()
{int mid,low=0,high=14,x,i;
int num[15]={2,6,8,9,12,15,18,20,23,26,29,32,36,38,40};
clrscr();
printf("printf 15 numbers:\n");
for(i=0;i<15;i++)
/**********FOUND**********/
printf("%3d",num+i);
printf("\ninput x:");
scanf("%d",&x);
/**********FOUND**********/
while(low<=14)
{ mid=(low+high)/2;
if(x==*(num+mid))
/**********FOUND**********/
{ printf("%d",mid);
exit(1);
}
if(x>*(num+mid)) low=mid+1;
if(x<*(num+mid)) high=mid-1;
}
printf("not find!\n");
}
第3题
功能:用递归法将一个整数n转换成字符串。例如,输入整数987, 应输出字符串“987”。
说明:n 的位数不超过5位,并且在主函数中输入。
/**********FOUND**********/
#define "stdio.h"
/**********FOUND**********/
char s[6]='0';
int i=4;
int changdg(int n)
{
if(n/10==0) s[i]=n+48;
else
{
/**********FOUND**********/
s[i]=n%10+65;
i--;
changdg(n/10);
}
}
main()
{
int n;
scanf("%d",&n);
/**********FOUND**********/
changdg(int n);
puts(&s[i]);
}
第5题 (10.0分) 题号:28
功能:用辗转相除法求出一组正整数的最大公约数。
#include<math.h>
#define N 101
struct PR{ int i;int flag; };
void prime(struct PR a[],int n)
{ int i,j;
for(i=2;i<sqrt(n);i++)
if(a[i].i)
for(j=i+1;j<n;j++)
/***********FOUND***********/
if(a[j].i && a[j].i%a[i].i=0)
a[j].i=0;
for(i=12;i<=n;i++)
if(a[i].i)
{ int k=i,s=0;
while(k) { s=s*10+k%10;k/=10; }
if(a[s].i)
/***********FOUND***********/
{ a[k].flag=i;a[i].flag=k;}
}
}
main()
/***********FOUND***********/
{ struct PR a[N]=0;
int i;
clrscr();
for(i=2;i<N;i++)
/***********FOUND***********/
a[i]=i;
prime(a,N);
for(i=2;i<N;i++)
if(a[i].i) printf("%3d",a[i].i);
printf("\n");
for(i=10;i<N;i++)
if(a[i].flag) printf("%4d,%4d\n",a[i].i,a[i].flag);
getch();
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询