C语言编程习题.docx
- 文档编号:9216235
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:27
- 大小:186.35KB
C语言编程习题.docx
《C语言编程习题.docx》由会员分享,可在线阅读,更多相关《C语言编程习题.docx(27页珍藏版)》请在冰点文库上搜索。
C语言编程习题
(1)设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8.75表示8.75%),计算该企业的产值在哪年实现翻番以及翻番时的产值,然后输出(输出时以万为单位,应考虑有小数)。
#include
#include
intmain(void)
{
doublex,y;
intyear,n=0;
printf("Pleaseinputx:
");
scanf("%lf",&x);
do
{
n++;
y=5000*pow((1+x/100),n);
}while(y<10000);
year=2006+n;
printf("year=%dnian,chanzhi=%.2f\n",year,y);
return0;
}
(2)已知某银行整存整取存款不同期限的年息利率分别为:
3.15%期限一年,3.63%期限二年, 4.02%期限三年,4.69%期限五年,5.36%期限八年。
从键盘上输入存钱的本金(以元为单位,必须定义为int且应考虑金额很大的情况)和存款期限(只考虑1,2,3,5,8),求到期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。
#include
intmain(void)
{
intbenjin,cunqi;
doublelixi;
printf("Pleaseinputbenjin,cunqi:
");
scanf("%d,%d",&benjin,&cunqi);
switch(cunqi)
{
case1:
lixi=benjin*3.15/100;
printf("lixi=%.2fyuan\n",lixi);
break;
case2:
lixi=benjin*3.63/100*2;
printf("lixi=%.2fyuan\n",lixi);
break;
case3:
lixi=benjin*4.02/100*3;
printf("lixi=%.2fyuan\n",lixi);
break;
case5:
lixi=benjin*4.69/100*5;
printf("lixi=%.2fyuan\n",lixi);
break;
case8:
lixi=benjin*5.36/100*8;
printf("lixi=%.2fyuan\n",lixi);
break;
default:
printf("cunqierror!
\n");
}
return0;
}
(3)编写一个简单计算器程序,输入格式为:
data1 op data2。
其中data1和data2是参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范围),op为运算符,它的取值只能是+、-、*、/、%。
#include
intmain(void)
{
intdata1,data2;
charop;
printf("Pleaseinputdata1opdata2:
");
scanf("%d%c%d",&data1,&op,&data2);
switch(op)
{
case'+':
printf("%d+%d=%f\n",data1,data2,(double)data1+(double)data2);
break;
case'-':
printf("%d-%d=%d\n",data1,data2,data1-data2);
break;
case'*':
printf("%d*%d=%f\n",data1,data2,(double)data1*(double)data2);
break;
case'/':
if(data2!
=0)
{
printf("%d/%d=%d\n",data1,data2,data1/data2);
}
else
{
printf("Error!
chushuwei0.\n");
}
break;
case'%':
if(data2!
=0)
{
printf("%d%%%d=%d\n",data1,data2,data1%data2);
}
else
{
printf("Error!
chushuwei0.\n");
}
break;
default:
printf("运算符错误!
\n");
}
return0;
}
(4)编写一程序P2-211.C实现以下功能
根据输入的n在屏幕上显示对应的以#组成的菱形图案。
#include
intmain(void)
{
intn;
inti,j;
printf("Pleaseinputn:
");
scanf("%d",&n);
for(i=1;i<=n+1;i++)
{
for(j=i;j<=n;j++)
{
printf("");
}
for(j=1;j<=2*i-1;j++)
{
printf("#");
}
printf("\n");
}
for(i=n;i>=1;i--)
{
for(j=i;j<=n;j++)
{
printf("");
}
for(j=1;j<=2*i-1;j++)
{
printf("#");
printf("\n");
}
return0;
}
(5)编写一程序P2-213.C实现以下功能
根据输入的n在屏幕上显示对应的图案。
编程可用素材:
printf("Please input n:
")...。
程序的运行效果应类似地如图1和图2所示,图1中的3和图2中的5是从键盘输入的内容。
#include
intmain(void)
{
intnum;
inti,j;
printf("Pleaseinputn:
");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
for(j=1;j<=(i-1);j++)
{
printf("");
}
printf("%c",'@');
if(i { for(j=1;j<=2*(num-i)-1;j++) { printf(""); } printf("%c",'@'); } printf("\n"); } for(i=num-1;i>=1;i--) { for(j=1;j<=(i-1);j++) { printf(""); } printf("%c",'@'); for(j=1;j<=2*(num-i)-1;j++) { printf(""); } printf("%c",'@'); printf("\n"); } return0; } (6)根据输入的n在屏幕上显示对应的图案。 编程可用素材: printf("Please input n: ")...。 程序的运行效果应类似地如图1和图2所示,图1中的3和图2中的5是从键盘输入的内容。 #include intmain(void) { intnum; inti,j; printf("Pleaseinputn: "); scanf("%d",&num); for(i=1;i<=num;i++) { printf("%c",'$'); if(i { for(j=1;j<=num-1-i;j++) { printf(""); } printf("%c",'$'); } printf("\n"); } for(i=num-1;i>=1;i--) { printf("%c",'$'); for(j=1;j<=num-1-i;j++) { printf(""); } printf("%c",'$'); printf("\n"); } return0; } (7)求S=1/1! +1/2! +1/3! +…+1/N! 并输出结果(显示时小数部分占16位,计算时要求从第1项开始往后累加)。 N为任意自然数(只考虑int型),从键盘读入。 编程可用素材: printf("Please input n: ")...、printf("\nS=1/1! +1/2! +...+1/...! =...。 #include intmain(void) { intnn,i; doublesum=0,fac=1; printf("Pleaseinputn: "); scanf("%d",&nn); for(i=1;i<=nn;i++) { fac=fac*i; sum=sum+1/fac; } printf("S=1/1! +1/2! +...+1/%d! =%.16f",nn,sum); return0; } (8)求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。 编程可用素材: printf("Please input m: ")...、printf("\nPlease input array: \n")...、printf("\nmax=...,i=...,j=...\n"...。 程序的运行效果应类似地如图1所示,图1中的5和 1 45 67 235 464 35 6 89 32342 8 347 9346 47 95 746 46 785 436 19434 634 3235 567 24 8465 25 是从键盘输入的内容。 #include intmain(void) { intarr[20][20]; inti,j,m,max,maxi,maxj; printf("Pleaseinputm: "); scanf("%d",&m); printf("Pleaseinputarray: \n"); for(i=0;i { for(j=0;j { scanf("%d",&arr[i][j]); } } max=arr[0][0]; maxi=0; maxj=0; for(i=0;i { for(j=0;j { if(max { max=arr[i][j]; maxi=i; maxj=j; } } } printf("max=%d,i=%d,j=%d\n",max,maxi,maxj); return0; } (9)求任意的一个m×m矩阵的对角线上元素之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型,且不需考虑求和的结果可能超出int型能表示的范围)。 编程可用素材: printf("Please input m: ")...、printf("\nPlease input array: \n")...、printf("\nsum=...\n"...。 程序的运行效果应类似地如图1所示,图1中的5和 1 45 67 235 464 35 6 89 32342 8 347 9346 47 95 746 46 785 436 19434 634 3235 567 24 8465 25 是从键盘输入的内容。 #include intmain(void) { intsum=0,arr[20][20]; intm,i,j; printf("Pleaseinputm: "); scanf("%d",&m); printf("Pleaseinputarray: \n"); for(i=0;i { for(j=0;j { scanf("%d",&arr[i][j]); } } for(i=0;i { for(j=0;j { if((i==j)||((i+j)==(m-1))) { sum=sum+arr[i][j]; } } } printf("sum=%d\n",sum); return0; } (10)求任意的一个m×m矩阵的周边元素之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型,且不需考虑求和的结果可能超出int型能表示的范围)。 编程可用素材: printf("\nPlease input m: ")...、printf("\nPlease input array: \n")...、printf("\nsum=...\n"...。 程序的运行效果应类似地如图1所示,图1中的5和 1 45 67 235 464 35 6 89 32342 8 347 9346 47 95 746 46 785 436 19434 634 3235 567 24 8465 25 是从键盘输入的内容。 #include intmain(void) { intsum=0,arr[20][20]; intm,i,j; printf("Pleaseinputm: "); scanf("%d",&m); printf("Pleaseinputarray: \n"); for(i=0;i { for(j=0;j { scanf("%d",&arr[i][j]); } } for(i=0;i { for(j=0;j { if((i==0)||(j==0)||(i==(m-1))||(j==(m-1))) { sum=sum+arr[i][j]; } } } printf("sum=%d\n",sum); return0; } (11)编写一程序P2-219.C实现以下功能 从键盘读入一行字符(约定: 字符数≤127字节),将其中的数字字符以及这些数字字符的数量在屏幕上显示,注意: 要求先显示这些数字字符的数量。 编程可用素材: printf("Please input string: ")...、printf("\nshu zi ge shu wei: ...、printf("\nshu zi wei: ...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535as3bf0是从键盘输入的内容。 #include #include intmain(void) { chararr1[128],arr2[128]; intnum=0; inti; printf("Pleaseinputstring: "); gets(arr1); for(i=0;arr1[i]! ='\0';i++) { if(arr1[i]>='0'&&arr1[i]<='9') { num++; arr2[num-1]=arr1[i]; } } printf("shuzugeshuwei: %d\n",num); printf("shuziwei: "); for(i=0;i { printf("%c",arr2[i]); } printf("\n"); return0; } (12)编写一程序P2-222.C实现以下功能 从键盘上读入一行字符(约定: 字符数≤127字节),按以下方法将其加密变换: A->Z a->z B->Y b->y C->X c->x …… …… Z->A z->a 即字母A变成Z、字母B变成Y...,非字母字符不变。 最后在屏幕上先显示这一行字符的长度,再显示生成的密文。 编程可用素材: printf("Please input string: ")...、printf("\nzi fu chuan chang du: ...、printf("\nmi wen: ...。 程序的运行效果应类似地如图1所示,图1中的sfasfk,lmw4tywerysfcvasgewr xfasftg是从键盘输入的内容。 #include #include intmain(void) { charstr[128]; inti; printf("Pleaseinputstring: "); gets(str); for(i=0;str[i]! ='\0';i++) { if((str[i]>='a')&&(str[i]<='z')) { str[i]='a'+('z'-str[i]); } elseif((str[i]>='A')&&(str[i]<='Z')) { str[i]='A'+('Z'-str[i]); } } printf("zifuchuanchangdu: %d\n",strlen(str)); printf("miwen: %s\n",str); return0; } (13)编写一程序P3-311.C实现以下功能 ①从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。 注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。 ②将字符串s2插入字符串s1中,插入方法为: s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。 提示,合并时可使用中间数组。 例如: s1输入为"123456789",S2输入为"abcdefghijk",则输出的s1为: 1a2b3c4d5e6f7g8h9ijk ③在屏幕上输出新生成的s1。 编程可用素材: printf("Please input string1: ")...、printf("Please input string2: ")...、printf("\nstring1: ...\n"...。 程序的运行效果应类似地如图1所示,其中的123456789和abcdefghijk是从键盘输入的内容。 #include #include intmain(void) { chars1[255],s2[128],s3[255]; inti,j; printf("Pleaseinputstring1: "); gets(s1); printf("Pleaseinputstring2: "); gets(s2); printf("\n"); for(i=0,j=0;(s1[i]! ='\0')&&(s2[i]! ='\0');i++,j=j+2) { s3[j]=s1[i]; s3[j+1]=s2[i]; } if(s2[i]! ='\0') { for(;s2[i]! ='\0';i++,j++) { s3[j]=s2[i]; } s3[j]='\0'; } elseif(s1[i]! ='\0') { for(;s1[i]! ='\0';i++,j++) { s3[j]=s1[i]; } s3[j]='\0'; } strcpy(s1,s3); printf("string1: %s\n",s3); return0; } (14)编写一程序P4-412.C实现以下功能 ①程序运行时先显示Please input numbers: ,再从键盘上读入一组整数(只考虑int型),数与数之间只使用空格或回车作分隔。 数可正可负,最多10000个,但若读入的数为-222时,则表示输入结束且-222不算在该组数内。 ②对这一组数按从小到大的顺序进行排序。 ③将排序后的这一组数输出到屏幕上,输出格式为每行6个数,数与数之间使用逗号(,)分隔,两个逗号之间的宽度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 习题