C语言程序改错及填空题

合集下载

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套..

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语言期末考试练习题程序改错(带详解答案)

大学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语言填空改错编程题

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版)

C程序填空改错及答案(可编辑修改word版)
printf("%d\n",n); }
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语言程序阅读填空运行结果改错题

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个随机整数从小到大排序。

C改错和程序填空

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;}友元函数不能直接这么调用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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处空,请补充完整,使之能够正确运行。

注意:不得改变程序的结构和算法,也不能增加或删除程序行。

相关文档
最新文档