1.编写power函数,该函数的功能是得到从键盘输入的两个数的
值。要求在主函数中调用power函数,实现求解从键盘上输入二进制数字,要求将其转化成十进制形式。并在主函数中输出十进制数。
2.#include
3.#include
4.int power(int x,int m)
5.{
6. int s=1, k;
7. for(k=1;k<=m;k++)
8. s=s*x;
9. return (s);
10.}
11.int f(char a[10])
12.{
13.
14. int i,j,sum=0;
15. j=strlen(a);
16. for(i=0;i
#include
double power(double x,double m)
{
double s=1;
int k;
for(k=1;k<=m;k++)
s=s*x;
return (s);
}
double f(char a[10])
{
int i,j;
double sum=0;
j=strlen(a);
for(i=0;i='A'&&a[i]<='F')
{
sum=sum+(a[i]-'A'+10)*power(16,(j-i-1));
}
else
sum=sum+(a[i]-'0')*power(16,(j-i-1));
}
return (sum);
}
main()
{
int c;
char s1[10]={0};
gets(s1);
c=f(s1);
printf("%d\n",c);
}//十六进制转化成十进制
2.编写isprime函数,该函数的功能是判断某数字是否是素数。要求在主函数中调用isprime函数,输出200~500之间的所有素数,并输出8个素数进行换行。
3.#include
4.int isprime(int m)
5.{
6. int i,k;
7. k=1;
8. for(i=2;i
5.main()
6.{
7. int huis(long n);
8. long m,j;
9. for(m=10;m<1000;m++)
10. {
11. if(huis(m)&&huis(m*m)&&huis(m*m*m))
12. {
13. printf("%d,%d,%d\n",m,m*m,m*m*m);
14. j++;
15. if(j%5==0)
16. printf("\n");
17. }
18. }
19.
20.
21.}
22.int huis(long n)
23.{
24. long i=n,m=0;
25. while(i)
26. {
27. m=m*10+i%10;
28. i=i/10;
29.
30. }
31. return(m==n);
32.}
4.用二分法实现查找数组中的元素。
算法思想:假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2。
(1)开始令front=0(指向3),end=7(指向88),则mid=3(指向36)。因为mid>x,故应在前半段中查找。
(2)令新的end=mid-1=2,而front=0不变,则新的mid=1。此时x>mid,故确定应在后半段中查找。
(3)令新的front=mid+1=2,而end=2不变,则新的mid=2,此时a[mid]=x,查找成功。
如果要查找的数不是数列中的数,例如x=25,当第三次判断时,x>a[mid],按以上规律,令front=mid+1,即front=3,出现front>end的情况,表示查找不成功。
#include
void main()
{
int a[10]={3,5,8,12,15,21,26,29,30,50},front,end,mid,x;
scanf("%d",&x);
front=0;
end=9;
while(front<=end)
{
mid=(front+end)/2;
if(a[mid]==x)
{
printf("查找成功,下标为%d",mid);
break;
}
else if(a[mid]>x)
{
end=mid-1;
}
else if(a[mid]end)
printf("查找不成功");
}
5 从键盘输入如下字符:******A*BC**D******,完成以下功能:1)当继续输入字符,输入的为L,删除左边的星号,将其放到右边,结果为: A*BC**D************;2)当继续输入字符,输入的为M,删除中间的星号,将其放到右边,结果为: ******ABCD*******;3)当继续输入字符,输入的为R,删除右边的星号,结果为: ******A*BC**D。
(1)#include
2. #include
3.
4. int main(void)
5. {
6. char s1[80] = "******A*BC**D******";
7. char s2[80];
8. int i=0,j=0,countstar=0;
9. int nSize = strlen(s1);
10.
11. for (i=0; i
#include
int main(void)
{
char s1[80] = "******A*BC**D******";
char s2[80];
int i=0,j=0;
int nSize = strlen(s1);
for (i=0; i=0; i++)
{
if (s1[i]=='*')
{
s2[j++] = '*';
}
else
{
break;
}
}
}
s2[j]=0;
puts(s2);
return 0;
}
(3)#include
#include
void main()
{
char s[100]={"******A*BC**D******"};
int i,j,k=0,m,n;
n=strlen(s);
for(i=(n-1);i>=0;i--)
{ if(s[i]=='*')
{
k++;
}
else
break;
}
s[n-k]='\0';
for(j=0;j
#include
void main()
{
char s[5][20],t[20];
int i,j;
for(i=0;i<5;i++)
scanf("%s",s[i]);
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
if(strcmp(s[i],s[j])>0)
{
strcpy(t,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],t);
}
}
}
for(i=0;i<5;i++)
puts(s[i]);
}
7. 用数组实现10进制数转换为二进制、八进制和十六进制。
#include
void main()
{ char a[20];
int x,y,t,i=0;
scanf("%d",&x);
scanf("%d",&y);
while(x!=0)
{
t=x/y;
if(t>'0'&&t<'10')
{a[++i]=t+'0';}
else
{a[++i]=t-10+'A';}
x=x/y;
}
a[i]='\0';
while(i>=1)
{printf("%c",a[--i]);}
}
8 用数组实现对键盘输入的10个数进行排序。用冒泡法实现对10个数从小到大排序,选择法实现对10个数从大到小排序。
#include
void main()
{
int a[10]={12,15,48,36,78,79,15,46,25,36},i,j,t;
for(i=0;i<10;i++)
printf("%4d",a[i]);
for(j=0;j<9;j++)
{ for(i=j+1;i<10;i++)/*冒泡法:for(i=j+1;i<10-1-j;i++)*/
{
if (a[j]
void main()
{
int a[10][10]={0},i,j,b[10][10];
for(i=0;i<10;i++)
{ a[i][0]=1;
for(j=1;j
int main(void)
{
int a[4][4] = {{15,4,2,16}, {12,7,9,6}, {8,14,11,5}, {3,10,1,13}}, i, j, t, x;
for (i = 0; i < 4; i++)
{
if (i % 2 == 0)
{
for (x = 0; x < 3; x++)
{
for (j = 0; j < 3 - x; j++)
{
if (a[i][j] > a[i][j + 1])
{
t = a[i][j];
a[i][j] = a[i][j + 1];
a[i][j+1] = t;
}
}
}
}
else
{
for (x = 0; x < 3; x++)
{
for (j = 0; j < 3 - x; j++)
{
if (a[i][j] < a[i][j + 1])
{
t = a[i][j];
a[i][j] = a[i][j + 1];
a[i][j + 1] = t;
}
}
}
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
printf("%-5d",a[i][j]);
}
printf("\n");
}
return 0;
}
11 输出所有“水仙花数”,所谓的“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=13+53+33。(for结构实现)
#include
void main()
{
int m,a1,a2,b1,b2;
for(m=100;m<=1000;m++)
{ a1=m%10;
b1=m/10;
a2=b1%10;
b2=b1/10;
if (m==a1*a1*a1+a2*a2*a2+b2*b2*b2)
printf("%d\n",m);
}
}
12 用迭代法求
。求平方根的迭代公式为:
,要求前后两次求出的x的差的绝对值小于10-5。(do…while结构实现)
#include
#include
void main()
{
long float a,x1,x2;
scanf("%lf",&a);
x1=a/2;
do{
x2=x1;
x1=(x2+a/x2)/2;
}while(fabs(x1-x2)>=1e-5);
printf("%lf",x1);
}
13 有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,…。求这个序列前20项之和。(while结构实现)
#include
void main()
{
double a=1.0,b=2,i=1,t, sum=0;
while(i<=20)
{
t=b/a;
sum=sum+t;
b=a+b;
a=b-a;
i++;
}
printf("%lf",sum);
}
14 编程实现将10进制数字转换为16进制数字,要求从键盘输入十进制数字输出对应的十六进制数字,例如输入255,输出FF。
#include"stdio.h"
main()
{ char a[20];
int x,y,t,i=0;
scanf("%d",&x);
scanf("%d",&y);
while(x)
{
t=x%y;
if(t>=0&&t<=9)//0到9
{
a[i++]=t+'0';
}
else//10开始用字母表示
{
a[i++]=t-10+'A';
}
x/=y;
}
a[i]='\0';
while(i)
printf("%c",a[--i]);
}
15 用switch结构实现求和、差、积、商和求余数,运算符分别是+、-、*、%,如从键盘输入2+5得到7。
#include
void main()
{
double x,y;
char ch;
printf("input x,y:");
scanf("%lf,%lf",&x,&y);
scanf("%c",&ch);
printf("input ch:");
scanf("%c",&ch);
switch(ch)
{
case '+':printf("%f+%f=%f\n",x,y,x+y);break;
case '-':printf("%f-%f=%f\n",x,y,x-y);break;
case '/':printf("%f/%f=%f\n",x,y,x/y);break;
case '*':printf("%f*%f=%f\n",x,y,x*y);break;
default: printf("incorrrect symbol!\n");
}
}
16 求
之值,其中a表示数字,n表示a的位数,a和n由键盘输入。(while结构实现)
(1)#include
void main()
{
int a,aa=0,sum=0,i=1,n;
scanf("%d%d",&a,&n);
do{
aa=aa*10+a;
sum=sum+aa;
i++;
}while(i<=n);
printf("a+aa+aaa+...+aaa...a=%d\n",sum);
}
(2)#include
void main()
{
int a,sum,s,n,i;
sum=0;
s=0;
i=1;
scanf("%d%d",&a,&n);
while(i<=n)
{
s=s*10+a;
i++;
sum=s+sum;
17 编程实现将10进制数字转换为2进制数字,要求从键盘输入十进制数字输出对应的二进制数字,例如输入10,输出1010。(do…while结构实现)
(1)#include
void main()
{
int a, b=0,m=1,sum=0;
scanf("%d",&a);
do
{
b=a%2;
sum=sum+b*m;
m=m*10;
a=a/2;
}while(a!=0);
printf("%d",sum);
}
(2)#include
#include
void main()
{
int a,t,i=0,b=10,s,sum=0;
scanf("%d",&a);
do
{
t=a%2;
a=a/2;
s=pow(b,i)*t;
i=i+1;
sum=sum+s;
} while(a!=0);
printf("%d",sum);
}
18 用sizeof验证float,char,int型变量所占字节的个数
#include
int main()
{
char c;
int i;
float f;
printf("sizeof(char)=%d\n",sizeof(char));
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(float)=%d\n",sizeof(float));
printf("\n");
c='a';
i=1;
printf("%c\n",c);
printf("%d\n",i);
printf("sizeof(char)=%d\n",sizeof(c));
printf("sizeof(int)=%d\n",sizeof(i));
printf("\n");
}