C语言编程复习.docx

上传人:b****5 文档编号:29930212 上传时间:2023-08-03 格式:DOCX 页数:20 大小:18.63KB
下载 相关 举报
C语言编程复习.docx_第1页
第1页 / 共20页
C语言编程复习.docx_第2页
第2页 / 共20页
C语言编程复习.docx_第3页
第3页 / 共20页
C语言编程复习.docx_第4页
第4页 / 共20页
C语言编程复习.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言编程复习.docx

《C语言编程复习.docx》由会员分享,可在线阅读,更多相关《C语言编程复习.docx(20页珍藏版)》请在冰豆网上搜索。

C语言编程复习.docx

C语言编程复习

【5.4】求!

+2!

+3!

+···+10!

的值

#include

intmain(void)

{

intf,i,j,s=0;

for(i=1;i<=10;i++)

{

f=1;

for(j=1;j<=i;j++)

f*=j;

s+=f;

}

printf("1!

+2!

+3!

+...+10!

=%d\n",s);

return0;

}

【5.9】求-2/3+3/5-4/7+5/9-6/11+···的前项之和

#include

intmain(void)

{

inta,i;//a:

分子

doubles=0;

for(i=1;i<=20;i++)

{

if(i%2==0)

a=-i;

else

a=i;

s+=1.0*a/(2*i-1);

}

printf("=%.2lf\n",s);

return0;

}

【5.10】求数列1,2,3,5,8,13,21,34···中第25项的值

#include

intmain(void)

{

inta,b,i,f;

a=1,b=2;

for(i=3;i<=25;i++)

{

f=a+b;

a=b;

b=f;

}

printf("=%d\n",f);

return0;

}

【5.13】输出2000~2100年之间所有的闰年。

符合以下二者之一的年份是闰年:

(1)能被整除,但不能被100整除,如2016(

2)能被400整除,如2000

要求:

每行输出5项

#include

intmain(void)

{

intyear,n=0;

for(year=2000;year<=2100;year++)

{

if(year%4==0&&year%100!

=0||year%400==0)

{

printf("%6d",year);

n++;

if(n%5==0)

printf("\n");

}

}

return0;

}

【5.14】输出所有的水仙花数。

水仙花数是一个三位正整数,每位数字的三次方之和等于该数本身。

例如:

1^3+5^3+3^3=153,153是水仙花数。

#include

intmain(void)

{

intx,i,j,k;

for(x=100;x<=999;x++)

{

i=x/100;

j=x/10%10;

k=x%10;

if(x==i*i*i+j*j*j+k*k*k)

printf("%5d",x);

}

printf("\n");

return0;

}

【5.15】输入若干整数,以-1结束,去掉最大值和最小值,求平均值。

#include

intmain(void)

{

intx,max,min,n=0,sum=0;

printf("输入若干个数,以-1结束:

\n");

scanf("%d",&x);

max=min=x;

while(x!

=-1)

{

sum+=x;

n++;

if(max

max=x;

if(min>x)

min=x;

scanf("%d",&x);

}

if(n>2)

printf("平均值为:

%.1lf\n",1.0*(sum-max-min)/(n-2));

else

printf("输入的分数个数小于\n");

return0;

}

【5.16】输入一行字符,统计英文字母、数字字符、空格和其他字符的个数。

#include

intmain(void)

{

intn1=0,n2=0,n3=0,n4=0;

charch;

printf("输入一行字符:

\n");

while((ch=getchar())!

='\n')

{

if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')

n1++;

elseif(ch>='0'&&ch<='9')

n2++;

elseif(ch=='')

n3++;

else

n4++;

}

printf("英文字母%d个,数字字符%d个,空格%d个,其他字符%d个。

\n",n1,n2,n3,n4);

return0;

}

【5.18】根据公式π/4≈1-1/3+1/5-1/7+···求π的近似值,绝对值小于10^-5的项不计算。

#include

#include

intmain(void)

{

inta=1;

doubleb=1,s=0;

while(abs(a)/b>=10e-5)

{

s+=a/b;

a=-a;

b=b+2;

}

printf("pi=%lf\n",s*4);

return0;

}

【5.21】输入一个正整数n,求n是几位数

include

intmain(void)

{

intn,count=0;

printf("输入一个正整数:

\n");

scanf("%d",&n);

while(n)

{

n=n/10;

count++;

}

printf("是%d位数\n",count);

return0;

}

【5.27】根据输入的行数输出图案。

例如,输入行数为7,则

#include

#include

intmain(void)

{

intn,i,j;

printf("输入行数:

");

scanf("%d",&n);

for(i=-n/2;i<=n/2;i++)

{

for(j=1;j<=abs(i);j++)

printf("");

for(j=1;j<=n-2*abs(i);j++)

printf("*");

printf("\n");

}

return0;

}

【5.28】输出100以内的所有质数,每行输出5个质数

#include

intmain(void)

{

intn,cou=0,i;

for(n=2;n<=100;n++)

{

for(i=2;i<=n-1;i++)

if(n%i==0)

break;

if(i==n)

{

printf("%6d",n);

cou++;

if(cou%5==0)

printf("\n");

}

}

return0;

【5.29】一百个铜钱买100只鸡,其中公鸡一只5钱,母鸡一只3钱,小鸡1钱三只。

问100只鸡中公鸡母鸡小鸡各多少只?

#include

intmain(void)

{

intx,y,z;

for(x=0;x<=100;x++)

for(y=0;y<=100;y++)

for(z=0;z<=100;z++)if(x+y+z==100&&15*x+9*y+z==300)

printf("公鸡%d个,母鸡%d个,小鸡%d个\n",x,y,z);

return0;

}

【6.1】输入10个数到数组t中,求最小值及最小值在数组t中的下标

#include

intmain(void)

{

intt[10],i,mini;

printf("输入10个数:

\n");

for(i=0;i<10;i++)

scanf("%d",&t[i]);

mini=0;

for(i=1;i<10;i++)

if(t[i]

mini=i;

printf("最小值为:

%d,其下标为:

%d\n",t[mini],mini);

return0;

}

【6.2】输入10个数到数组t中,再输入x,如果有与x相等的数组元素,输出该元素的下标,否则输出-1

#include

intmain(void)

{

intt[10],x,i,flag=0;

printf("输入10个数:

\n");

for(i=0;i<10;i++)

scanf("%d",&t[i]);

printf("输入x:

");

scanf("%d",&x);

for(i=0;i<10;i++)

if(x==t[i])

{

printf("与x相等的数组元素的下标是:

%d\n",i);

flag=1;

}

if(flag==0)

printf("-1\n");

return0;

}

【6.3】输入10个数到数组t中,按降序排序,输出排序结果

#include

intmain(void)

{

intt[10],i,j,tmp;

printf("输入10个数:

\n");

for(i=0;i<10;i++)

scanf("%d",&t[i]);

for(i=1;i<10;i++)

for(j=0;j<10-i;j++)

if(t[j]

{

tmp=t[j];

t[j]=t[j+1];

t[j+1]=tmp;

}

for(i=0;i<10;i++)

printf("%6d",t[i]);

printf("\n");

return0;

}

【6.7】求3行5列二维数组中的最小值,及最小值在数组中的行号和列号

#include

intmain(void)

{

inta[3][5],i,j,mini,minj;

printf("输入3行5列数组:

\n");

for(i=0;i<3;i++)

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

mini=minj=0;

for(i=0;i<3;i++)

for(j=0;j<5;j++)

if(a[mini][minj]>a[i][j])

{

mini=i;

minj=j;

}

printf("最小值:

%d,最小值行号:

%d,列号:

%d\n",a[mini][minj],mini,minj);

return0;

}

【6.8】求3行5列二维数组中每列数组元素的最小值,输出。

#include

intmain(void)

{

inta[3][5],i,j,min;

printf("输入3行5列数组:

\n");

for(i=0;i<3;i++)

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

for(i=0;i<5;i++)

{

min=a[0][i];

for(j=1;j<3;j++)

if(min>a[j][i])

min=a[j][i];

printf("%d列最小值为:

%d\n",i,min);

}

return0;

}

【6.9】求3行5列二维数组主对角线上元素之和

#include

intmain(void)

{

inta[3][3],i,j,sum=0;

printf("输入3行3列数组:

\n");

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

for(i=0;i<3;i++)

sum+=a[i][i];

printf("主对角线上元素只和为:

%d\n",sum);

return0;

}

 

【6.11】不调用库函数strcpy,将以下数组s1的字符串复制到数组s2中,并输出s2的字符串

Chars1[80],s2[80];

Getss1;

#include

intmain(void)

{

inti=0;

chars1[80],s2[80];

printf("输入一个字符串:

");

gets(s1);

while(s1[i]!

='\0')

{

s2[i]=s1[i];

i++;

}

s2[i]='\0';

printf("复制的字符串为:

");

puts(s2);

return0;

}

【6.14】输出数组s中字符串的子串,子串从s[begin]开始长度为len

Chars[80];

Intbegin,len;

Gets(s);

Scanf(“%d%d,&begin,&len);

【6.14】

#include

intmain(void)

{

inti,begin,len;

chars[80];

printf("输入一个字符串:

");

gets(s);

printf("输入子串的开始位置及长度:

");

scanf("%d%d",&begin,&len);

for(i=begin;i

printf("%c",s[i]);

printf("\n");

return0;

}nf(“%d%d,&begin,&len);

 

【7.3】编4个程序,分别用4种方法引用数组元素,输入10个整数,按升序排序,输出排序结果

#include

intmain(void)

{

inta[10],*p,t,i,j;

printf("输入10个整数:

\n");

for(p=a;p

scanf("%d",p);

for(i=0;i<10;i++)

{

p=a+i;

for(j=i+1;j<10;j++)

if(*p>*(a+j))

p=a+j;

t=*p;

*p=*(a+i);

*(a+i)=t;

}

for(p=a;p

printf("%5d",*p);

printf("\n");

return0;

}

【7.5】不调用库函数strcpy,将p指向的字符串复制到数组s中,并输出数组s中的字符串。

Chars[10],*p=”Chinese”;

#include

intmain(void)

{

chars[10],*p="Chinese";

inti=0;

while(*(p+i)!

='\0')

{

s[i]=*(p+i);

i++;

}

s[i]='\0';

puts(s);

return0;

}

 

【8.9】一只函数头为”intgetgcd(intm,intn)”,函数getgcd的功能:

返回形参m、n的最大公约数。

编写并调用函数getgcd.

#include

intgetgcd(intm,intn);

intmain(void)

{

inta,b,c;

printf("input2positiveintegers:

");

scanf("%d%d",&a,&b);

c=getgcd(a,b);

printf("%d\n",c);

return0;

}

intgetgcd(intm,intn)

{

intgcd;

if(m>n)

gcd=n;

else

gcd=m;

while(m%gcd||n%gcd)

gcd--;

returngcd;

}

【8.10】已知函数头为“intprime(intn)”,函数prime的功能:

如果n是质数,返回1;否则返回0.编写并调用函数prime输出100以内的所有质数,每行输出5个质数

#include

#include

intprime(intn);

intmain(void)

{

inta,b,c=0;

for(a=1;a<=100;a++)

{

b=prime(a);

if(1==b)

{

c++;

printf("%3d",a);

}

if(c%5==0)

printf("\n");

}

return0;

}

intprime(intn)

{

inti,m,flag=1;

m=(int)(sqrt(n)+1);

for(i=2;i

if(n%i==0)

flag=0;

returnflag;

}

【8.12】已知函数头为“intavg(intn,int[])”,函数avg的功能:

去掉长度为n的一维数组t中的最大值和最小值,计算并返回平均值,编写并调用函数avg

#include

intavg(intn,intt[]);

intmain(void)

{

inta[80],i;

printf("input10numbers\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("avg=%d\n",avg(10,a));

return0;

}

intavg(intn,intt[])

{

intj,sum=0,max,min;

max=t[0];

min=max;

for(j=0;j

{

if(max

max=t[j];

if(min>t[j])

min=t[j];

sum+=t[j];

}

return(sum-max-min)/(n-2);

}

【8.15】已知函数头为“intgetmin(intn,inr[][3])”,函数getmin的功能:

计算并返回行数为n列数为3的二维数组t中的最小值。

编写并调用函数getmin.

#include

intgetmin(intn,intr[][3]);

intmain(void)

{

inta[2][3],i,j;

printf("输入两行三列个正整数\n");

for(i=0;i<2;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

printf("min=%d\n",getmin(2,a));

return0;

}

intgetmin(intn,intr[][3])

{

inti,j,min;

min=r[0][0];

for(i=0;i

for(j=0;j<3;j++)

{

if(min>r[i][j])

min=r[i][j];

}

returnmin;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1