C语言常见实验题目汇总.docx

上传人:b****5 文档编号:11900295 上传时间:2023-04-08 格式:DOCX 页数:39 大小:1.52MB
下载 相关 举报
C语言常见实验题目汇总.docx_第1页
第1页 / 共39页
C语言常见实验题目汇总.docx_第2页
第2页 / 共39页
C语言常见实验题目汇总.docx_第3页
第3页 / 共39页
C语言常见实验题目汇总.docx_第4页
第4页 / 共39页
C语言常见实验题目汇总.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

C语言常见实验题目汇总.docx

《C语言常见实验题目汇总.docx》由会员分享,可在线阅读,更多相关《C语言常见实验题目汇总.docx(39页珍藏版)》请在冰豆网上搜索。

C语言常见实验题目汇总.docx

C语言常见实验题目汇总

C语言实验汇总

1.输入1个三位数,求这个数的逆序数(例176——>671):

printf(“请输入三位整数:

”);

scanf(“%d”,&e);

f=e/100;//分解百位数字

g=e/10%10;//分解十位数字

h=e%10;//分解个位数字

i=h*100+g*10+f;

printf(“逆序数:

%d”,i);

2.输入两个数字,求最大公约数和最小公倍数

3.求e的近似值,精确到小数位后6位

4.猴子吃桃问题

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少桃子。

5.输出单词的个数

由键盘输入一个句子(总字符个数从1个至80个均有可能,以回车符表示结束),以空格分割单词。

6.百万富翁问题

一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。

该计划如下:

我每天给你m元,而你第一天只需给我一分钱。

第二天我仍给你m元,你给我2分钱。

第三天,我仍给你m元,你给我4分钱。

依次类推,你每天给我的钱是前一天的两倍,直到一个月。

百万富翁很高兴,欣然接受这个契约。

现要求,编写一个程序,由键盘输入m,计算多少天后,百万富翁开始亏钱。

7.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?

main()

{

inti,j,k;

printf("\n");

for(i=1;i<5;i++)/*以下为三重循环*/

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

for(k=1;k<5;k++)

{

if(i!

=k&&i!

=j&&j!

=k)/*确保i、j、k三位互不相同*/

printf("%d,%d,%d\n",i,j,k);

}

}

8.输入某年某月某日,判断这一天是这一年的第几天

main()

{

intday,month,year,sum,leap;

printf("\npleaseinputyear,month,day\n");

scanf("%d,%d,%d",&year,&month,&day);

switch(month)/*先计算某月以前月份的总天数*/

{

case1:

sum=0;break;

case2:

sum=31;break;

case3:

sum=59;break;

case4:

sum=90;break;

case5:

sum=120;break;

case6:

sum=151;break;

case7:

sum=181;break;

case8:

sum=212;break;

case9:

sum=243;break;

case10:

sum=273;break;

case11:

sum=304;break;

case12:

sum=334;break;

default:

printf("dataerror");break;

}

sum=sum+day;/*再加上某天的天数*/

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

=0))/*判断是不是闰年*/

leap=1;

else

leap=0;

if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("Itisthe%dthday.",sum);

}

9.输入三个整数x,y,z,请把这三个数由小到大输出

main()

