程序改错填空设计题库

合集下载

《C程序设计第五版》期末考试改错题

《C程序设计第五版》期末考试改错题

1.以下程序让用户从键盘输入n,计算n!并输出,请改正其中的错误。

#include <stdio.h>int main(){int n;int i;int p;scanf("%d", n);for (i = 1; i < n; i ++)p = p * i;printf("%d\n",p);return 0;}2.下面程序的功能是将数组元素的倒置,找出其中的错误并改正之。

#include "stdio.h"#define M 5int main(){ int a[M]={1,2,3,4,5};int i,j,t;i=0;j=M;while(i < j{t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i++;j--;}for(i=0;i<M;i++) printf("%d ",(a+i));return 0;}正确答案:#include <stdio.h>#define M 5int main(){ int a[M]={1,2,3,4,5};int i,j,t;i=0;j=M-1;while(i < j){t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i++;j--;}for(i=0;i<M;i++) printf("%d",*(a+i));return 0;}3.下面程序的功能是将数组元素倒置,找出其中的5处错误并改正之。

#include "stdio.h"#define M 5;main(){ int a[M]={1,2,3,4,5};int i,j,*t;i=0;j=M-1;while(i){t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i++;j++}for(i=0;i<M;i++) printf("%d",(a+i));}4.在下面这个程序中,要求其实现的功能是对用户输入的任意整数计算其阶乘,输入小于等于-1的数时退出程序。

C语言 程序设计基础试题五及答案

C语言 程序设计基础试题五及答案

《程序设计基础》考试试卷五班级姓名学号____________1.以下叙述中正确的是( )A. C程序中注释部分可以出现在程序中任意合适的地方B. 花括号"{"和"}"只能作为函数体的定界符C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名D. 分号是C语句之间的分隔符,不是语句的一部分2.在一个C语言程序中( )A. main函数必须出现在所有函数之前B. main函数可以在任何地方出现C. main函数必须出现在所有函数之后D. main函数必须出现在固定位置3.判断下面标识符中哪个是C语言中合法的用户定义标识符( )A. a-bB. #abdC. typedefD. _max4.为表示关系X≥Y≥Z,应使用C语言表达式( )A. (X≥Y)&&(Y≥Z)B. X>=Y>=ZC. (X>=Y)‖(Y>=Z)D. (X>=Y)&&(Y>=Z)5.设有一分段函数:x=1 a<b且c=dx=2 a>=b则下列程序段哪个是正确的( )A. if(a<b)B. if (a<b)C. if (a>b)D. if (a>=b)if(c= =d) {if (c= =d) if (c= =d) x=2;x=1; x=1; x=1; elseelse x=2; else x=2;} else x=2; {if(c= =d) x=1;}6.若有两条语句:static char x[]=”abcde”;static char y[]={…a‟,‟b‟,‟c‟,‟d‟,‟e‟};则下列说法中正确的是( )A. x数组和y数组长度相同B.x数组长度大于y数组长度C.x数组长度小于y数组长度D.以上三种说法均错误。

7.返回值为void的函数,其含义是( )A.调用函数之后,被调用的函数没有返回值;B.调用函数之后,被调用的函数不返回C.调用函数之后,被调用的函数返回值为任意类型D.以上三种说法均不正确。

vb第次考试复习题单选判断程序填空改错练习

vb第次考试复习题单选判断程序填空改错练习

vb第次考试复习题单选判断程序填空改错练习————————————————————————————————作者:————————————————————————————————日期:一、判断共19题(共计19分)第1题(1.0分)题号:684在窗体的form_load事件过程里定义的变量是局部变量。

第2题(1.0分)题号:380VB规定窗体文件的扩展名是 .vbp。

3题(1.0分)题号:681对于动态数组,在过程中可多次使用redim语句改变数组的大小。

第4题(1.0分)题号:285所有的控件在程序运行以后都是可见的。

第5题(1.0分)题号:677通常用show方法来显示通用对话框第6题(1.0分)题号:683控件数组中的各个元素由caption属性区分。

第7题(1.0分)题号:680通用对话框控件在运行的时候,是不可见的。

第8题(1.0分)题号:361设A=3,B=4,C=5,D=6,则表达式A>B And C<=D Or 2* A>C的值是 False。

