C语言程序设计题集.docx

上传人:b****8 文档编号:29986604 上传时间:2023-08-04 格式:DOCX 页数:31 大小:228.35KB
下载 相关 举报
C语言程序设计题集.docx_第1页
第1页 / 共31页
C语言程序设计题集.docx_第2页
第2页 / 共31页
C语言程序设计题集.docx_第3页
第3页 / 共31页
C语言程序设计题集.docx_第4页
第4页 / 共31页
C语言程序设计题集.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C语言程序设计题集.docx

《C语言程序设计题集.docx》由会员分享,可在线阅读,更多相关《C语言程序设计题集.docx(31页珍藏版)》请在冰豆网上搜索。

C语言程序设计题集.docx

C语言程序设计题集

《c语言程序设计题集》

(一)关于顺序结构、选择结构、循环结构的程序

【程序1】

编写程序,将10000秒转换成以“XX时XX分XX秒”格式输出。

#includevstdio.h>

intmain()

{inth,m,s,a;

a=10000;

h=10000/3600;

m=(10000-h*3600)/60;

s=10000-h*3600-m*60;

printf("%d时,%d分,%£|秒",h,m,s);

return0;

}

【程序2】

输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:

输入g,则输出FGH输入a,则输出ZAB输入M则输出LMN输入乙则输出YZA

#includeintmain()

{charc1,c2,c3;

scanf("%c",&c1);

if(c1>=97&&c1<=122)

c1=c1-32;

c2=c1-1;

c3=c1+1;

if(c1==65)

c2=90;

if(c1==90)

c3=65;

printf("%c%c%c",c2,c1,c3);

return0;

}

【程序3】

输入简单表达式实现一次加、减、乘、除四则运算。

例如输入1+5或3*6,计算结果。

#includevstdio.h>

intmain()

{floata,b,x;

charc;

scanf("%f%c%f",&a,&c,&b);

switch(c)

{case'+':

x=a+b;break;

case'-':

x=a-b;break;

case'*':

x=a*b;break;

case'/':

if(b==0)printf("ivisoriszero\n");

elsex=a/b;break;

}

printf("%f",x);

return0;

}

【程序4】

输入十个整数,求其中的最大数、最小数及平均数。

#includevstdio.h>

intmain()

{inta,i,max,min;

floatave;

scanf("%d",&a);

max=min=a;

ave=a;

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

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

ave=ave+a;

if(a>max)

max=a;

elseif(a

min=a;

}

ave=ave/10.0;

printf("max=%d\nmin=%d\nave=%f\n",max,min,ave);

return0;

}

【程序5】

题目:

编写程序,求解一元二次方程ax2+bx+c=0的根,要求考虑a=0,及方程有实数根与复数根的情况。

#includevstdio.h>

#includevmath.h>intmain()

doublea,b,c,disc,x1,x2,p,q;

scanf("%lf%lf%lf",&a,&b,&c);

if(a==0)

{x1=x2=-c/b;

printf("realroots:

\nx1=%7.2f\nx2=%7.2f\n",x1,x2);

else

disc=b*b-4*a*c;

if(disc<0)

printf("Thisequationhasn'trealroots\n");

else

{p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);

x1=p+q;

x2=p-q;

printf("realroots:

\nx1=%7.2f\nx2=%7.2f\n",x1,x2);

return0;

}

【程序6】

题目:

输入任意学生的百分制成绩,要求输出成绩等级‘A'‘B'、‘C'‘D'、‘E'90分以

上为‘A,80-89分为‘B',70-79F分为‘C,60-69分为‘D,60分以下为‘E。

#includeintmain()

intx;

scanf("%d",&x);

printf("Yourscore:

");

if(x>=90&&x<=100)printf('A');

elseif(x>=80&&x<=89)printf('B');

elseif(x>=70&&x<=79)elseif(x>=60&&x<=69)printf('D');

elseprintf('E');

return0;

}

【程序7】

题目:

输入一行字符,分别统计其中的英文字符,空格,数字字符和其他字符的个数是多少?

#includeintmain(){charc[81];

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

printf("输入一串字符\n");

gets(c);

for(i=0;c[i]!

='\0';i++)

if(c[i]>='a'&&c[i]<='z')

n1++;

elseif(c[i]>='0'&&c[i]<='9')

n2++;

elseif(c[i]=='')

n3++;

elsen4++;

printf("英文字符数=%d数字字符数=%d空格数=%d其他字符数=%d",n1,n2,n3,n4);

return0;

【程序8】

题目:

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

程序分析:

以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天;如果是闰年且输入月份大于3时需考虑多加一天。

#includevstdio.h>

intmain()

{inta,b,c;

printf("输入某年某月某日\n");

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

switch(b-1)

{

case11:

c=c+30;

case10:

c=c+31;

case9:

c=c+30;

case8:

c=c+31;

case7:

c=c+31;

case6:

c=c+30;

case5:

c=c+31;

case4:

c=c+30;

case3:

c=c+31;

case2:

;

case1:

c=c+31;

}

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

=0||a%400==0)

c=c+29;

elsec=c+28;

printf("是%£|年的第%cR",a,c);

return0;

}

【程序9】

题目:

古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个

月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

请写出前30个数。

程序分析:

兔子的规律为Fibonacci序列

1,1,2,3,5,8,13,21....

找出其规律,即可解决问题。

#include

intmain()

{

intf1=1,f2=1,f3;

inti;

printf("%d\n%d\n",f1,f2);

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

{

f3=f1+f2;

printf("%ld\n",f3);

f1=f2;

f2=f3;

}

return0;

}

【程序10】

题目:

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

程序分析:

判断素数的方法:

用一个数分别去除2到此数的平方根整值,如果能被整除,

则表明此数不是素数,反之是素数。

#includevstdio.h>

#include

intmain()

{

intn,r,i,a=0,w;

for(n=101;*=200;n++)

{

for(i=2,w=0;iv=sqrt(n);i++)

{

if(n%i==0)

w=1;

}

if(w==0)

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

a=a+1;

}}

printf("%d",a);

return0;

}

