c语言习题题库作答完整文档格式.docx
《c语言习题题库作答完整文档格式.docx》由会员分享,可在线阅读,更多相关《c语言习题题库作答完整文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
\n"
exit(0);
}
for(m=1;
m【>
】a[m-1];
n-=a[m-1],m++);
y=%d,m=%d,d=%d\n"
y,m,n);
}
第2题
题目:
下列程序从键盘输入所需数据,求出z的值并输出,要求输出结果保留2位小数。
/***********SPACE***********/
【#include<
math.h>
】
main()
{intx;
doubley,z;
【%d%lf】"
x,&
y);
z=2*x*sqrt(y);
z=【%lf】"
z);
程序改错共1题
第1题
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
将s所指字符串中的字母转换为按字母序列的后续字母(但
Z转换为A,z转换为a),其它字符不变。
------------------------------------------------------*/
ctype.h>
conio.h>
voidfun(char*s)//函数定义
/***********FOUND***********/
while(*s!
=’0’)//字符串结尾标志为‘0’
if(*s>
='
A'
&
*s<
='
Z'
||*s>
a'
*s<
z'
)
if(*s=='
*s='
;
elseif(*s=='
else
*s+=1;
//s为字符指针,而*s为指针所指的字符
s++
chars[80];
\nEnterastringwithlength<
80.:
\n\n"
gets(s);
\nThestring:
\n\n"
puts(s);
fun(s);
//函数调用
printf("
\n\nTheCords:
计算圆周率的近似值。
ints,n;
double【pi】,t;
t=1;
pi=0;
n=1;
s=1;
while(【fabs(t)】>
=2e-6)//fabs()为求绝对值函数
pi+=t;
n+=2;
s=-s;
t=s/n;
pi*=【4】;
pi=%.6f\n"
pi);
输入一奇数n,打印由1->
n*n构成的魔方矩阵。
魔方矩阵的
行列及对角线的和都相等。
魔方矩阵:
816
357
492
#defineMAXSiZE20
voidmain(void)
intmatrix[MAXSiZE][MAXSiZE];
intcount;
introw;
intcolumn;
intn;
charline[100];
\nOddnMagicSquareGenerator"
\n================================"
\n\nnPlease-->
"
gets(line);
n=atoi(line);
if(n>
MAXSiZE)
\n***ERROR***nshouldbe<
=%d"
MAXSiZE);
elseif(n%2==0)
\n***ERROR***nmustbeanoddinteger"
else
row=0;
column=n/2;
for(count=1;
count<
=n*n;
count++)
matrix[row][column]=count;
if(【count/n】==0)
row++;
{
row=(row==【0】)?
n-1:
row-1;
column=(column==【n-1】)?
0:
column+1;
\n\nMagicSquareofn%d:
\n\n"
n);
for(row=0;
row<
n;
row++)
for(column=0;
column<
column++)
%4d"
matrix[row][column]);
程序改错共1题
求1到10的阶乘的和。
floatfac(intn);
//函数声明
inti;
floats=0;
floatfac(intn);
//函数声明应放在主函数之前,这句放错位置了,删了吧,也可以不改,可以运行,但良好的习惯就是改
/**********FOUND**********/
for(i=1;
i<
10;
i++)
s+=fac(i);
%f\n"
s);
floatfac(intn)//函数定义
/**********FOUND**********/
floaty=1;
//int改为float,否则会造成数据丢失,当然也可以不改,毕竟你们没学到
for(i=1;
=n;
y=y*i;
returny;
删除字符串中的指定字符,字符串和要删除的字符均由键盘
输入。
charstr[80],ch;
inti,k=0;
gets(【str】);
//输入字符串放入str[]
ch=getchar();
for(i=0;
【str[i]】;
i++)//循环到字符串结束为止
if(str[i]!
=ch)//假如没找到就将原字符赋值过去找到要删除的就跳过继续找
【str[k]=str[i]】;
//在同一个数组中操作,后面的字符覆盖了前面要删除的位置
k++;
【str[k]=’\0’】;
//在新字符串结尾处加结束符
puts(str);
//输出
第2题
输入一个整数,计算它可能是哪两个整数的平方和,并打印
结果数据。
如:
34是5和3或3和5的平方和。
/*fori/Ofunctions*/
/*foratoi()*/
/*forsqrt()*/
intgiven;
/*thegivennumber*/
introw,column;
/*rowandcolumnindicators*/
/*numberofsolutions*/
\nRepresentingaGivenNumberastheSumofTwoSquares"
\n=====================================================\n"
\nAnintegerPlease--->
given=atoi(line);
\nCountXY"
\n---------------"
row=1;
/*startsfromfarenough*/
column=(int)(sqrt((double)given)+0.5);
count=0;
/*sosolutionyet*/
while(row<
=given&
column>
0)/*scandown...*/
if(row*row+column*column==given)
【count++】;
\n%5d%7d%7d"
count,row,column);
column--;
elseif(row*row+column*column>
given)
【column--】;
【row++】;
if(count==0)
\n\nSorry,NOANSWERfound."
\n\nThereare%dpossibleanswers."
count);
计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入。
例如:
若k的值为500,则函数值为4622。
intfun(intk)
intm=0,mc=0;
while((k>
=2)&
(mc<
10))
if((k%13==0)||(k%17==0))
m=m+k;
mc++;
k--;
returnm;
voidmain()
%d\n"
fun(500));
当输入“2,5”的时候输出为“255”
#definemax100
intf[max],i,j,k,m;
k,&
m);
=【2】;
f[i]=0;
f[【k-1】]=1;
for(i=k;
=m;
for(j=i-k;
j<
=i-1;
j++)
f[i]【=1+】f[j];
%d%10d%10d\n"
k,m,f[m]);
识别输入的字符串,每个单词输出一行
string.h>
intc;
intinspace;
【inspace=0】;
while((c=getchar())!
\n'
if(c=='
'
||c=='
\t'
if(【inspace=0】)
inspace=1;
putchar('
inspace=0;
【putchar(c)】;
用选择法对数组中的n个元素按从小到大的顺序进行排序。
#defineN20
voidfun(inta[],intn)
inti,j,t,p;
for(j=0;
j<
n-1;
j++)
p=j;
for(i=j;
i<
i++)
if(a[i]>
a[p])
p=i;
t=a[p];
a[p]=a[j];
a[j]=t;
inta[N]={9,6,8,3,-1},i,m=5;
排序前的数据:
"
);
for(i=0;
m;
i++)
%d"
a[i]);
fun(a,m);
排序后的数据:
产生10个[30,90]区间上的随机整数,然后对其用选择法
进行由小到大的排序。
#include<
intt;
inti,j,k;
inta[10];
a[i]=rand()%61+30;
9;
k=i;
for(j=i+1;
if(a[k]>
a[j])k=j;
if(k!
=i)
t=a[k];
a[k]=a[i];
a[i]=t;
}
i++)
%5d"
输入一正整数n、打印