第9题(1.0分)题号:313“菜单编辑器”中至少要填“名称”和“标题”这两个框,才能真确完成菜单栏的设计。

第10题(1.0分)题号:325VB若同一个工程有许多窗体,可以指定任一窗体为启始窗体。

第11题(1.0分)题号:335通过改变属性窗口中的Name属性,可以改变窗体上显示的标题。

第12题(1.0分)题号:324如果一个菜单项的Visible属性为False,则它的子菜单也不会显示。

第13题(1.0分)题号:678鼠标mousedown事件可以返回一个参数button用于判断用户按下的是鼠标的左键、右键、还是滑轮。

第14题(1.0分)题号:254有的对象属性既可在属性窗口中设定又可在程序代码中设定。

第15题(1.0分)题号:686时钟控件的interval属性的单位是毫秒。

第16题(1.0分)题号:248对象的可见性用enabled属性设置,可用性用visible属性设置。

VFP程序改错题

VFP程序改错题

2018安徽省计算机专业对口高考程序改错题汇总1.下列程序为求s=1-1/3+1/5-1/7+...-1/99之值,(精确到小数后两位), 程序中有错误。

改正后运行程序,将程序执行结果填入答案框内。

set talk offs=0n=1do while n<=99s=s+1/nn=n+1enddo?sreturnset talk offs=0n=1i=1do while n<=99s=s+i/nn=n+2i=-ienddo?sreturn2.下面的程序是求3+9+27+81+243+...这样的数之和. 若累加数大于500时,则结束累加.程序中有一处错误。

改正后运行程序,将程序执行结果填入答案框内。

SET TALK OFFCLEARX=3Y=0DO WHILE .F.Y=Y+XIF Y>500EXITENDIFSTORE 3*X TO XENDDOSET TALK ONRETURNDo while .f. 改为 Do while .t.3.已知S1=1,S2=1+2,S3=1+2+3,…,SN=1+2+…+N,下面的程序求S20到S80有多少数能被17或35整除。

改正后运行程序,将程序执行结果填入答案框内。

SET TALK OFFI=20N=0DO WHILE I<=80STORE 1 TO S 改为 s=0J=1DO WHILE J<=IS=S+JJ=J+1ENDDOIF MOD(S,17)=0 or mod(s,35)=0N=N+1ENDIFI=I+1ENDDO? NSET TALK ONRETURN4.下列程序为求满足s=1^3+2^3+3^3+...+N^3,当s>=100000的最小的整数N。

程序中有错误。

改正后运行程序,将程序执行结果填入答案框内。

set talk offs=0n=1do while s>=100000 改为s<10000s=s+n^3n=n+1enddo?nreturn5.计算S=1*5*9*13*...*k,直到累乘数k>=25中止。

vfp程序改错与程序填空题库(共732题)

vfp程序改错与程序填空题库(共732题)
max=x+y
endif
endif
endfor
endfor
? max
set talk on
return
49
找满足以下条件: X^2+Y^2=41^2且X+Y之值最大的二个正整数X,Y,求X+Y之值.
set talk off
clea
max=1000
for x=0 to 41
for y=0 to 41
if x*x+y*y=41*41
题目
有错误的(改错)或者不完整的(填空)程序
修改后运行的
正确答案
求出[750,978]内不包含数字8的所有整数之和。
set talk off
clear
s=0
for x=750 to978
a=int(x/100)
b=int(x-a*100)/10
c=mod(x,10)
if a=8 or b=8 or c=8
if mod(b,3)=0
n=n+1
endif
endfor
endfor
? n
set talk on
return63
63
已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列中小于6000的最大的项。
set talk off
clear
a=0
for n=0 to 1000
? max
set talk on
return
8051
求[10,1000]内所有能同时被7和9整除的整数之和。
set talk off
clear
s=0
for x=10 to 1000

c语言程序阅读填空运行结果改错题

c语言程序阅读填空运行结果改错题

三、读程序题1、float f=3.1415927;printf(“%f,%5.4f,%3.3f”,f,f,f);则程序的输出结果是3.141593,3.1416,3.142 .2、int x=6,y=7;printf(“%d,”,x++);printf(“%d\n”,++y);程序的输出结果是6,83、a=3;a+=(a<1)?a:1;printf(“%d”,a);结果是. 44、for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}程序的输出结果a的值为22 .5、int y=1,x,*p,a[ ]={2,4,6,8,10};p=&a[1];for(x=0;x<3;x++)y + = * (p + x);printf(“%d\n”,y);程序的输出结果y的值是19 .四、程序填空题1、从键盘上输入10个数,求其平均值。