【程序11】

“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和

153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三

题目:

打印出所有的等于该数本身。

例如:

次方。

循环控制100-999个数,每个数分解出个位,十位,百位。

程序分析:

利用for

#includevstdio.h>

intmain()

{inti,a,b,c;

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

{a=i/100;

b=i%100/10;

c=i%100%10;

if(a*a*a+b*b*b+c*c*c==i)

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

}

return0;

}

【程序12】

题目:

输入两整数,求他们的最大公约数和最小公倍数。

程序分析:

最小公倍数等于两整数之乘积除以最大公约数#includevstdio.h>

intmain()

{intn,m,r,temp,p;

printf("输入两个整数\n");

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

if(nvm)

{temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!

=0)

{

r=n%m;

n=m;m=r;

printf("它们的最大公约数为:

%d",n);

printf("它们的最小公倍数为:

%d",p/n);

return0;

}

【程序13】

题目:

求1+2!

+3!

+...+20!

的和

#includevstdio.h>

intmain()

{floats=0,t=1;

intn;

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

{t=t*n;

s=s+t;

}

printf("1!

+2!

+....+20!

=%.0lf\n",s);

return0;

}

【程序14】

题目:

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

判断第二个字母。

程序分析:

用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第

二个字母。

#include

intmain()

{charch;

ch=getchar();

switch(ch)

{case'm':

printf("todayisMonday.");break;

case't':

ch=getchar();

if(ch=='u')printf("todayisTuesday.");

elseif(ch=='h')printf("todayisThursday.");break;

case'w':

printf("todayisWednesday.");break;

casefprintf("todayisFriday.");break;

case's':

ch=getchar();if(ch=='a')printf("todayisSaturday.");

elseif(ch=='u')printf("todayisSunday.");break;

default:

printf("error");}

return0;

【程序15】

题目:

八进制转换为十进制(或十六进制转换成十进制)。

8进制

#includevstdio.h>

intmain()

{inti,s,a;

charc[20];

printf("输入一个8进制数:

");

gets(c);s=0;

for(i=0;c[i]!

='\0';i++)

{a=c[i]-48;/*将字符转换成对应数字*/

s=s*8+a;

}

printf(”十进制数:

%d\n",s);

return0;

}

16进制

#include

intmain()

{inti,s,a,w=0;

charc[20];

printf("输入一个16进制数:

");

gets(c);

s=0;

for(i=0;c[i]!

='\0';i++)

{if(c[i]>='0'&&c[i]<='9')a=c[i]-48;

elseif(c[i]>='A'&&c[i]<='E')a=c[i]-55;

else{w=1;break;};

s=s*16+a;

}

if(w==0)printf("十进制数:

%d\n",s);

elseprintf("error\n");

return0;

}

【程序16】

题目:

企业发放的奖金根据利润提成。

利润低于或等于10万元时,奖金可提10%利润高于

10万元,低于20万元时,低于10万元的部分按10%g成,

\l7\l7\l7\l7

1234

咼于10万元的部分,可提成7.5%;

20万到40万之间时,高于20万元的部分,可提成5%

40万到60万之间时高于40万元的部分,可提成3%

60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100

万元的部分按1%g成,

从键盘输入当月利润,求应发放奖金总数?

#includevstdio.h>

intmain()

{doublea,b;

printf("当月利润\n");

scanf("%lf",&a);

if(a<=100000)

b=0.1*a;

elseif(a>200000&&a<=400000)b=100000*0.1+100000*0.075+(a-200000)*0.05;

elseif(a>400000&&a<=600000)b=100000*0.175+200000*0.05+(b-400000)*0.03;

elseif(a>600000&&a<=1000000)b=100000*0.275+200000*0.03+(b-600000)*0.015;

elseif(a>1000000)

b=100000*0.1+(a-100000)*0.075;

elseif(a>100000&&a<=200000)

b=100000*0.281+400000*0.015+(b-1000000)*0.01;

printf("奖金为%.5lf元",b);

return0;

}

【程序17】

输出1000以内的完数(一个数恰好等于其因子之和)。

#include

intmain()

{inti,a,j;

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

{a=0;

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

if(i%j==0)a=a+j;

if(a==i)printf("%5d",i);

}

return0;

}

(二)关于数组及函数的程序:

【程序18】

题目:

将一个数组中的元素逆序输出。

#include

intmain()

{inta[10],i;

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

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

for(i=9;i>=0;i--)

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

return0;

}

【程序19】

题目:

写一个函数,将一个3*3的整型矩阵转置。

#include

intmain()

{voidzz(intx[3][3]);

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

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

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

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

zz(a);

return0;

}

voidzz(intx[3][3]){inti,j,y[3][3];for(i=0;iv3;i++)for(j=0;j<3;j++)y[i][j]=x[j][i];for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%5d",y[i][j]);printf("\n");}

}

题目:

输入6行6列的矩阵a,然后

1)输出矩阵a

2).将对角线(指矩阵的左上角到右下角的对角线)之外的上三角的每个元素加1,下三

角中的每个元素减1,形成新的矩阵并输出。

3).找出新矩阵a中绝对值最大的元素及其所在的行、列位置并输出。

#include

intmain()

{

inta[6][6],i,j,max,row,colum;

for(i=0;iv6;i++)

输入*/

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

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

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

{

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

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

printf("\n");

}/*输出*/

max=a[0][0];

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

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

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

{max=a[i][j];

row=i;

colum=j;}/*求最大值,行,列*/

printf("max=%d,row=%d,colum=%d\n",max,row,colum);

return0;

}

【程序21】

输出杨辉三角形。

15101051

#includevstdio.h>

#defineN10

intmain()

{inti,j,a[N][N];

for(i=0;i

{a[i][i]=1;

a[i][0]=1;

}

for(i=2;i

for(j=1;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i

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

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

printf("\n");

}

printf("\n");

return0;

}

【程序22】

已有一个排好序的数组{136,7,9},要求输入一个数后,按原来的规律将它插入数组中。

#includevstdio.h>

intmain()

{inta[6]={1,3,6,7,9};inti,j,x,t;

printf("insertdata:

");

scanf("%d",&x);

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

if(x

for(j=5;j>i;j--)a[j]=a[j-1];

a[j]=x;

printf("Nowarraya:

\n");

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

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

printf("\n");

return0;

【程序23】

题目:

有15个数按照值的升序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。

如果该数不在数组中,则输出“无此数”。

已知15个数用赋

初值的方法在程序中给出。

要找的数用scanf函数输入。

#include

intmain()

{inta[15]={1,3,6,7,9,12,14,15,17,19,20,22,23,34,45};

inti=0,j=14,x,k;

printf("finddata:

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

k=(i+j)/2;

while(x!

=a[k]||i!

=j)

{if(x

elsei=k+1;

k=(i+j)/2;}

if(i==j)printf("无此数\n");

elseprintf("NO%5d\n",k);

return0;

}

【程序24】

编写一个程序将两个字符串连接起来,不用strcat函数。

#include

intmain()

{chars1[80],s2[40];

inti,j;

printf("inputstring1:

");

scanf("%s",s1);

printf("inputstring2:

");

scanf("%s",s2);

for(i=0;s1[i]!

='\0';i++)

for(j=0;s2[j]!

='\0';i++,j++)

s1[i]='\0';

printf("\nThenewstringis:

%s\n",s1);

return0;

【程序25】

题目:

设全班有40名同学,计算全班数学成绩的平均分,并统计低于平均分的人数。

#defineN40

main()

intclass[N];

floatsum,ave;

intnumber,i;

sum=0;

number=0;

printf("pleaseenterstudentscore");

for(i=0;i

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

sum+=class[i];

ave=sum/N;

for(i=0;i

if(class[i]

number++;

printf("thenumberoflowedaveis%d",number);

【程序26】

题目:

写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

intmain()

{intlength(charp[20]);

intlen;

charstr[20];

pnntf("pleaseinputastring:

\n");

gets(str);

len=length(str);

printf("thestringhas%dcharacters.",©n);

return0;

intlength(charp[20])

{inti;

for(i=0;p[i]!

='\0';i++)

{}

returni;

【程序27】题目:

输入三个整数,按由小到大的顺序输出。

?

#include

?

intmain()

?

{voidswap(int*p1,int*p2);

intn1,n2,n3;

int*p1,*p2,*p3;

printf("inputthreeintegern1,n2,n3:

");

scanf("%d,%d,%d",&n1,&n2,&n3);

p1=&n1;

p2=&n2;

p3=&n3

?

if(n1>n2)swap(p1,p2);

if(n

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

当前位置:首页 > 解决方案 > 学习计划

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

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