二级C语言程序改错题汇总Word格式.docx
《二级C语言程序改错题汇总Word格式.docx》由会员分享,可在线阅读,更多相关《二级C语言程序改错题汇总Word格式.docx(31页珍藏版)》请在冰豆网上搜索。
#include<
stdio.h>
intfun()
{inta[3][3],sum;
inti,j;
/************found************/
_______;
sum=1;
for(i=0;
i<
3;
i++)
{for(j=0;
j<
j++)
scanf("
%d"
a[i][j]);
scanf("
a[i]+j);
#scanf("
&
a[i][j]);
*(a+i)+j);
}
sum=sum*a[i][i];
printf("
Sum=%d\n"
sum);
}
main()
{fun();
2.求一个整数的所有质因子判素数
/*2给定程序modi.c的功能是:
读入一个整数k(2<
=K<
=10000),打印它的所有质因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出:
2、3、5、7、11。
*/
#include"
conio.h"
stdio.h"
Isprime(intn);
Isprime(intn)
{inti,m;
m=1;
for(i=2;
n;
if!
(n%i)if(!
(n%i))#if(n%i==0)
{m=0;
break;
return(m);
{intj,k;
clrscr();
\nPleaseenteranintegernumberbetween2and10000:
"
);
k);
\n\nTheprimefactor(s)of%dis(are):
k);
for(j=2;
=k;
if((!
(k%j))&
&
(Isprime(j)))printf("
\n%4d"
j);
\n"
3.求两数的平方根之和地址与地址中的内容
/*3.输入二个双精度数,函数返回它们的平方根之和.例如:
输入22.993612和84.57629872,
则输出:
y=13.991703.*/
conio.h>
math.h>
/**********found**********/
doublefun(double*a,*b)doublefun(double*a,double*b)#doublefun(double*b,double*a)
{doublec;
c=sqrt(a)+sqrt(b);
c=sqrt(*b)+sqrt(*a);
#c=sqrt(*a)+sqrt(*b);
returnc;
main()
{doublea,b,y;
clrscr();
printf("
Entera,b:
"
scanf("
%lf%lf"
&
a,&
b);
y=fun(&
b);
printf("
y=%f\n"
y);
/*4给定程序modi.c中函数fun的功能是:
从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。
在每组中,可以没有黑球,但必须要有红球和白球。
组合数作为函数值返回。
正确的组合数应该是15。
程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。
{inti,j,k,sum=0;
\nTheresult:
\n\n"
/**************found**************/
for(i=0;
i<
=3;
i++)for(i=1;
{for(j=1;
j<
=5;
j++)
{k=8-i-j;
if(k>
=1&
k<
=6)if(k>
=0&
k<
=6)
{sum=sum+1;
red:
%4dwhite:
%4dblack:
%4d\n"
i,j,k);
returnsum;
{intsum;
sum=fun();
sum=%4d\n\n"
/*5给定程序modi.c中函数fun的功能是:
给一维数组a输入任意4个整数,并按下例的规律输出。
例如输入1、2、3、4,程序运行后将输出以下方阵。
4123
3412
2341
1234*/
#defineM4
voidfun(inta)voidfun(int*a)
{inti,j,k,m;
Enter4number:
for(i=0;
M;
i++)scanf("
a[i]);
\n\nTheresult:
for(i=M;
i>
0;
i--)
{k=a[M-1];
for(j=M-1;
j>
j--)
a[j]=a[j+1];
a[j]=a[j-1];
a[0]=k;
for(m=0;
m<
m++)printf("
%d"
a[m]);
{inta[M];
fun(a);
6.两数交换传址形参必分别标注数据类型
/*6给定程序modi.c中,函数fun的功能是:
实现两个整数的交换。
例如给a和b分别输入:
60和65,输出为:
a=65b=60*/
voidfun(inta,b)voidfun(int*a,int*b)#voidfun(int*b,int*a)
{intt;
t=b;
b=a;
a=t;
t=*b;
*b=*a;
*a=t;
#t=*a;
*a=*b;
*b=t;
{inta,b;
Entera,b:
%d%d"
a,&
fun(&
a=%db=%d\n"
a,b);
7.逻辑等于计数器输出k以内最大的10个能被13或17整除的自然数之和
/*7给定程序modi.c中,函数fun的功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入,若k的值为500,则函数值为4622。
intfun(intk)
{intm=0,mc=0,j;
while((k>
=2)&
(mc<
10))
/************found************/
{if((k%13=0)||(k%17=0)){if(k%17==0||k%13==0)#{if(k%13==0||k%17==0)
{m=m+k;
mc++;
k--;
returnm;
_____}
{clrscr();
%d\n"
fun(500));
8.数据交换三个数的有序排放
/*8.把主函数中输入的3个数,最大的放入a中,最小的放入c中,若输入:
551234.
a=55.0,b=34.0,c=12.0.*/
voidfun(float*p,float*q,float*s)
{
/************found************/
float*k;
floatk;
if(*p<
*q)
{k=*p;
*p=*q;
*q=k;
if(*s<
*p)if(*p<
*s)#if(*s>
*p)#if(0>
*p-*s)#if(*p-*s<
0)
{k=*s;
*s=*p;
*p=k;
if(*q<
*s)
{k=*q;
*q=*s;
*s=k;
{floata,b,c;
Inputabc:
%f%f%f"
b,&
c);
a=%4.1f,b=%4.1f,c=%4.1f\n\n"
a,b,c);
/*9.给定程序modi.c中,函数fun的功能是:
找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
intfun(intm)
{inti,k;
for(i=m+1;
;
i++){
for(k=2;
i;
k++)
if(i%k!
=0)if(i%k==0)
break;
if(k<
i)if(k==i)#if(k>
=i)#if(i<
=k)#if(i==k)
return(i);
}}
{intn;
\nPleaseentern:
n);
fun(n));
10.内层循环的起始终止值选择排序
/*10.给定程序modi.c中,函数fun的功能是:
用选择法对数组中的n个元素按从小到大的顺序进行排序。
#defineN20
voidfun(inta[],intn)
{inti,j,t,p;
for(j=0;
n-1;
j++){
p=j;
for(i=0;
i++)for(i=j;
i++)#for(i=j+1;
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;
排序前的数据:
m;
i++)printf("
a[i]);
printf("
fun(a,m);
排序后的数据:
11.二分法求根多函数精度
/*11给定程序modi.c,函数fun和funx的功能是:
用二分法求方程2x^3-4x^2+3x-6=0
的一个根,并要求绝对误差不超过0.001。
例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000。
math.h"
doublefunx(doublex)
{return(2*x*x*x-4*x*x+3*x-6);
doublefun(doublem,doublen)
intr;
doubler;
r=(m+n)/2;
while(fabs(n-m)<
0.001)while(fabs(n-m)>
0.001)#while(fabs(m-n)>
0.001)
{if(funx(r)*funx(n)<
0)m=r;
elsen=r;
returnr;
{doublem,n,root;
Entermn:
\n"
m,&
root=fun(m,n);
root=%6.3f\n"
root);
12.多项式之和迭带
/*12.给定程序modi.c中,函数fun的功能是:
根据整型形参n,计算如下公式的值。
A1=1,A2=1/(1+A1),A3=1/(1+A2)。
。
An=1/1+A(n-1)
例如:
若n=10,则应输出:
0.617977。
intfun(intn)floatfun(intn)
{floatA=1;
inti;
for(i=2;
i++)for(i=2;
=n;
A=1.0/(1+A);
returnA;
{intn;
A%d=%f\n"
n,fun(n));
13.多项式之和数据类型
/*13给定程序modi.c中,函数fun的功能是:
根据整型形参m的值,计算如下公式的值。
t=1-1/(2*2)-1/(3*3)......-1/(m*m)例如:
若m中的值为:
5,则应输出:
0.536389。
doublefun(intm)
{doubley=1.0;
inti;
for(i=2;
=m;
y-=1/(i*i);
y-=1./(i*i);
#y-=1.0/(i*i);
#y-=(double)1/(i*i);
return(y);
{intn=5;
\nTheresultis%lf\n"
14.字串数组下标妙用字串结束
/*14函数fun的功能是:
统计字符串中各元音字母(即:
A、E、I、O、U)的个数。
字母不分大小写。
例如:
若输入:
THIsisaboot,则输出应该是:
1、0、2、2、0。
fun(char*s,intnum[5])
{intk,i=5;
for(k=0;
num[i]=0;
num[k]=0;
for(;
*s;
s++)
{i=-1;
switch(s)switch(*s)
{case'
a'
:
case'
A'
{i=0;
case'
e'
E'
{i=1;
i'
I'
{i=2;
o'
O'
{i=3;
u'
U'
{i=4;
if(i>
=0)
num[i]++;
/*15.将长整型数中的每一位上为奇数的数依次取出,构成一个新数放在t中,高位仍为高位,低位仍为低位,例如:
s中的数为:
87653142,t中的数为7531.*/
voidfun(longs,long*t)
{intd;
longs1=1;
t=0;
*t=0;
while(s>
0)
{d=s%10;
if(d%2==0)if(d%2!
=0)#if(d%2)#if(d%2==1)
{*t=d*s1+*t;
s1*=10;
s/=10;
{longs,t;
\nPleaseenters:
%ld"
s);
fun(s,&
t);
Theresultis:
%ld\n"
t);
/*16.从整数10到55之间,选出能被3整除且至少有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回.规定:
函数中的a1中放个位数,a2中放十位数.*/
fun(int*b)
{intk,a1,a2,i=0;
for(k=10;
=55;
{a2=k/10;
a1=__________;
a1=k%10;
if((k%3==0&
a2==5)||(k%3==0&
a1==5))
{b[i]=k;
i++;
returnk;
#returni;
{inta[100],k,m;
m=fun(a);
k++)printf("
%4d"
a[k]);
/*17.把n个数按由大到小排序.*/
stdlib.h>
voidfun(inta,intn)voidfun(int*a,intn)#voidfun(inta[],intn)#voidfun(inta[N],intn)
{inti,j,k,t;
for(j=0;
{k=j;
for(i=j+1;
if(a[i]<
a[k])k=i;
if(a[i]>
a[k])k=i;
t=a[j];
a[j]=a[k];
a[k]=t;
{inta[N],i;
N;
i++)a[i]=rand()%100;
####beforesort####\n\n"
i++)printf((i+1)%10?
%6d"
%6d\n"
fun(a,N);
****aftersort****\n\n"
18.由一个数构成另一