main(){int i;float f,sum;for(i=1,sum=0.0;i<11;i++){ scanf(“%f”,&f);Sum+=f ;}printf(“average=%f\n”,sum/10);}2、以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。

#include <stdio.h>main(){ FILE *fp;char c;fp= ;do{c=getchar();fputs(c,fp);}while(c!=EOF);3、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

请填空。

main(){ float x,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while(x>=0.0 ){ if(x>amax)amax=x;if(x<=amin )amin=x;scanf(“%f”,&x);}printf(“\namax=%f\namin=%f\n”,amax,amin);}三、阅读程序题(1) 3.141593,3.1416,3.142(2)6,8(3) 4(4)22(5)19四、程序填空题1、scanf(“%f”,&f);sum+=f;2、fopen(“myfile”,w)fclose(fp);3、x>=0.0 x<=amin三、阅读程序题1、int x=6,y=7;printf(“%d,”,x++);printf(“%d\n”,++y);程序的输出结果是______.2、float f=3.1415927;printf(“%f,%5.4f,%3.3f”,f,f,f);则程序的输出结果是______.3、a=3;a+=(a<1)a:1;printf(“%d”,a);结果是______.4、main(){ int a[5]={2,4,6,8,10},*P,* *k;p=a;k=&p;printf(“%d,”,*(p++));printf(“%d\n”,* *k);程序的输出结果是______.5、main(){int a,b;for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;} }程序的输出结果a的值为______.四、程序填空题1、求主次对角线之和。

C语言改错题-含答案

C语言改错题-含答案

第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。

例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。

------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t){/**********FOUND**********/int i;sl = strlen(s);for (i=0; i<sl; i++)/**********FOUND**********/t[i] = s[sl-i];for (i=0; i<sl; i++)t[sl+i] = s[i];/**********FOUND**********/t[2*sl] = "0";}main(){char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);}答案:1). int i,sl;2). t[i] = s[sl-i-1];3). t[2*sl] = '\0'; 或 t[2*sl] = 0;第2题【程序改错】功能:求出以下分数序列的前n项之和。

和值通过函数值返回main 函数。

2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:8.391667。

------------------------------------------------------*/#include <conio.h>#include <stdio.h>/**********FOUND**********/fun ( int n ){int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k <= n; k++ ){/**********FOUND**********/s = (double)a / b;c = a;a = a + b;b = c;}/**********FOUND**********/return c;}main( ){int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}答案:1). double fun(int n)2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或s=s+a/(double)b;3). return s;第3题【程序改错】功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。

湖南省省二选择题库

湖南省省二选择题库
14. 在TC中,设有如下定义: int a=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m=a>b)&&(n=c>d)后,n的值为( C 2 )。
15. 在C语言中,当do-while语句中的条件为( C 0 )时,结束该循环。
16. 在C语言中,有表达式 x=abs(8-10), 则x的值为( 80)。
第八组:综合题二
1、列程序的功能是求出以下分数序列的前25项之和, 2/1,3/2,5/3,8/5,13/8,21/13,...... 请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。
程序: 结果是:40.750431
2、下面程序是求[1,100]之间的所有整数的立方和。请将程序补充完整,并给出正确结果,填入相应窗口。 程序: 结果是:25502500
20. 在TC中,假定有以下变量定义: int k=7 ,x=12; 则能使其值为 3 的表达式是((x%=k)-(k%=5) )。
21. 在TC中,若u=1,v=2,w=3,则表达式w==(v=-u)执行完后w 的值是(3 )。
22. 在TC中,若w=1, x=2 , y=3, z=4; 则条件表达式: w>x ? w : y<z ? y:z 的结果为( 3 )。
结果是: %lf \那契数列的前二项是1,1,以后每一项都是前面两项之和。求10000000以内有多少个斐波那契数? 结果是:35
2、已知fibonacci数列:1,1,2,3,5,8,......,它可由下面公式表述:
F(1)=1 if n=1 F(2)=1 if n=2 F(n)=F(n-1)+F(n-2)
7、一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。求[1,1000]之间的第二大完数。结果是:28

