C语言习题题库 作答完整.docx
- 文档编号:12311559
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:36
- 大小:21.43KB
C语言习题题库 作答完整.docx
《C语言习题题库 作答完整.docx》由会员分享,可在线阅读,更多相关《C语言习题题库 作答完整.docx(36页珍藏版)》请在冰豆网上搜索。
C语言习题题库作答完整
程序填空共2题
第1题
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
编程求某年第n天的日期。
用数组表示月天数。
-------------------------------------------------------*/
#include<>
#include<>
main()
{
inty,m,f,n;
inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("y,n=");
scanf("%d,%d",&y,&n);
/***********SPACE***********/
f=y%4==0&&y%100!
=0【||】y%400==0;
/***********SPACE***********/
a[1]【+=】f;
if(n<1||n>365+f)
{
printf("error!
\n");exit(0);
}
/***********SPACE***********/
for(m=1;m【>】a[m-1];n-=a[m-1],m++);
printf("y=%d,m=%d,d=%d\n",y,m,n);
}
第2题
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
下列程序从键盘输入所需数据,求出z的值并输出,要求输出结果保留2位小数。
-------------------------------------------------------*/
#include<>
/***********SPACE***********/
【#include<>】
main()
{intx;
doubley,z;
/***********SPACE***********/
scanf("【%d%lf】",&x,&y);
z=2*x*sqrt(y);
/***********SPACE***********/
printf("z=【%lf】",z);
}
程序改错共1题
第1题
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
将s所指字符串中的字母转换为按字母序列的后续字母(但
Z转换为A,z转换为a),其它字符不变。
------------------------------------------------------*/
#include<>
#include<>
#include<>
voidfun(char*s):
\n\n");
gets(s);
printf("\nThestring:
\n\n");
puts(s);
fun(s);f\n",pi);
}
第2题
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
输入一奇数n,打印由1->n*n构成的魔方矩阵。
魔方矩阵的
行列及对角线的和都相等。
魔方矩阵:
816
357
492
-------------------------------------------------------*/
#include<>
#include<>
#defineMAXSiZE20
voidmain(void)
{
intmatrix[MAXSiZE][MAXSiZE];
intcount;
introw;
intcolumn;
intn;
charline[100];
printf("\nOddnMagicSquareGenerator");
printf("\n================================");
printf("\n\nnPlease-->");
gets(line);
n=atoi(line);
if(n>MAXSiZE)
printf("\n***ERROR***nshouldbe<=%d",MAXSiZE);
elseif(n%2==0)
printf("\n***ERROR***nmustbeanoddinteger");
else
{
row=0;
column=n/2;
for(count=1;count<=n*n;count++)
{
matrix[row][column]=count;
/***********SPACE***********/
if(【count/n】==0)
row++;
else
{
/***********SPACE***********/
row=(row==【0】)n-1:
row-1;
/***********SPACE***********/
column=(column==【n-1】)0:
column+1;
}
}
printf("\n\nMagicSquareofn%d:
\n\n",n);
for(row=0;row { for(column=0;column printf("%4d",matrix[row][column]); printf("\n"); } } } 程序改错共1题 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 求1到10的阶乘的和。 ------------------------------------------------------*/ #include<> floatfac(intn);.*/ if(row*row+column*column==given) { /***********SPACE***********/ 【count++】; printf("\n%5d%7d%7d",count,row,column); row++; column--; } elseif(row*row+column*column>given) /***********SPACE***********/ 【column--】; else /***********SPACE***********/ 【row++】; if(count==0) printf("\n\nSorry,NOANSWERfound."); else printf("\n\nThereare%dpossibleanswers.",count); } 程序改错共1题 第1题 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 计算并输出k以内最大的10个能被13或17整除的自然数之和。 k的值由主函数传入。 例如: 若k的值为500,则函数值为4622。 ------------------------------------------------------*/ #include<> intfun(intk) { intm=0,mc=0; /**********FOUND**********/ while((k>=2)&&(mc<10)) { /**********FOUND**********/ if((k%13==0)||(k%17==0)) { m=m+k; mc++; } /**********FOUND**********/ k--; } /**********FOUND**********/ returnm; } voidmain() { printf("%d\n",fun(500)); } 程序填空共2题 第1题 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 当输入“2,5”的时候输出为“255” -------------------------------------------------------*/ #include<> #definemax100 main() { intf[max],i,j,k,m; scanf("%d,%d",&k,&m); /***********SPACE***********/ for(i=0;i<=【2】;i++) f[i]=0; /***********SPACE***********/ f[【k-1】]=1; for(i=k;i<=m;i++) /***********SPACE***********/ for(j=i-k;j<=i-1;j++) f[i]【=1+】f[j]; printf("%d%10d%10d\n",k,m,f[m]); } 第2题 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 识别输入的字符串,每个单词输出一行 -------------------------------------------------------*/ #include<> #include<> voidmain() { intc; intinspace; /***********SPACE***********/ 【inspace=0】; while((c=getchar())! ='\n') { if(c==''||c=='\t'||c=='\n') { /***********SPACE***********/ if(【inspace=0】) { inspace=1; putchar('\n'); } } else { inspace=0; /***********SPACE***********/ 【putchar(c)】; } } } 程序改错共1题 第1题 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 用选择法对数组中的n个元素按从小到大的顺序进行排序。 ------------------------------------------------------*/ #include<> #defineN20 voidfun(inta[],intn) { inti,j,t,p; for(j=0;j { /**********FOUND**********/ p=j; for(i=j;i /**********FOUND**********/ if(a[i]>a[p]) /**********FOUND**********/ p=i; t=a[p]; a[p]=a[j]; a[j]=t; } } main() { inta[N]={9,6,8,3,-1},i,m=5; printf("排序前的数据: "); for(i=0;i printf("%d",a[i]); printf("\n"); fun(a,m); printf("排序后的数据: "); for(i=0;i printf("%d",a[i]); printf("\n"); } 程序填空共2题 第1题 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 产生10个[30,90]区间上的随机整数,然后对其用选择法 进行由小到大的排序。 -------------------------------------------------------*/ #include<> #include<> main() { /***********SPACE***********/ intt; inti,j,k; inta[10]; for(i=0;i<10;i++) a[i]=rand()%61+30; for(i=0;i<9;i++) { /***********SPACE***********/ k=i; for(j=i+1;j<10;j++) /***********SPACE***********/ if(a[k]>a[j])k=j; if(k! =i) { t=a[k]; a[k]=a[i]; a[i]=t; } } /***********SPACE***********/ for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); } 第2题 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 输入一正整数n、打印1-n能够组成的所有自然数集合 (包含空集)。 -------------------------------------------------------*/ #include<> #include<> #defineMAXSiZE20 #defineLOOP1 voidmain(void) { intset[MAXSiZE]; intn,i; intposition; charline[100]; printf("\nAllPossibleSubsetsGenerationbyLexicalOrder"); printf("\n================================================"); printf("\n\nNumberofElementsintheSet-->"); gets(line); n=atoi(line); printf("\n{}"); position=0; set[position]=1; while(LOOP) { /***********SPACE***********/ printf("\n{%d",【】); for(i=1;i<=position;i++) printf(",%d",set[i]); printf("}"); if(set[position] { /***********SPACE***********/ set[【】]=set[position]+1; position++; } elseif(position! =0) set[--position]++; else /***********SPACE***********/ 【】; } } 程序改错 第1题 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 求出以下分数序列的前n项之和。 和值通过函数值返回main 函数。 2/1+3/2+5/3+8/5+13/8+21/13…… 例如: 若n=5,则应输出: 。 ------------------------------------------------------*/ #include<> #include<> /**********FOUND**********/ fun(intn) { inta,b,c,k;doubles; s=;a=2;b=1; for(k=1;k<=n;k++) { /**********FOUND**********/ s=(double)a/b; c=a; a=a+b; b=c; } /**********FOUND**********/ returnc; } main() { intn=5; printf("\nThevalueoffunctionis: %lf\n",fun(n)); } 程序填空共2题 第1题 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 输出结果为: ***** ***** ***** ***** -------------------------------------------------------*/ #include<> main() { /***********SPACE***********/ staticchar【】={'*','*','*','*','*'}; inti,j,k; charspace=''; for(i=0;i<5;i++) { printf("\n"); for(j=1;j<=3*i;j++) /***********SPACE***********/ printf("%1c",【】); /***********SPACE***********/ for(k=0;k<【】;k++) printf("%3c",a[k]); } printf("\n");; } 第2题 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 给出一个正整数,找到一组连续的数,使之累加和等于给 定的正整数。 输出存在多少组这样连续的数,及每组的左 右边界。 例如: 15=1+2+3+4+5 15=4+5+6 15=7+8 所以结果有3组值分别是1->5,4->6,7->8 -------------------------------------------------------*/ #include<> #include<> voidmain(void) { longleft,right; longsum; longGiVEN; intcount=0; charline[100]; printf("\nConsecutivesumtoafixedgivennumber"); printf("\n=======================================\n"); printf("\nYournumber(>0)please--->"); gets(line); GiVEN=atol(line); for(sum=0,right=1;sum ; for(left=1,right--;left<=GiVEN/2;) if(sum>GiVEN) { sum-=left; /***********SPACE***********/ 【】; } else { if(sum==GiVEN) { printf("\n%ld=sumfrom%ldto%ld", GiVEN,left,right); /***********SPACE***********/ 【】; } /***********SPACE***********/ 【】; sum+=right; } if(count
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言习题题库 作答完整 语言 习题 题库 作答 完整