【程序1】
题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数
都是多少
1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去
掉不满足条件的排列.
2.程序源代码:
main()
{
int
i,j,k
printf("\n")
for(i1i<5i++)
/*以下为三重循环*/
for(j1j<5j++)
for
(k1k<5k++)
{
if
(i!k&&i!j&&j!k)
/*确保i,j,k三位互不相同*/
printf("%d,%d,%d\n",i,j,k)
}
}
【程序2】
题目:企业发放的奖金根据利润提成.利润(i)低于或等于10万元时,奖金可提10%利润高
于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
成7.5%20万到40万之间时,高于20万元的部分,可提成5%40万到60万之间时高于
40万元的部分,可提成3%60万到100万之间时,高于60万元的部分,可提成1.5%,高于
100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数
1.程序分析:请利用数轴来分界,定位.注意定义时需把奖金定义成长整型.
2.程序源代码:
main()
{
long
int
i
int
bonus1,bonus2,bonus4,bonus6,bonus10,bonus
scanf("%ld",&i)
bonus1100000*0.1bonus2bonus1+100000*0.75
bonus4bonus2+200000*0.5
bonus6bonus4+200000*0.3
bonus10bonus6+400000*0.15
if(i<100000)
bonusi*0.1
else
if(i<200000)
bonusbonus1+(i-100000)*0.075
else
if(i<400000)
bonusbonus2+(i-200000)*0.05
else
if(i<600000)
bonusbonus4+(i-400000)*0.03
else
if(i<1000000)
bonusbonus6+(i-600000)*0.015
else
bonusbonus10+(i-1000000)*0.01
printf("bonus%d",bonus)
}
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
的结果满足如下条件,即是结果.请看具体分析:
2.程序源代码:
#include
"math.h"
main()
{
long
int
i,x,y,z
for
(i1i2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++
printf("it
is
the
%dth
day.",sum)}
【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
main()
{
int
day,month,year,sum,leap
printf("\nplease
input
year,month,day\n")
scanf("%d,%d,%d",&year,&month,&day)
switch(month)/*先计算某月以前月份的总天数*/
{
case
1:sum0break
case
2:sum31break
case
3:sum59break
case
4:sum90break
case
5:sum120break
case
6:sum151break
case
7:sum181break
case
8:sum212break
case
9:sum243break
case
10:sum273break
case
11:sum304break
case
12:sum334break
default:printf("data
error")break
}
sumsum+day
/*再加上某天的天数*/
if(year%4000||(year%40&&year%100!0))/*判断是不是闰年*/
leap1
else
leap0
if(leap1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++
printf("It
is
the
%dth
day.",sum)}
【程序5】
题目:输入三个整数x,y,z,请把这三个数由小到大输出.
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小.
2.程序源代码:
main()
{
int
x,y,z,t
scanf("%d%d%d",&x,&y,&z)
if
(x>y)
{txxyyt}
/*交换x,y的值*/
if(x>z)
{tzzxxt}/*交换x,z的值*/
if(y>z)
{tyyzzt}/*交换z,y的值*/
printf("small
to
big:
%d
%d
%d\n",x,y,z)
}
【程序6】
题目:用*号输出字母c的图案.
1.程序分析:可先用'*'号在纸上写出字母c,再分行输出.
2.程序源代码:
#include
"stdio.h"
main()
{
printf("hello
c-world!\n")
printf("
****\n")
printf("
*\n")
printf("
*
\n")
printf("
****\n")
}
【程序7】
题目:输出特殊图案,请在c环境中运行,看一看,very
beautiful!
1.程序分析:字符共有256个.不同字符,图形不一样.
2.程序源代码:
#include
"stdio.h"
main()
{
char
a176,b219
printf("%c%c%c%c%c\n",b,a,a,a,b)
printf("%c%c%c%c%c\n",a,b,a,b,a)
printf("%c%c%c%c%c\n",a,a,b,a,a)
printf("%c%c%c%c%c\n",a,b,a,b,a)
printf("%c%c%c%c%c\n",b,a,a,a,b)}
【程序8】
题目:输出9*9口诀.
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列.
2.程序源代码:
#include
"stdio.h"
main()
{
int
i,j,result
printf("\n")
for
(i1i<10i++)
{
for(j1j<10j++)
{
resulti*j
printf("%d*%d%-3d",i,j,result)/*-3d表示左对齐,占3位*/
}
printf("\n")/*每一行后换行*/
}
}
【程序9】
题目:要求输出国际象棋棋盘.
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格.
2.程序源代码:
#include
"stdio.h"
main()
{
int
i,j
for(i0i<8i++)
{
for(j0j<8j++)
if((i+j)%20)
printf("%c%c",219,219)
else
printf("
")
printf("\n")
}
}
【程序10】
题目:打印楼梯,同时在楼梯上方打印两个笑脸.
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数.
2.程序源代码:
#include
"stdio.h"
main()
{
int
i,j
printf("\1\1\n")/*输出两个笑脸*/
for(i1i<11i++)
{
for(j1j<ij++)
printf("%c%c",219,219)
printf("\n")
}
}
【程序11】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少
1.程序分析:
兔子的规律为数列1,1,2,3,5,8,13,21....
2.程序源代码:
main()
{
long
f1,f2
int
i
f1f21
for(i1i<20i++)
{
printf("%12ld
%12ld",f1,f2)
if(i%20)
printf("\n")/*控制输出,每行四个*/
f1f1+f2
/*前两个月加起来赋值给第三个月*/
f2f1+f2
/*前两个月加起来赋值给第三个月*/
}
}
【程序12】
题目:判断101-200之间有多少个素数,并输出所有素数.
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数.
2.程序源代码:
#include
"math.h"
main()
{
int
m,i,k,h0,leap1
printf("\n")
for(m101m<200m++)
{
ksqrt(m+1)
for(i2i<ki++)
if(m%i0)
{leap0break}
if(leap)
{printf("%-4d",m)h++
if(h%100)
printf("\n")
}
leap1
}
printf("\nthe
total
is
%d",h)
}
南开二级C语言上机100题1、 改错题1
下列给定程序的功能是:读入一个整数(2<=k《=10000》,打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
*******************************
IsPrime(int n) ——————去掉分号
{int i,m
m=1
for ( i=2i<ni++)
******************************
if !(n%i) ——————if (!(n%i))
{ m=0break}
return (m)
}
main()
{ int j,k
clrscr()
printf("nPlease enter an integer number between 2 and 10000:")scanf("%d",&k)
printf("nnThe prime factor(s) of %d is (are):",k)
for (j=2j<=kj++)
if ((!(k%j))&&(IsPrime(j)) printf("n %4d",j)
printf("n")
)
2、 编程题1
m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值行会,将低于平均分的分数放在below所指的数组中。
例如,但score数组的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该时4,below中的数据应为10、20、30、40。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <string.h>
int fun (int score[],int m, int below[])
{
——————int i,k=0float aver=0
for(i=0i<mi++)
aver+=(score[i])
aver/=m
for (i=0i<mi++)
if (score[i]<aver)
{below[k]=score[i]
k++
retern(k)}
}
main()
{int i, n, below[9]
int score [9]={10,20,30,40,50,60,70,80,90}
clrscr()
n=fun(score,9,below)
printf("nBelow the average score are:")
for (i=0i<ni++) printf ("%d",below[i])
}
3、 改错2
下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <studio.h>
#include <string.h>
****************************************
voidfun(char *p,char *q,char *c)——去分号
***************************************
{int k=1 ——1改为0
***************************************
while(*p!=*q) —— != 改为 ||
***************************************
{if (*p<*q) c[k]=*q ——小于号改为小于等于
else c[k]=*p
if (*p) p++
if (*q) q++
k++
}
}
main()
{char a[10]="aBCDeFgh",b[10]="ABcd",c[80]={''}
fun(a,b,c)
printf("The string a:")puts(a)
printf("The string b:")puts (b)
printf("The result:")puts(c)
}
4、 改错3
下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#include <conio.h>
void fun (char *s)
{ int i,j
for (i=0,j=0s[i]!='\0'i++)
****************************************
if (s[i]>='0' &&s[i]<='9')
s[j]=s[i]——————j改为j++
***************************************
s[j]="\0" ——————s[j]='\0'
}
main()
{char item[80]
clrscr()
printf("\nEnter a string:")gets(item)
printf("\n\nThe string is :\%s\n",item)
fun (item)
printf("\n\nThe string of changing is :\%s\n",item)
}
5、 改错4
下列给定程序中,函数fun的功能是:分别铜级字符串中大写字母和小写字母的个数。例如,给字符串s输入:AAaaBBb123CCccccd,则应该输出结果:upper=6,lower=8。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
**********************************
void fun (char *s,int a, int b) ————a应为*a,b应为*b
{ while(*s)
{ if (*s>='A' &&*s<='Z')
***********************************
a++ ————(*a)++
if (*s>='a' &&*s<='z')
************************************
b++ ————(*b)++
s++
}
}
main()
{ char s[100]int upper=0,lower=0
clrscr()
printf("nPlease a string:")gets(s)
fun(s,&upper, &lower)
printf("n upper=%d lower=%dn",upper,lower)
}
6、 改错5
假定整数数列中的数不重复,并存放在数组中。下列给定程序中,函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#define N 20
fun (int *a,int n, int x)
{int p=0,i
a[n]=x
while (x!=a[p])
p=p+1
if (p==n) return -1
else
{for (i=pi<ni++)
******************************************
a[i+1]=a[i] ————a[i]=a[i+1]
return n-1
}
}
main()
{int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i
n=10
printf("The original data:n")
for (i=0i<ni++) printf("%5d",w[i])
printf("nInput x (to delete):")scanf("%d",&x)
printf("Delete:%dn",x)
n=fun(w,n,x)
if (n==-1) printf("***Nor be found!***nn")
else
{printf("The data after deleted:n")
for (i=0,i<ni++) printf("%5d",w[i])printf("nn")
}
}
7、 改错6
下列给定程序中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。t=1-1/2×2-1/3×3-…-1/m×m
例如,若m中的值为5,则应输出:0.536389。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <conio.h>
#include <stdio.h>
double fun (int m)
{ double y=1.0
int i
***************************************
for (i=2i<mi++) ———— “<”改为“<=”
***************************************
y-=1/(i*i) ————“1”改为“1.0”
return(y)
}
main ()
{int n=5
clrscr()
printf("\nRhe result is %1f\n",fun(n))
}
8、 改错7
下列给定程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#define N 20
void fun(int a[],int n)
{ int i,j,t,p
for (j=0j<n-1j++)
***************************
{p=j ——加上“;”
for (i=ji,ni++) ——j改为j+1
if (a[i]<a[p])
*********************************
p=j ——j改为i
t=a[p]a[p]=a[j]a[j]=t
}
}
main()
{
int a[N]={9,6,8,3,-1},i,m=5
printf("排序前的数据:")
for (i=0i<mi++) printf("%d",a[i])printf("\n")
fun(a,m)
printf("排序后的数据:")
for (i=0i<mi++) printf("%d",a[i])printf("\n")
}
9、 改错8(2004.7.27)
下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为eABCDFGH。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
fun(char *p)
{ char max,*qint i=0
max=p[i]
while(p[i]!=0)
{ if(max<p[i])
{max=p[i]
*******************************
p=q+i——改为q=p+i
}
i++
}
******************************
while(q<p)——q<p改为q>p
{*q=*(q-1)
q--
}
p[0]=max
}
main()
{char str[80]
printf("Enter a string:")gets(Str)
printf("\nThe original string: ")puts(Str)
fun(str)
printf("\nThe string agter moving:")puts (str)ptintf("\n\n")
}
10、 改错9(2004.7.27)
下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:
80.5 60 72 90.5 98 51.5 88 64
则低于平均分的学生人数为4(平均分为:75.5625)。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <conio.h>
#include <stdio.h>
#define N 20
int fun (float *s,int n,float *aver)
{float ave,t=0.0
int count=0,k,i
for (k=0k<nk++)
*******************************
t=s[k]——t+=s[k]
ave=t/n
for (i=0i<ni++)
if (s[i]<ave) count++
******************************
*aver=&ave ——去掉&
return count
}
main()
{float s[30],aver
int m,i
clrscr()
printf("nPlease enter m:"scanf("%d",&m)
printf("nPlease enter %d mark:n",m)
for (i=0i<mi++) scanf("%f",s+i)
printf("nThe number of students:%dn",fun(s,m,&aver))
printf("Ave=%fn",aver)
)
11、 改错10(2004.8.1)
下列给定程序中,函数fun的功能是:将s所指字符串中出现的t1所指子串全部替换成t2所指子字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。例如,当s所指字符产中的内容为abcdabfab,t1所指子串中的内容为ab,t2所指子串中的内容为99时,结果,在2
所指的数组中内容应为99cd99f99。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun (char *s, char *t1,char*t2,char*w)
{
int i char *p,*r,*a
strcpy(w,s)
while(*w)
{p=wr=t1
********************************************
while(r) ——r改为*r
if(*r==*p) {r++p++}
else break
if(*r=='')
{a=wr=t2
*******************************************
while(*r){*a=*ra++r++} ——改为while(*r){*a=*ra++r++}
w+=strlen(t2)
}
else w++
}
}
main()
{
char s[100],t1[100],t2[100],w[100]
clrscr()
printf("nPlease enter string S:")scanf("%s",s)
printf("nPlease enter string t1:")scanf("%s",t1)
printf("nPlease enter string t2:")scanf("%s",t2)
if (strlen(t1)==strlen(t2))
{
printf("nThe result is :%sn",w)
}
else printf("Error:strlen(t1)!=strlen(t2)n")
}
12、 改错11(2004.8.1)
给定程序MODI1.C中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。
请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
int fun ()
{
int a [3] [3], sum
int i, j
***********************************
_____——sum = 1
for (i=0i<3i++)
{ for (j=0j<3j++)
*****************************************
scanf (〃%d〃 a [i] [j]) ——scanf("%d", &a[i][j])
}
for (i=0i<3i++)
sum=sum*a[i] [i]
printf (〃Sum=%dn〃, sum)
}
main ()
{fun ()}
13、 改错12(8.1)
下列程序的功能是:读入一个整数 k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include 〃conio.h〃
#include 〃stdio.h〃
************************************************
IsPrime ( int n )——IsPrime(int n)
{ int i, m
m = 1
for ( i = 2i <n/ i++ )
*********************************************
if !( n%i ) ——if(!(n%i))
{ m=0break }
return ( m )
}
main ()
{ int j, k
clrscr ()
printf (〃nPease enter an integer number between 2 and 10000:〃)scanf ( 〃%d〃,&k )
printf ( 〃nn The prime factor (s) of % d is ( are ):〃, k )
for ( j = 2j <= kj++ )
if ( ( ! k%j ) ) &&( IsPrime ( j ) ) }printf ( 〃n % 4d〃, j )
printf (〃n〃)
}
14、 改错13(8.4)
下列程序中,fun函数的功能是:根据形参m,计算如下公式的值。
t=1+ 1/2 + 1/3 + 1/4 + … + 1/m
例如,若输入5,则应输出2.283333。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
double fun(int m)
{
double t=1.0
int i
for(i=2i<=mi++)
*******************************************
t+=1.0/k ——k改为i
*********************************************
____________ ——填return t
}
main()
{
int m
clrscr()
printf(“nPlease enter 1 integer number:”)
scanf(“%d”,&m)
printf(“nThe result is %1fn”,fun(m))
}
15、 改错14(8.4)
下列程序中,fun和funx函数的功能是:
用二分法求方程2x×x×x-4x×x+3x-6=0的一个根,并要求绝对误差不超过0.001。例如,若给m输入-100,给n输入90,则函数求得的一个根为2.000。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<math.h>
double funx(double x)
{
return(2*x*x*x-4*x*x+3*x-6)
}
double fun(double m, double n)
{
**************************************
int r——改为double r
r=(m+n)/2
**********************************
while(fabs(n-m)<0.001) —— "<" 改为" >= "
{if(funx(r)*funx(n)<0 m=r
else n=r
r=(m+n)/2
)
return r
)
main()
{
double m,n,root
printf("Enter m n:n")scanf("%1f%1f",&m,&n)
root=fun(m,n)
printf("root=%6.3fn",root)
}
16、 改错15(8.5)
下列给定程序中,函数fun的功能是:判断字符ch是否与str所指串中的某个字符相同;若相同,则什么也不做,若不同,则将器插在串的最后。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
#include <string.h>
**********************************
void fun(char str, char ch)------------------------1
{ while(*str &&*str!=ch) str++
**********************************
if (*str==ch)------------------------------------2
{ str[0]=ch
*********************************
str[1]='0'------------------------------------3
}
}
main()
{char s[81],c
clrscr()
printf("nPlease enter a string:n")gets(s)
printf("nPlease enter the character to search:")
c=getchar()
fun(s,c)
printf("nThe result is %sn",s)
}
15 题Answer:
1. void fun(char *str, char ch)
2. if (*str=='
17、 改错16(8.5)
下列给定程序中,函数Creatlink的功能是:创建带头结点的单项链表,并为各结点数据域赋0到m-1的值。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data
struct aa *next
}NODE
NODE *Creatlink(int n, int m)
{NODE *h=Null, *p,*s
int i
s=(NODE *)malloc(sizeof(NODE))
********************************************
h=p-------------------------------------1
p->next=NULL
for (i=1i<=ni++)
{s=(NODE *)malloc(sizeof(NODE))
********************************************
s->data=rand()%m-----------------------2
s->next=p->next
p->next=s
p=p->next
}
********************************************
return p--------------------------------3
}
outlink(NODE *h)
{NODE *p
p=h->next
printf("nnTHE LIST:nn HEAD")
while(p)
{printf("->%d",p->data)
p=p->next
}
printf("n")
}
main()
{ NODE *head
clrscr()
head=Creatlink(8,22)
outlink(head)
}
16 题Answer:
1. h=p=s
2. s->data=rand()%(m-1)
3. return h
18、 改错17(8.5)
下列给定程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
int fun(int k)
{int m=0, mc=0,j
while ((k>=2)&&(mc<10))
*********************************
{if ((k%13=0)||(k%17=0))-------------------1
{m=m+kmc++}
k--
}
return m
**********************************
_____________-------------------------------2
main()
{clrscr()
printf("%dn",fun(500))
}
17 题Answer:
1. if ((k%13==0)||(k%17==0))
2. }
19、 改错18(8.5)
下列给定程序中,函数fun的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65 b=60
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
********************************
void fun (int a,b)--------------------------1
{int t
*******************************
t=bb=aa=t-------------------------------2
}
main()
{int a,b
clrscr()
printf("Enter a,b:")scanf("%d%d",&a,&b)
fun(&a,&b)
printf("a=%d b=%dn",a,b)
}
18 题Answer:
1. void fun (int *a,int *b)
2. t=*b*b=*a*a=t
20、 改错19(8.5)
下列给定程序中,函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,一次构成一个新数放在t中。例如,当s中的数为7654321时,t是的数为642。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
********************************
void fun (long s, long t)--------------------------1
{long sl=10
s/=10
*t=s%10
****************************
while (s<0)--------------------------------------2
{s=s/100
*t=s%10*sl+*t
sl=sl*10
}
}
main()
{long s,t
clrscr()
printf("nPlease enter s:")scanf("%ld",&s)
fun(s,&t)
printf("The result is : %ldn",t)
}
19 题Answer:
1. void fun (long s, long *t)
2. while (s>0)
21、 改错20(8.5)
N个有序整数数列已放在一堆数组中,下列给定程序中,函数fun的功能是:利用折半查找算法找整数m再数组中的位置。若找到,则返回其下标值;反之,则返回-1。
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#define N 10
************************************
void fun(int a[],int m)--------------------------1
{int low=0,high=N-1,mid
while(low<=high)
{mid=(low+high)/2
if (m<a[mid])
high=mid-1
***************************************
else if (m>=a[mid])----------------------------2
low=mid+1
else return(mid)
}
return(-1)
}
main()
{int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m
printf("a数组中的数据如下:")
for(i=0i<Ni++) printf("%d",a[i])
printf("Enter m:")scanf("%d",&m)
k=fun(a,m)
if(k>=0) printf("m=%d,index=%d\n",m,k)
else printf("Not be found!\n")
}
20 题Answer:
1. int fun(int a[],int m)
2. else if (m>a[mid])
第二问#include<stdio.h>
void main()
{
int i
for(i=1i<70i++)
if((i%8)==0)
printf("%d ",i)
}
第三
#include<stdio.h>
void main()
{
int n,i,a[10],max
for(i=0i<10i++)
scanf("%d",&a[i])
max=a[0]
for(i=1i<10i++)
if(a[i]>max)
max=a[i]
printf("%d\n",max)
}
第四
#include<stdio.h>
void main()
{
int i,sum=0,s=0
for(i=1i<=100i++)
{
sum=sum+i
if(i%2==0)
s=s+i
}
printf("所有数和喂%d\n偶数和为%d\n",sum,s)
}
这些都基础的多看书吧