C语言改错题考试题库

C语言改错题考试题库
【程序改错】
--------------------------------------------------------
功能:在一个一维整型数组中找出其中最大的数及其下标。
------------------------------------------------------*/
#define N 10
sort(str[N]);
for(i=0;i<N;i++)
printf("%c",str[i]);
printf("\n");
}
sort(char str[N])
{
int i,j; char t;
for(j=1;j<N;j++)
/***********FOUND***********/
for(i=0;i<N-j;i--)
功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。
------------------------------------------------------*/
#include <stdio.h>
#define N 20
void fun(int a[], int n)
{
int i, j, t, p;
------------------------------------------------------*/
#include "conio.h"
#include "stdio.h"
#include "ctype.h"
#include "string.h"

C语言程序改错基本题库

C语言程序改错基本题库

北京石油化工学院12级复习题程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。

1.求1234nmain(){long int sum;int n,i=1;scanf(”%d”,n);printf(“\n”);while(i<n){ sum=sum*i;i++;}printf(”sum=%d”,sum);}2.求一个数组中最大值及其下标。

main(){ int max,j,m;int a[5];for(j=1;j〈=5;j++)scanf(“%d",a);max=a[0];for(j=1;j〈=5;j++)if(max〉a[j]){max=a[j];m=j;}printf(“下标:%d\n最大值:%d”, j,max)}*3. 求3+4int a=3,b=4;main(){int a,c;c=a+b;printf(“c=%d”);}4.用一个函数求两个数之和.sum(x,y){float z;z=x+y;return;}main(){float a,b;int c;scanf(”%f,%f",&a,&b);c=sum(a,b);printf("\nSum is %f",sum);}5.用指针作函数参数,对输入的两个整数按大小顺序输出。

swap(int *p1,*p2){ int *p;*p=*p1;*p1=*p2;*p2=*p;}main(){int a,b;int *q1,*q2;scanf("%d,%d”,&a,&b);&q1=a,&q2=b;if(a<b)swap(*q1,*q2);printf("\n%d,%d\n",q1,q2);}前五题答案:1.sum应初始化即加入sum=1第四行改为:scanf(“%d",&n);第六行改为:while(i〈=n)第十行改为:printf("sum=%ld”,sum);2. 第四行改为:for(j=0;j〈5;j++)第五行改为:scanf(“%d",&a[j]);第七行改为:for(j=0;j〈5;j++)第八行改为:if(max<a[j])第十三行改为:printf(“下标:%d\n最大值:%d", m,max)3。

java程序改错12道及答案

java程序改错12道及答案
while(i<100)
{
/***********FOUND***********/
if(i%2==0)
s=s+i;
i=i+2;
}
/***********FOUND***********/
product=i;
}
System.out.println("偶数之和是 : "+sum);
System.out.println("奇数之积是 : "+product);
3)while(i<=10)或while(i<11)
4)}
/*-------------------------------------------------------
【程序改错】
---------------------------------------------------------
题目2:计算 1/1+1/2+1/3+...+1/100 的值
-------------------------------------------------------*/
public class Prog1
{
public static void main( String args[ ])
{
/***********FOUND***********/
public static void main (args[])
{
/***********FOUND***********/
int n=100,sum=1;
while(n>0)

-程序改错部分试题及答案

-程序改错部分试题及答案

第1题/*i【程序改错】功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。

------------------------------------------------------------------------------------ * #include <stdio. h>ttdefine N 11main(){int i,number,a[N] = {l,2,4,6,8t9t12,15,149,156);printf(^please enter an integer to insert in the array:\n n):/**********FOUND**********/scanf(”%d&number)printf("The original array:\rT);for(i=0;i<N-l;i++)printf (^%5(1 M,a[i]);printf(*\n n);/**********FOUND**********/for(i=N-l;i>二0;i--)if(number<=a[il)/**********FOUND**********/a[i]=a[i-l]:else{a[i+l]=number;/**********FOUND**********/exit;}if(number<a[0]) aL0]二number;printf(^The result array:\n”);for(i=0;i<N;i++)printf(n%5d w,a[il);printf(H\n H);}第2题/♦ ------------------------------------------------------------------------------------ 【程序改错】功能:求如下表达式:S = 1 + ——+ ——+ .................. + ------------1+2 1+2+3 1+2+3+ ......... +n------------------------------------------------------------------------------------ */ #include <stdio.h>main()int n;double fun ();printf ("Please input a nilmber:R):/**********FOUND**********/print("^d^.n);printf(H%10. 6f\n w,fun(n));}/♦♦********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********POUND**********/while(i=l;i<=n;i++);{t=0;for(j=l;j<=i;j++)t=t+j;/ **********P*OL1ND**********/=s+l/t;}return s;}第3题/* ---------------------------------------------------------- 【程序改错】功能:判断m是否为素数,若是返回1,否则返回0。

C语言改错程序题

C语言改错程序题
2-1. 改错题
下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公 式的值。 y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m) 例如:m中的值为5,则应输出0.838611。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结 构。 试题程序: #include <conio.h> #include <stdio.h> double fun(int m) { double y=1.0; /**********************found***********************/ int j=1; int i; for(i=2; i<=m; i++) { j=-1*j; /**********************found***********************/ y+=1/(i * i); } return(y); } main() { int n=5; clrscr(); printf("\nThe result is %lf\n" ,fun(n)); } (1)错误:int j=1; 正确:double j=1.0; (2)错误:y+=1/(i * i); 正确:y+=j/(i * i);
8-1. 改错题
(1)错误: for(i=0; i<n; i++) 正确:for(i=0; i<2; i++) (2)错误:k=m; 正确:m=k; 【解析】错误1:由于题目要求将最小数和次最小数分别与a[0]和 a[1]中的数对调,因此这层循环只需循环两次。 错误2:赋值语句的执行方向是从右向左,即把右边的值赋给左边 的变量。

程序改错题

程序改错题
y-=1/(I*I);
return(y);
}
void main()
{int n=5;
system("CLS");
printf("\nThe result is %1f\n", fun(n));
}
(1)错误:for(I=2; I<m; I++) 正确:for(I=2; I<=m; I++)
(2)错误:a++; 正确:(*a)++;
(3)错误:b++; 正确:(*b)++;
【解析】(1)根据题中程序可以看出,函数fun传递的是地址,那么在函数中就应该出现指针,所以改为void fun (char *s ,int *a, int *b)。
(2)和(3)很明显,这里是要累加数值,因为a、b是指针变量,所以是错误的。
【解析】(1)这里是一个简单的格式错误,if条件应该加括号。
(2)根据阶乘的概念,从n开始,n!=n*(n-1)!,直到1,所以应该为result *=n--;
8、下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。
2、下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值。
t=1-1/(2×2)-1/(3×3)-…-1/(m×m)
请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdlib.h>

一套C++练习题(含答案)

一套C++练习题(含答案)
例如,当x值为5时,100~999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500,共有15个。当x值为27时,各位数字之和为27的整数是:999,只有1个。
填空:(1)999 (2)t/10 (3)x
最后在黑色对话框中输入20后按回车键
十、
1、程序填空题
给定程序中,函数fun的功能是,将形参s所指字符串中的字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。
例如:s所指字符串为:asd123fgh543df,处理后新字符串为asdfghdf123543。
填空:(1)s[i] (2)k (3)0
1、程序填空题
给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写在文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
填空:(1)FILE* (2)fclose(fp) (3)fp
改错:(1)t=(STU *)calloc(sizeof(STU),m); (2)t[k]=b[j];
编程:int i;
double s=0;
for(i=0;i<8;i++) s+=sqrt((x[i]+x[i+1])/2);
return s;
十六、
1、程序填空题
给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。

C语言程序改错题

C语言程序改错题

C语言程序改错一、程序改错共 138 题(共计 1380 分)━━━━━━━━━━━━━━━━━━第 1 题(10.0 分)/*------------------------------------------------------ 功能:根据整型形参 m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)------------------------------------------------------*/ #include "stdio.h"double fun(int m){/**********FOUND**********/double y=1int i;/**********FOUND**********/for(i=3; i<m; i++)/**********FOUND**********/y+=1.0/(2i-3);return(y);}void main(void){int n;clrscr();printf("Enter n: ");scanf("%d", &n);printf("\nThe result is %1f\n", fun(n));getch();}答案:1). double y=1;2). for(i=3; i<=m; i++) 或 for(i=3; i<m+1;i++)3). y+=1.0/(2*i-3);第 2 题(10.0 分)/*------------------------------------------------------ 功能:用选择法对数组中的 n 个元素按从小到大的顺序进行排序。

------------------------------------------------------*/ #include <stdio.h>#define N 20void fun(int a[], int n){int i, j, t, p;for (j = 0 ;j < n-1 ;j++){/**********FOUND**********/p = jfor (i = j;i < n; i++)/**********FOUND**********/if(a[i] >a[p])/**********FOUND**********/p=j;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 = 0;i < m;i++)printf("%d ",a[i]);printf("\n");fun(a,m);printf("排序后的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");getch();}答案:1). p = j;2). if(a[i] < a[p]) 或 if(a[p] > a[i])3). p = i;第 3 题(10.0 分)/*------------------------------------------------------ 功能:编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。

C语言程序改错及填空题

C语言程序改错及填空题

gc23.c下列程序是建立一个包含学生有关数据的单向链表。

但该程序有2个错误,错误出现在每个注释行附近,请调试改正。

调试改正中,不得改变程序结构,也不得增删语句。

#defineNULL0structstud{longnum;charname[10];floatscore;structstud*next;};/*……………comment……………*/intn;structstudcreate()////////structstud*create(void){structstud*head,*p1,*p2;n=0;p1=p2=(structstud*)malloc(sizeof(structstud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);/*……………comment……………*/head=NULL;while(p1!=0)//////////while(p1->num!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p1=(structstud*)malloc(size(structstud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);}p2->next=NULL;return(head);}gc57.c的功能是互换给定数组中的最大数和最小数。

如将下面8个数:5,3,1,4,2,8,9,6变成:5,3,9,4,2,8,1,6程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。

程序有二处错误,请改正。

注意:不得增行和删行,也不得修改程序的结构。

main(){inti;staticinta[8]={5,3,1,4,2,8,9,6};voidjhmaxmin();printf("Originalarray:\n");for(i=0;i<8;i++)printf("%5d",a[i]);printf("\n");jhmaxmin(a,8);printf("Arrayafterswapingmaxandmin:\n");for(i=0;i<8;i++)printf("%5d",a[i]);printf("\n");}//注意:voidjhmaxmin(p,n)intp,n;这是一种老的函数形式,现在一般这样写voidjhmaxmin(intp,intn) voidjhmaxmin(p,n)intp,n;////////int*p,n;{intt,*max,*min,*end,*q;end=p+n;max=min=p;for(q=p+1;q<end;q++){if(*q>*max)max=q;if(*q<max)min=q;////////*q<*min}t=*max;*max=*min;*min=t;}gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。

程序设计基础程序修改题及参考答案

程序设计基础程序修改题及参考答案
int i,j,t; for(i=0;i<n-1;i++)
/**********FOUND**********/ for(j=0;j<n-i;j++) /**********FOUND**********/ if(x[i]>x[i+1]) {
t=x[j]; x[j]=x[j+1]; x[j+1]=t; } }
sort(n,a); printf("output the sorted array:\n"); for(i=0;i<=n-1;i++)
printf("%5d",a[i]); printf("\n"); }
第 4 题/*-----------------------------------------------------【程序改错】 -------------------------------------------------------功能:在一个已按升序排列的数组中插入一个数,插入后,数
void output(int *arr,int n) {
int *p,i; p=arr; printf("The changed array is:\n");
/**********FOUND**********/ while(i=0;i<n;i++)
printf("%3d",*p++); printf("\n"); } [备注]此答案中的“★”请忽略。本文档中其它地方出现的“★”请都忽略! 比如 scanf("%d",p★++);就是表示 scanf("%d",p++); if(★max★==★arr★) 即表示 if(max==arr) “★”号表示可以有一个或多个空格。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
源文件:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
if(sum>=450||n==5)
printf("The student is very good!\n");
else
printf("The student is not very good!\n");
}
9、输出100~200之间既不能被3整除也不能被7整除的整数并统计这些整数的个数,要求每行输出8个数。
y = sqrt(a)+sqrt(b) ;
printf ("y = %f \n", y );
}
4、求出a所指数组中最大数和次最大数(规定最大数和次最大数不在a[0]和a[ห้องสมุดไป่ตู้]中),依次和a[0]、a[1]中的数对调。例如:
数组中原有的数为:7、10、12、0、3、6、9、11、5、8
输出的结果为:12、11、7、0、3、6、9、10、5、8
for (i=0; i<sl; i++)
t[sl+i] = s[sl-i-1];
/************found************/
t[sl+i] = '\0';
printf("The result is: %s\n", t);
}
3、求两实数平方根之和,输出此和。例如:输入12和20,输出结果是:y = 7.936238。
j = 0;
for ( i = 1; i <= n; i++, j++ )
{ printf( "%4d", a[j] );
if ( !( i%10 ) ) printf( "\n" );
} printf("\n");
for ( j = 0; j<n-1 ; j++ )
{ p = j;
/************found************/
main()
{ int score,sum=0;
int i,n=0;
for(i=1;i<=5;i++)
{ scanf("%d",&score);
sum+=score;
/************found************/
If (score>=88) n++;
}
/************found************/
}
5、将n个无序整数从小到大排序。
源文件:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
main()
{ int a[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;
int i, j, p, t;
printf( "\n\nBefore sorting %d numbers:\n", n );
for(n=0;n<20;n++)
{ t=t*(n+1);
s=s+t;
}
printf("1!+2!+3!+ … +20!=%e\n",s);
}
13、输入一个百分制成绩,打印出五级记分成绩。考试成绩在90分或90分以上为优秀,80~89分为良好,70~79为中等,60~69为及格,低于60分为不及格。
scanf("%ld", &s);
/************found************/
t = s %10;
while ( s > 0)
{ s = s/100;
t = s%10 * sl + t;
/************found************/
sl = sl*10;
}
printf("The result is: %ld\n", t);
}
2、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。例如:当s中的字符串为:"ABCDE"时,则t中的字符串应为:"ABCDEEDCBA"。
源文件:
#include <conio.h>
#include <stdio.h>
#include <string.h>
main()
j = 0;
for ( i = 1; i <= n; i++, j++ )
{ printf( "%4d", a[j] );
if ( !( i%10 ) ) printf( "\n" );
} printf("\n");
}
6、输出200~300之间的所有素数,要求每行输出8个素数。
源文件:
#include <stdio.h>
{ int i,j,k;
for(i=1;i<=4;i++)
/************found************/
{ for(j=1;j<=i;j++)
printf("%3d *%3d =%3d",i,j,i*j);
/************found************/
printf("\n");
}
}
8、学习优良奖的条件如下:所考5门课的总成绩在450分(含)以上;或者每门课都在88分(含)以上。输入某学生5门课的考试成绩,输出是否够学习优良奖的条件。
源文件:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
for ( i=j+1; i<=n-1 ; i++ )
if ( a[p]>a[i] )
/************found************/
p=i;
if ( p!=j )
{ t = a[j]; a[j] = a[p]; a[p] = t; }
}
printf( "\nAfter sorting %d numbers:\n", n );
/************found************/
t = a[m1]; a[m1]=a[0]; a[0] = t;
/************found************/
t = a[m2]; a[m2]=a[1]; a[1] = t;
for ( i=0; i<n; i++ ) printf("%d ",a[i]); printf("\n");
源文件:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
main()
/*************found**************/
float s,t;
int n;
s=0;t=1;
/*************found**************/
源文件:
#include <stdio.h>
#include <math.h>
main( )
{
/************found************/
double a, b, y;
printf ( "Enter a & b : ");
scanf ("%lf%lf", &a, &b );
/************found************/
源文件:
#include <conio.h>
#include <stdio.h>
#define N 20
main( )
{ int a[N]={7,10,12,0,3,6,9,11,5,8}, n=10, i, k,m1,m2,max1,max2,t;
for ( i = 0; i<n; i++) printf("%d ",a[i]); printf("\n");
#include <conio.h>
#include <stdlib.h>
#include <math.h>
main()
{ int m,j,n=0,k;
for(m=200;m<=300;m++)
{ k=sqrt(m);
for(j=2;j<=k;j++)
/************found************/
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
相关文档
最新文档