{

intx,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if(x>y)

{t=x;x=y;y=t;}/*交换x,y的值*/

if(x>z)

{t=z;z=x;x=t;}/*交换x,z的值*/

if(y>z)

{t=y;y=z;z=t;}/*交换z,y的值*/

printf("smalltobig:

%d%d%d\n",x,y,z);

}

10.斐波那契数列

古典问题:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

main()

{

longf1,f2;

inti;

f1=f2=1;

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

{printf("%12ld%12ld",f1,f2);

if(i%2==0)printf("\n");/*控制输出,每行四个*/

f1=f1+f2;/*前两个月加起来赋值给第三个月*/

f2=f1+f2;/*前两个月加起来赋值给第三个月*/

}

}

11.判断101-200之间有多少个素数,并输出所有素数

#include"stdio.h"

#include"math.h"

main()

{

intm,i,k,h=0,leap=1;

printf("\n");

for(m=101;m<=200;m++)

{k=sqrt(m);

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

if(m%i==0)

break;

if(i>=k+1)

{

printf(“%d”,m);

n=n+1;

}

If(n%10==0)

printf(“\n”);

}

}

 

12.求100以内的素数

#include

#include

voidmain()

{

inti,j,n,a[101];

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

a[i]=i;

a[1]=0;

for(i=2;i

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

{

if(a[i]!

=0&&a[j]!

=0)

if(a[j]%a[i]==0)

a[j]=0;

}

printf("\n");

for(i=1,n=0;i<=100;i++)

{

if(a[i]!

=0)

{

printf("%5d",a[i]);

n++;

}

if(n==10)

{

printf("\n");

n=0;

}

}

printf("\n");

}

13.打印所有的水仙花数

“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个“水仙花数”,因为153=1³+5³+3³。

main()

{

inti,j,k,n;

printf("'waterflower'numberis:

");

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

{

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf("%-5d",n);

}

}

printf("\n");

}

14.将一个正整数分解质因数

例如:

输入90,打印出90=2*3*3*5.

intmain()

{

intn,i;

printf("\npleaseinputanumber:

\n");

scanf("%d",&n);

printf("%d=",n);

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

{

while(n!

=i)

{

if(n%i==0)

{printf("%d*",i);

n=n/i;

}

else

break;

}

}

printf("%d",n);

return0;

}

15.统计输入字符数

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

#include"stdio.h"

main()

{

charc;

intletters=0,space=0,digit=0,others=0;

printf("pleaseinputsomecharacters\n");

while((c=getchar())!

='\n')

{

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

letters++;

elseif(c=='')

space++;

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

digit++;

else

others++;

}

printf("allinall:

char=%dspace=%ddigit=%dothers=%d\n",letters,

space,digit,others);

}

16.求S=a+aa+aaa+aaaa+aa...a的值

其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

main()

{

inta,n,count=1;

longintsn=0,tn=0;

printf("pleaseinputaandn\n");

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

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

while(count<=n)

{

tn=tn+a;

sn=sn+tn;

a=a*10;

++count;

}

printf("a+aa+...=%ld\n",sn);

}

17.找出1000以内的所有完数

一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3。

#include

intmain()

{

intm,s,i;

for(m=2;m<1000;m++)

{

s=0;

for(i=1;i

if((m%i)==0)

s=s+i;

if(s==m)

{

printf("%d,itsfactorsare",m);

for(i=1;i

if(m%i==0)

printf("%d",i);

printf("\n");

}

}

return0;

}

18.打印一个菱形

#include

intmain()

{

inti,j,k;

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

{

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

printf("");

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

printf("*");

printf("\n");

}

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

{

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

printf("");

for(k=0;k<=4-2*i;k++)

printf("*");

printf("\n");

}

}

19.有一分数序列,求前20项和

有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

#include

intmain()

{

intn,t,number=20;

floata=2,b=1,s=0;

for(n=1;n<=number;n++)

{

s=s+a/b;

t=a;

a=a+b;

b=t;

}

printf("sumis%9.6f\n",s);

}

20.求

#include

voidmain()

{

floats=0,t=1;

intn;

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

{

t=t*n;

s=s+t;

}

printf("1!

+2!

+3!

+…+20!

=%e",s);

}

21.冒泡法:

10数排序

#include

voidmain()

{

inta[10];

inti,j,t;

printf("input10number:

\n");

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

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

printf("\n");

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

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

if(a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf("thesortednumbers:

\n");

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

printf("%d",a[i]);

printf("\n");

}

22.选择法:

10数排序

#include

voidmain()

{

inti,j,min,temp,a[11];

printf("enterdata:

\n");

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

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

printf("\n");

printf("Theoriginalnumbers:

\n");

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

printf("%d",a[i]);

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

{

min=i;

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

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

min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf("\nThesortednumbers:

\n");

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

printf("%5d",a[i]);

printf("\n");

}

23.判断一个五位数是否是回文数

例如12321是回文数,个位与万位相同,十位与千位相同。

main()

{

longge,shi,qian,wan,x;

scanf("%ld",&x);

wan=x/10000;

qian=x%10000/1000;

shi=x%100/10;

ge=x%10;

if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/

printf("thisnumberisahuiwen\n");

else

printf("thisnumberisnotahuiwen\n");

}

24.星期几问题

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

#include

voidmain()

{

charletter;

printf("pleaseinputthefirstletterofsomeday\n");

while((letter=getch())!

='Y')/*当所按字母为Y时才结束*/

{

switch(letter)

{case'S':

printf("pleaseinputsecondletter\n");

if((letter=getch())=='a')

printf("saturday\n");

elseif((letter=getch())=='u')

printf("sunday\n");

elseprintf("dataerror\n");

break;

case'F':

printf("friday\n");break;

case'M':

printf("monday\n");break;

case'T':

printf("pleaseinputsecondletter\n");

if((letter=getch())=='u')

printf("tuesday\n");

elseif((letter=getch())=='h')

printf("thursday\n");

elseprintf("dataerror\n");

break;

case'W':

printf("wednesday\n");break;

default:

printf("dataerror\n");

}

}

}

25.折半查找法查找数组元素

26.字符串链接(非strcat)

27.二维数组“鞍点”

找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。

也可能没有鞍点。

28.转置矩阵

键盘输入一个3×4的矩阵,要求输出它的转置矩阵(行成列,列成行)。

29.统计不同的数字个数

由键盘输入20个整数,统计不同数字的个数。

30.高精度加法

由键盘输入两个位数很长的整数(一行一个数,每个数最长不超过80位),试计算并输出这两个数的和。

31.回文串

读入一行字符串(不多于80个字符,以回车结束),判断该字符串是否为回文串(即从左向右拼写与从右向左拼写是一样的),是输出Y,否输出N。

32.合并字符串

从键盘输入3个字符串(每个字符串以回车符做为结束标志),将3个字符串以输入先后顺序合并到字符串s中,请填空使用程序完整。

#include"stdio.h"

#include"string.h"

main()

{

chars[100]="";

chara[30];

gets(a);strcat(s,a);

gets(a);strcat(s,a);

gets(a);strcat(s,a);

printf("%s",s);

}

33.字符串寻找

由键盘输入两个字符串(假设第一个字符串必包含第二个字符串,如第一个字符串为ABCDEF,第二个为CDE,则CDE包含在ABCDEF中),现要求编程输出第二字符串在第一行字符串中出现的位置。

34.求一个3×3矩阵对角线元素之和

main()

{

floata[3][3],sum=0;

inti,j;

printf("pleaseinputrectangleelement:

\n");

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

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

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

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

sum=sum+a[i][i];

printf("duijiaoxianheis%6.2f",sum);

}

35.数组数据的插入

有一个已经排好序的数组。

现输入一个数,要求按原来的规律将它插入数组中。

main()

{

inta[11]={1,4,6,9,13,16,19,28,40,100};

inttemp1,temp2,number,end,i,j;

printf("originalarrayis:

\n");

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

printf("%5d",a[i]);

printf("\n");

printf("insertanewnumber:

");

scanf("%d",&number);

end=a[9];

if(number>end)

a[10]=number;

else

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

{if(a[i]>number)

{temp1=a[i];

a[i]=number;

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

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

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

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

}

 

36.古典问题:

杨辉三角

打印出杨辉三角形(要求打印出10行)

main()

{inti,j;

inta[10][10];

printf("\n");

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

{

a[i][0]=1;

a[i][i]=1;

}

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

for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

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

{

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

printf("%5d",a[i][j]);

printf("\n");

}

}

37.古典问题:

魔方阵

输出魔方阵,魔方阵是每一行、每一列和对角线之和均相等。

要求输入1~n²(n>1)之间的自然数构成的魔方阵。

#include

intmain()

{

inta[16][16],i,j,k,p,n;

p=1;

while(p==1)

{

printf("entern(n=1to15):

");

scanf("%d",&n);

if((n!

=0)&&(n<=15)&&(n%2!

=0))

p=0;

}

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

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

a[i][j]=0;

j=n/2+1;

a[1][j]=1;

for(k=2;k<=n*n;k++)

{

i=i-1;

j=j+1;

if((i<1)&&(j>n))

{

i=i+2;

j=j-1;

}

else

{

if(i<1)i=n;

if(j>n)j=1;

}

if(a[i][j]==0)

a[i][j]=k;

else

{

i=i+2;

j=j-1;

a[i][j]=k;

}

}

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

{

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

printf("%5d",a[i][j]);

printf("\n");

}

}

38.求10位整数各位和

39.判断素数

40.查找字符串中最长的单词

41.递归法求阶乘

42.十进制转二进制

例如1000

(2)=8(10);

43.三个数排序(指针)

44.三个字符串排序(指针)

45.二维数组行列互换(指针)

46.古典问题:

n人围圈

有n个人围成一圈,顺序排号。

从第一个恩开始报数,凡报到3的人退出,问最后留下的是原来第几号的人。

47.两个字符串判断是否相等

48.定积分

49.正数、负数、零统计

50.数组移位

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。

main()

{

intnumber[20],n,m,i;

printf("thetotalnumbersis:

");

scanf("%d",&n);

printf("backm:

");

scanf("%d",&m);

for(i=0;i

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

scanf("%d",&number[n-1]);

move(number,n,m);

for(i=0;i

printf("%d,",number[i]);

printf("%d",number[n-1]

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

当前位置:首页 > 工程科技 > 能源化工

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

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