C语言程序改错及填空题
c语言改错题及答案
c语言改错题及答案【篇一: c 语言二级上机(t 填空 ,改错 ,编程 )题库及答案】100套题目(每套题目包含 3 道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,每个考生考试时只需考一套题目(包含三道题)二级 c 语言上机试题汇编※※※※※※※※※※※※※※※※※※※※※※※第01套:给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变量。
例如,输入一个数:27638496 ,新的数:为739 。
请在程序的下划线处填入正确的内容并把下划线删除 , 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的blank1.c中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include stdio.hvoid fun(unsigned long *n){ unsigned long x=0, i; int t;i=1;while(*n)/**********found**********/{ t=*n % __1__;/**********found**********/if(t%2!= __2__){ x=x+t*i; i=i*10; }*n =*n /10;}/**********found**********/*n=__3__;}main(){ unsigned long n=-1;while(n99999999||n0){ printf(please input(0n100000000): ); scanf(%ld,n); }fun(n);printf(\nthe result is: %ld\n,n);}【参考答案】(1)10 (2) 0 (3) x解题思路:第一处: t 是通过取模的方式来得到*n 的个位数字,所以应填:10 。
c语言计算机二级填空改错编程题库105套..
第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
第一处 struct student t;第二处 for(i=0;i<n-1;i++)第三处if(strcmp(a[i].name,a[j].name) >0)2程序修改/**found**/q=p+i;/**found**/while(q>p)3程序设计int fun(STREC *a,STREC *b,int l,int h){int i,j=0;for(i=0;i<N;i++)if((a[i].s>=1&&a[i].s<=h)b[j++]=a[i];return j;}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处 free(q);第二处 q=p->next;第三处 q=q->next;2.程序修改/**found**/p=j;/**found**/p=i;3. 程序设计void fun(int m,int *a,int *n) {int i;*n=0;for(i=7;i<=m;i++)if((i%7==0)||(i%11==0))a[(*n)++]=i;}第三套1. 程序填空函数fun的功能是:逆置数组元素是的值。
例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。
形参n给出数组中数组中数据的个数。
第一处 for(i=0;i<n/2;i++)第二处 a[i]=a[n-1-i];第三处 a[n-i-1]=t;2程序修改/**found**/n=*p-‘0’;/**found**/n=n*8+*p-‘0’;3. 程序设计STREC fun(STREC*a,char *b){STREC c;Int i;c.num[0]=’\0’;c.s=-1;for(i=0;i<N;i++)if(strcmp(a[i].num,b)==0){strcpy(c.num,a[i].num);c.s=a[i].s;break;}return c;}第四套1.程序填空给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。
大学C语言期末考试练习题程序改错(带详解答案)
y=3.5+x;
printf(“y=%d”);
}
正确的:
int x; float y;
printf(“y=%f”,y);
6 编程计算下面分段函数, 输入 x, 输出 y
x 1 x 0 y 2x 1 0 x 10
3x 11 x 10
main() { int x,y;
第三处改为:if(n%3==0)
第四处改为:sum=sum+n;
8. 求表达式 c ab 的值
#include <stdio.h>
#include <math.h>
int fun(int x, int y);
main()
{ int a,b; float f; scanf(“%d,%d”,a,b); //与改错第 1 题中的 scanf 错误相同 if(ab>0){ // C 语言中乘号不能省略,且用*表示乘法运算 fun(a,b); // 调用带有返回值的函数,应将函数的返回值保存在变量里
} 第四行改为:for(j=0;j<5;j++) 第五行改为:scanf(“%d”,&a[j]); 第七行改为:for(j=1;j<5;j++) 第八行改为:if(max<a[j]) 第十三行改为:printf(“下标:%d\n 最大值:%d”, m,max)
3.用一个函数求两个数之和。 sum(x,y) //函数定义的一般形式 p173-174 { float z; z=x+y; return; //return 语句后面可以返回 0、常量、变量和表达式的值。 } main() { float a,b; int c; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定
C语言填空改错编程题
1、局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。要用全局变量,需要使用"::"
局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内
{
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%d\n",*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
答:110
7、请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
2.#define Max_CB 500
void LmiQueryCSmd(Struct MSgCB * pmsg)
{
unsigned char ucCmdNum;
......
for(ucCmdNum=0;ucCmdNum<Max_CB;ucCmdNum++)
{
......;
}
死循环
3.以下是求一个数的平方的程序,请找出错误:
18.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
C程序填空改错及答案(可编辑修改word版)
15、结果:52
#include<stdio.h> int fun(int a,int b) { int r,t;
if(a<b) { t=a; a=b; b=t; } r=a%b; while(r!=0) { a=b;
b=r; /*下行有错*/ r=a/b; // r=a%b; } /*下行有错*/ return a; // return b; } main() { int a; a=fun(780,208); printf("%d\n",a); }
#include<stdio.h> void main() {
int num,a,b,c,count=0; /*下行有错*/ while(num=101;num<1000;num++) // for(num=101;num<1000;num++) {
a=num/100; b=num%100/10; c=num%10; /*下行有错*/ if(num+c*100+b*10+a=1333) // if(num+c*100+b*10+a==1333)
if(a%b==0) sum=sum+a/b; } for(i=2;i<=9;i++) if(sum==a*i) /*下行有错 */ count+=i; //count+=1; } printf("%d\n",count); }
7、结果:495.00
#include<stdio.h> float fun(int m, int n) {
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语言改错题-含答案
第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个随机整数从小到大排序。
C改错和程序填空
C改错和程序填空 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】三、程序综合题。
(共4题,每题4分。
估计包括程序判断改错题和程序填空题)1.在下面程序横线处填上适当内容,一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改x为10,并使用show()函数输出x。
#include<>classT{private:staticintx;public:T(int);Voidshow();};_intTest::num=5;____T::T(intn){num=n;}voidT::show(){cout<<num<<endl;}voidmain(){Tt(10);();_____}2.在下划线处填上缺少的部分。
#include<>ClassA{inta,b;public:_A(inti=0,intj=0)____;列程序有一处错,请改正并说明理由#include<>classA{intX,Y;protected:intzx,zy;public:voidinit(inti,intj){zx=i;zy=j;}A(inti,intj,intn=0,intm=0){X=i,Y=j,zx=m,zy=n;}};voidmain(){Aa(25,20,3,5);(5,9);cout<<()<<endl;类中默认X,Y为私有成员,不能直接在函数体外调用。
}改正:将X,Y设置为公有成员即可。
4.下列程序有一处错误,指出改正并说明理由。
#include<>classA{private:intx;public:A(inti){x=i;}A(){x=0;}friendintmin(A&,A&);};intmin(A&a,A&b){return>:;}voidmain(){Aa(3),b(5);cout<<(a,b)<<endl;}友元函数不能直接这么调用。
福建省计算机二级考试C语言上机题库改错填空编程
二、改错题Cmody191.c修改程序,用以计算1~100之间所有的偶数之和。
#include <stdio.h>#include <math.h>void main( ){int i=1;/**/ int sum=2 /**/;while(i++,i<=100){ if(/**/ i==(i/2)*2 /**/)continue;sum+=i;}printf("Sum is %d\n",sum);getch();}Cmody192.c修改程序,将二维数组表示的方阵左下半三角(不含对角线)各元素加4,右上半三角(含对角线)各元素乘2。
#include <stdio.h>#define N 5void main(){int a[N][N],i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=i*5+j+11;printf("\nArray a is:\n");for(i=0;i<N;i++){for(j=0;j<N;j++) printf("%3d ",a[i][j]);printf("\n");}for(i=0;i<N;i++)/**/ for(j=0;j<=i;j++)/**/a[i][j]+=4;for(i=0;i<N;i++)/**/ for(j=i+1 ;j<N;j++) /**/a[i][j]*=2;printf("\nArray a is turned:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d ",a[i][j]);printf("\n");}getch();}Cmody201.c修改程序,计算满足以下条件的整数n的最大值。
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);四、程序填空题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()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语言)填空和改错答案
参考答案一、程序填空题1、(1)double(2)f1(3)f22、(1)struct student(2)n-1(3)a[i].name,a[j].name3、(1)0(2)x[i]/N(3)j++4、(1)k(2)N(3)a[k][i]5、(1)'0'(2)s++(3)ctod(a)+ctod(b)6、(1)0(2)n(3)(t*t)7、(1)j(2)0(3)i++8、(1)N(2)k(3)ss[i]9、(1)a(2)(3)score[i]10、(1)[M](2)N(3)011、(1)t,s(2)s[i](3)012、(1)j(2)k(3)p13、(1)999(2)t/10(3)x14、(1)48(2)s++(3)sum15、(1)h->next(2)p->next(3)>=16、(1)struct student *(2)a->score[i](3)a17、(1)s/N(2)j++(3)-118、(1)n++(2)0(3)s++19、(1)N(2)i(3)-120、(1)a[0][i](2)<(3)x,y21、(1)s(2)--(3)return 022、(1)将while(!__1__)改为while(!feof(__1__)),答案为fp(2)将if (n.sno__2__) break;改为if(n.sno__2__sno) break;,答案为==(3)将fseek(fp, -1L*__3__, SEEK_CUR);改为fseek(__3__, -(long)sizeof(STU), SEEK_CUR);,答案为fp23、(1)->sno(2)->name(3)&t24、(1)x[i]/N(2)j++(3)i++25、(1)0(2)i++(3)2.*i26、(1)[N](2)i(3)i+127、(1)double(2)f1(3)f228、(1)FILE *(2)fclose(fp)(3)fp29、(1)1(2)2*i(3)(-1)30、(1)filename(2)将fseek(fp, -1L*sizeof(STU), __2__);改为fseek(__2__, -(long)sizeof(STU), SEEK_END);,答案为fp(3)将fwrite(__3__, sizeof(STU), 1, fp);改为fwrite(&n, sizeof(STU), 1, __3__);,答案为fp31、(1)*av(2)i(3)x[j]32、(1)FILE *(2)fp(3)ch33、(1)struct student(2)(3)a.score[i]34、(1)i(2)ps[i](3)tp35、(1)s[i](2)k(3)036、(1)3.(2)>(3)(2*i+1)37、(1)10(2)0(3)x38、(1)0(2)x(3)t++39、(1)0(2)||(3)140、(1)k(2)N-1(3)temp41、(1)N(2)break(3)n42、(1)p->next(2)q(3)p->next43、(1)将p = __1__;改为p = h->__1__;,答案为next(2)将if (__2__) return;改为if (p==__2__) return;,答案为0(3)r44、(1)0(2)10*x(3)n/1045、(1)N(2)substr(3)046、(1)1(2)s(3)i*1047、(1)"rb"(2)将if (s[i].sno __2__)改为if (s[i].sno __2__ s[j].sno),答案为>(3)fwrite48、(1)*s(2)1(3)k[n]49、(1)*s(2)s++(3)n50、(1)将__1__ fun(NODE *h)改为__1__ * fun(NODE *h),答案为NODE(2)将/**********found**********/while (__2__){ r = q->next;改为while (q){/**********found**********/r = q->__2__;,答案为next(3)r二、程序修改题1、(1)char *fun(char *s,char *t)(2)ss++;(3)tt++;2、(1)q=p+i;(2)while(q>p)3、(1)double fun(int m)(2)for(i=100;i<=m;i~1+=0)4、(1)for(i = strlen( t )-1; i;i--)(2)if(t[j] > t[j + 1 ] )5、(1)void fun ( char *s, int *a, int *b )(2)++(*a);(3)++(*b);6、(1)for(i=0;str[i];i++)(2)if(substr[k+1]==0)7、(1)for(i=2;i<=m;i++)(2)y-=1.0/i/i;8、(1)int k=0;(2)while( *p || *q )9、(1)s[j++]=s[i];(2)s[j]=0;10、(1)t=1;(2)return(2*s);11、(1)if(i%k==0)(2)if(k>=i)12、(1)while(i<j)(2)if(*a)13、(1)void fun(long s,long *t)(2)while(s>0)14、(1)if ((k%13 == 0) || (k%17 == 0))(2)}15、(1)p=h->next;(2)p=p->next;16、(1)char *fun( char (*sq)[M] )(2)return sp;17、(1)#include "stdio.h"(2)upfst(char *p)18、(1)t+=s[k];(2)*aver=ave;19、(1)a2=k/10;(2)return i;20、(1)int fun(int *x,int *y)(2)t=*x;*x=*y;*y=t;21、(1)double fun (int n)(2)c=a;a+=b;b=c;22、(1)n=strlen( aa ) ;(2)ch=aa[i];23、(1)double fun(double a,double x0)(2)if(fabs(x1-x0)>0.00001)24、(1)num[k]=0;(2)switch(*s)25、(1)void fun (char *s, char *t)(2)t[2*d] = 0;26、(1)aa[i]=m%k;(2)printf("%d",aa[i-1]);27、(1)p=h->next;(2)p=p->next;28、(1)t=(STU *)calloc(sizeof(STU),m);(2)t[k]=b[j];29、(1)k++;(2)if(m==k)30、(1)p=(NODE *)malloc(sizeof(NODE));(2)return h;31、(1)float fun(int n)(2)for (i=2; i<=n; i++)32、(1)s[j++]=s[i];(2)s[j]=0;33、(1)if(p==n) return -1;(2)a[i]=a[i+1];34、(1)double fun(int n)(2)return sum;35、(1)while(*w)(2)if(*r==*p)36、(1)将fun ( int n )改为void fun ( int n ),答案为double fun ( int n )(2)s=s+(double)a/b;37、(1)if (n==0)(2)result *= n-- ;38、(1)int i,sl;(2)t[i]=s[sl-i-1];39、(1)t-=1.0/i;(2)return t;40、(1)将fun(int **a, int m)改为void fun(int **a, int m),答案为void fun(int a[][M], int m)(2)a[j][k]=(k+1)*(j+1);41、(1)sum=0;(2)scanf("%d",&a[i][j]);42、(1)while(*s)(2)s++;43、(1)r=t;(2)将if(*r= O) (字母O)改为if(*r= 0) (数字0)答案为if(*r==0)44、(1)*t=0;(2)if(d%2!=0)45、(1)fun(int x,int y, int z)(2)return j;46、(1)int fun(int n,int xx[][M])(2)printf("%d",xx[i][j]);47、(1)p=s;(2)将while(*p);改为while(*p++),答案为while(*p++); (加分号)48、(1)float fun(int k)(2)return s;49、(1)将int j, c=0, float xa=0.0;改为int j, c=0, double xa=0.0;,答案为int j, c=0;double xa=0.0;(将double前面的逗号改为分号)(2)if (x[j]>=xa)50、(1)if(i%2 || s[i]%2==0)(2)t[j]=0;。
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语言程序改错及填空题
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++)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个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。
c语言程序改错题
程序改错-------------------------------------1题目:在一个一维整型数组中找出其中最大的数及其下标。
程序中共有4条错误语句,请改正错误。
-----------------*/#define N 10/**********FOUND**********/float fun(int *a,int *b,int n){int *c,max=*a;for(c=a+1;c<a+n;c++)if(*c>max){max=*c;/**********FOUND**********/b=c-a;}return max;}main(){int a[N],i,max,p=0;printf("please enter 10 integers:\n");for(i=0;i<N;i++)/**********FOUND**********/scanf("%d",a[i]);/**********FOUND**********/m=fun(a,p,N);printf("max=%d,position=%d",max,p);}-------------------------------------『错误答案』:1 int fun(int *a,int *b,int n)2 *b=c-a;}3 scanf("%d",&a[i]);4 max=fun(a,&p,N);/*-----------------------------------2题目:用起泡法对10个整数从小到大排序。
程序中共有4条错误语句,请改正错误。
-------------------------------------/**********FOUND**********/void sort(int x,int n){int i,j,k,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;}}main(){int i,n,a[100];printf("please input the length of the array:\n");scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,n);printf("output the sorted array:\n");for(i=0;i<=n-1;i++)printf("%5d",a[i]);printf("\n");}-------------------------------------『错误答案』:1 void sort(int x[],int n)2 for(j=0;j<n-1-i;j++) 或for(j=0;n-1-i>j;j++) 或for(j=0;j<n-(1+i);j++) 或for(j=0;n-(1+i)>j;j++)3 if(x[j]>x[j+1]) 或if(x[j+1]<x[j])-------------------------------------3题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
C语言程序填空和修改总结
程序填空题和程序修改题分类总结一、填空题字符串考试内容占30%,数学类型题占25%,结构体类型题占25%,数组内容占20%,文件内容占5%,有些既有文件又有结构体,如填空题第22题,有些既有字符串又有结构体,如填空题第2题。
填空题注意的事项:1、在每个/*found*/下有一空需要我们填写,标记如“__1__ ”。
2、把标记如“__1__ ”等去掉后填写正确内容。
3、不要改变程序其他任何地方,也不得增加或删除一行。
4、运行程序(自动提示保存程序),根据运行结果检验答案是否正确。
(一)、定义变量或类型名1、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。
当调用正确时, 程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>double f1(double x){ return x*x; }double f2(double x, double y){ return x*y; }/**********found**********/__1__ fun(int i, double x, double y){ if (i==1)/**********found**********/return __2__(x);else/**********found**********/return __3__(x, y);}main(){ double x1=5, x2=3, r;r = fun(1, x1, x2);r += fun(2, x1, x2);printf("\nx1=%f,x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);}其中第一空填写的就是函数返回值的类型名,根据return后面的表达式的值的类型就是函数返回值的类型,而return __2__(x);和return __3__(x, y);这样的表达形式只有在函数中存在,而我们定义的f1和f2函数在后面没有用到,不可能无缘无故的使用变量或函数,所以可以分析出这两空一定是填f1,f2函数,具体填哪个,根据他们的形式参数来确定,f1有一个形参,f2有两个形参,实际参数跟形式参数个数一致,类型一致,一一对应,所以第2空填写f1,第3空填写f2,第一空很明显填写double型。
c语言程序填空含答案
【程序填空】功能:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
len=length(str...);I.nt length ........(p)N.++..;P.++..;【程序改错】功能:将一个字符串中的大写字母转换成小写字母。
bool (char)......fun(char *c)fun= c;(return *c)..........puts(*p);(putchar(*p)).............【程序设计】功能:编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数据从大到小排序。
------------------------------------------------*/ #include<stdio.h>void wwjt();void swap(int *a,int *b){/**********Program**********//********** End **********/ }main(){int x,y,z;scanf("%d%d%d",&x,&y,&z);if(x<y)swap(&x,&y);if(x<z)swap(&x,&z);if(y<z)swap(&y,&z);printf("%3d%3d%3d",x,y,z);wwjt();}void wwjt(){FILE *IN,*OUT;int m,n;int i[2];IN=fopen("in.dat","r");if(IN==NULL){printf("Read FILE Error"); }OUT=fopen("out.dat","w"); if(OUT==NULL){printf("Write FILE Error"); }for(n=0;n<3;n++){for(m=0;m<2;m++){fscanf(IN,"%d",&i[m]);}swap(&i[0],&i[1]);fprintf(OUT,"%d\n",i[0]);fprintf(OUT,"%d\n",i[1]);}fclose(IN);fclose(OUT);}/*-------------------------------------------------------【程序填空】功能:输入3个数a,b,c,按从小到大的顺序输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
下列程序是建立一个包含学生有关数据的单向链表。
但该程序有2个错误,错误出现在每个注释行附近,请调试改正。
调试改正中,不得改变程序结构,也不得增删语句。
#define NULL 0struct stud{long num;char name[10];float score;struct stud *next;};/* …………… comment …………… */int n;struct stud create() 序中有两处错误代码,请改正.注意,不得改变程序结构。
#include <>main(){int a[8],*p=a;int i,j;int tempmin,tempcode;printf("\n input the numbers:\n");for (i=0;i<8;i++)scanf("%d",p+i);tempmin=*p;for (i=0;i<7;i++){for (j=i;j<8;j++)if (j==i||*(p+j)<tempmin){ tempmin=*(p+i); ............ comment one .............. */if(j==ls2)return(s1+j); ............ comment two .............. */c=find_str(a,b);if(c!=NULL) printf("%s\n",c);else printf("未找到字符串%s\n",b);}程序的功能是:计算并输出从键盘输入的任一正整数的各位数字之和s以及各位数字之积t。
例如,当输入的正整数为237时,s的值为12,t的值为42。
请改正程序中的两个错误,使它能得出正确的结果。
注意:不得增行或删行,也不得修改程序的结构。
#include ""main(){int n, yw, s=0, t=0; void inv(x,n)int *x,n;{int *p,t,*i,*j,m=(n-1)/2;i=x;j=n; . * ( (2*k*2*k)/((2*k-1)*(2*k+1)) )请改正函数fun中的两个错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include ""#include ""fun( int k ) ........ment 1................*/ n=10; ........ment 2................*/ for(j=0;j<=n/2-abs(i);j++)printf("%c",s[j]);for(j=n/2-abs(i); j<19;j++)printf("%c",s[j]); ............ comment one .............. */for(i=0; i < st; i++)t[st] = s[i]; ............ comment two .............. */t[st] = '\0'; 意,不得改变程序结构。
#include <>main(){int a[10],b[10],i;for(i=0;i<=10;i++) ....注意:不得改变程序的结构和算法,也不能增加或删除程序行。
#include ""int yanghui(int x,int y) #include <>main(){int i,s,k,count=0;for(i=100;i<=1000;i++){s=0;k=i;while(k==0) #include <>main(){ char *p, s[6];int n;p=&s; #include <>#include <>void swap(char *a,char *b){char c;c=*a;*a=*b;*b=c;}void reverse(char *s,char *t){if(s<t){swap(*s,*t); #define M 4 #define N 3void sort(int *x,int *y,int *z) {int i=0,j=0,k=0;while(i<M && j<N)if(x[i]<y[j])z[k++]=x[i++];elsez[k++]=y[j++];while(i<M)z[k++]=x[i++];while(i<N)z[k++]=y[j++];}void main(){int a[M]={1,5,34,100};int b[N]={20,35,200};int c[M+N],i;sort(a,b[0],c); #include <>#include <>void f(char *str){char *p,*q,*r,c;/*--用选择排序法对字符串str中字符按从小到大排序。
找出以下程序段中的错误--*/for(p=str;*p;p++){for(r=p,q=p+1;*q;q++)if(r>q) 注意:不得改变程序结构。
题中涉及的文件所在位置均指考生目录.#include<>main(){int i,s;s=i; #include <>void main(void){ unsigned long num, max, t;int count;count=max=0;scanf("%d", &num); ..#define N 11main( ){int I,j,a[N][N];for (I=1; I<N; I++){ a[I][I]=1;(1) 现上述要求。
不得增加行或删除行,也不得更改程序结构。
#include <>main(){int i,s,k,count=0;for(i=100;i<1000;i++){s=0;k=i;while (__________) 图片文件名:"";宽度:80pixels;高度:80pixels2. “登录名:”文本框名称:"login_name";尺寸:20字符3. “密码:”密码文本框名称:"login_password";尺寸:20字符4. “类型:”下拉组合框文字列表项:“商务用户”、“VIP用户”、“免费用户”5. 发送电子邮件超链接6. BBS超链接<html><head><title>yoyo邮局主页</title></head><body><p align="center"><b><font color="#800080" face="楷体_GB2312" size="5">yoyo 邮局</font></b></p><p align="center">___(1)___ \n");return; }printf("%d %s\n",x,( 2 )"Yes":"No"); main(){int c[64],i=0,base;long n;printf("enter a number:\n");scanf("%ld",&n);printf("enter new base:\n");scanf("%d",&base);do{c[i]=n%base;(1) #include ""main(){int matrix[50][50];int i,j,n,sign=1;printf("Input the rank of the matrix:\n");scanf("%d", (1) ); n");sign=0;break;}if (sign == 0)break;}if ( (3) ) n");}程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。
请将程序补充完整,使它能得出正确的结果。
不得增行或删行,也不得更改程序的结构。
#include <>#include <>main(){ char a[]="clanguage",t;int i, j, k;k=strlen(a);for(i=0; i<=k-2; i+=2)for(j=______; j<=k; j+=2 ) #include <> void main(){int a[10]={10,50,3,80,78,100,56,67,102,11}; int i,j,m;for(i=1;i<10;i++){m=a[i];j=(1); #include ""main(){-----(1)----- i,j,k; #define N 3#define M 4void LineMax(int x[N][M]){ int i,j,p;for(i=0; i<N;i++){ p=0;for(j=1; j<M;j++)if(x[i][p]<x[i][j]) (1) ; #include <>int count(char *str){int i,num=0;for(i=0;str[i];i++){if([ ]) n",number);}给出的文件,其中嵌入了JavaScript脚本,它的功能是:在页面上显示系统日期的中文大写形式工,假设系统日期为2007年11月1日,则在页面上显示“今天是:公元二零零七年十一月一日”。
该文件中有3处空,请补充完整,使之能够正确运行。
注意:不得改变程序的结构和算法,也不能增加或删除程序行。