齐齐哈尔大学C语言题库 程序改错(部分)
C语言程序改错题及答案

#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str;// char*str
scanf("%d\n",&n); str=(char*)malloc(n); gets(str);
int a[N]={5,4,3,2,1,9,8,7,6,0};
printf("\nThe array is:\n"); /*输出数组元素*/
for (i=0;i<N;i++)
printf("%5d",a[i]);
for (i=0;i<N-1;i++ห้องสมุดไป่ตู้ /*排序操作*/
{
min = i;
for (j=i+1; j<N; j++)
/****** 2 *****/
putchar(\n);//‘\n’
}
}
12、在考生目录下,有Modify.c程序,该程序中“/***** N *****/”的下一行中有错误,
请改正(注意:不得加行、减//行、加句、减句,否则后果自负)。
该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。
}
11、在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)
C语言程序改错——答案

int j,c=0; /**********FOUND**********/
float j=0;
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资0配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试.,卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试5交写卷、底重保电。要护气管设装设线备置备4敷高动调、设中作试电技资,高气术料并中课3中试且资件、包卷拒料中管含试绝试调路线验动卷试敷槽方作技设、案,术技管以来术架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
c语言程序改错讲解

c语言程序改错讲解一、程序改错共44题第1题(10.0分)题号:380 难度:中第2章/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:输入两个双精度数,函数返回它们的平方和的平方根值。
例如:输入:22.936 和 14.121,输出为:y = 26.934415。
------------------------------------------------------*/#include#include#include/**********FOUND**********/double fun (double *a, *b) // double fun (double *a, double *b) {double c;/**********FOUND**********/c = sqr(a*a + b*b); // c = sqrt(a*a + b*b);/**********FOUND**********/return *c; // return c;}main ( ){double a, b, y;printf ( "Enter a, b : ");scanf ("%lf%lf", &a, &b );y = fun (&a, &b);printf ("y = %f \n", y );}第2题(10.0分)题号:438 难度:中第2章/*------------------------------------------------【程序改错】--------------------------------------------------功能:编写函数fun,求两个整数的最小公倍数,然后用主函数main()调用这个函数并输出结果,两个整数由键盘输入。
大学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程序填空改错及答案(可编辑修改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题【程序改错】功能:先将在字符串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语言改错题题库及详解答案1. 题目:以下代码段中存在错误,请找出并改正。
```c#include <stdio.h>int main() {int a = 10;int b = 20;int c = a + b;printf("The sum is %d", c);return 0;}```答案:代码中缺少了字符串结束的空格。
应改为:```cprintf("The sum is %d ", c);```2. 题目:找出并改正以下代码段中的错误。
```c#include <stdio.h>int main() {int num = 100;if (num = 100)printf("Number is 100\n");return 0;}答案:代码中使用了赋值运算符 "=" 而不是比较运算符 "=="。
应改为:```cif (num == 100)```3. 题目:以下代码段中存在逻辑错误,请指出并改正。
```c#include <stdio.h>int main() {float a, b, c;scanf("%f %f", &a, &b);c = a / b;printf("The result is %f", c);return 0;}```答案:代码中没有检查除数 b 是否为 0,这会导致运行时错误。
应添加检查:```cif (b != 0) {c = a / b;printf("The result is %f", c);} else {printf("Error: Division by zero.\n");}```4. 题目:找出并改正以下代码段中的语法错误。
C语言技能考试题目-程序改错

题号:1功能:用起泡法对10个整数从小到大排序。
/**********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]);/**********FOUND**********/sort(n,a);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) 或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++) 或for(j=0;j<=n-2-i;j++)3). if(x[j]>x[j+1]) 或if(x[j+1]<x[j])4). sort(a,n);题号:2功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.【程序改错】题目:在一个一维整型数组中找出其中最大的数及其下标。
程序中共有4条错误语句,请改正错误。
#define N 10/**********FOUND**********/float fun(int *a,int *b,int n) int 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;} *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**********/get("%d",a[i]); scanf("%d",a[i]);/**********FOUND**********/m=fun(a,p,N); max=fun(a,p,N);printf("max=%d,position=%d",max,p); }29.【程序改错】题目:fun函数的功能是:实现两个字符串的连接。
例如:输入dfdfqe和12345时,则输出dfdfqe12345.请改正程序中的错误,使它能得出正确的结果。
#include"stdio.h"main(){ char s1[80],s2[80];void scat(char s1[],char s2[]);gets(s1);gets(s2);scat(s1,s2);puts(s1); }void scat (char s1[],char s2[]){ int i=0,j=0;/**********FOUND**********/while(s1[i]= ='\0') i++; while(s1[i]!='\0')i++;/**********FOUND**********/while(s2[j]= ='\0') while(s2[i]!='\0'){/**********FOUND**********/s2[j]=s1[i]; s1[i]=s2[j];i++;j++; }/**********FOUND**********/s2[j]='\0'; s1[i]='\0';}414.【程序改错】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include "stdio.h"main(){char c;int letters=0,space=0,digit=0,others=0;printf("please input some characters\n");/**********FOUND**********/while((c=getchar())=='\n') while((c=getchar())!='\n'){/**********FOUND**********/if(c>='a'&&c<='z'&&c>='A'&&c<='Z')if(c>='a'&&c<='z'||c>='A'&&c<='Z')letters++;/**********FOUND**********/else if(c=!' ') else if(c==' ')space++;else if(c>='0'&&c<='9')digit++;elseothers++;}printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others); }364.【程序改错】题目:给定程序MODI1.C中函数fun 的功能是:计算正整数num 的各位上的数字之积。
例如,若输入:252,则输出应该是:20。
若输入:202,则输出应该是:0。
#include <stdio.h>#include <conio.h>long fun (long num)/**********FOUND**********/{long k=1 {lon k=1;do{ k*=num%10 ;/**********FOUND**********/num\=10; num/=10;/**********FOUND**********/} while(!num) ; } while(num);return (k) ; }main( ){ long n ;clrscr() ;printf("\Please enter a number:") ; scanf("%ld",&n) ;printf("\n%ld\n",fun(n)) ;getch();}433.【程序改错】题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)#include "stdio.h"main(){float peven(),podd(),dcall();float sum;int n;while (1){/**********FOUND**********/ scanf("%d",n); scanf("%d",&n); if(n>1)break; }if(n%2==0){printf("Even=");sum=dcall(peven,n); }else{printf("Odd=");sum=dcall(podd,n); }printf("%f",sum);getch();}float peven(int n){float s;int i;s=0;for(i=2;i<=n;i+=2)/**********FOUND**********/ s+=1%(float)i; s+=1/(float)i; return(s); }float podd(n)int n;{float s;int i;/**********FOUND**********/ s=1; s=0;for(i=1;i<=n;i+=2)s+=1/(float)i;return(s); }float dcall(fp,n)float (*fp)();int n;{float s;s=(*fp)(n);return(s); }354.【程序改错】题目:下列程序中,函数fun的功能是:在字符串str 中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前面的字符向后顺序移动。
例如:调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGH。
#include<stdio.h>fun(char *p){ char max,*q;int i=0;max=p[i];while(p[i]!=0){ if(max<p[i]){ max=p[i];/**********FOUND**********/p=q+i; q=p+i;}i++;}/**********FOUND**********/while(q<p) while(q>p)/**********FOUND**********/{ q=*(q-1); {*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 after moving:");puts(str);getch(); }410.【程序改错】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?main(){int i,j,k;/**********FOUND**********/printf("\n") printf("\n");/**********FOUND**********/for(i=1;i<=5;i++) for(i=1;i<5;i++)for(j=1;j<5;j++)for (k=1;k<5;k++){/**********FOUND**********/if (i!=k||i!=j||j!=k) if(i!=k&&i!=j&&j!=k)printf("%d,%d,%d\n",i,j,k); }}6.【程序改错】题目:以下程序的功能是求如下表达式:1 1 1S = 1 + —— + ——— + ...... + ———————1+2 1+2+3 1+2+3+......+n 请改正程序中的错误,使程序能得到正确的运行结果。
#include <stdio.h>main(){ int n;float fun();printf("Please input a number:");/**********FOUND**********/print("%d",n) ; scanf("%d",&n);printf("%10.6f\n",fun(n)); }/**********FOUND**********/fun(int n) float fun(int n){ int i,j,t;float s;s=0;/**********FOUND**********/while(i=1;i<=n;i++); for(i=1;i<=n;i++){ t=0;for(j=1;j<=i;j++)t=t+j;/**********FOUND**********/s=+1/t; s+=1.0/t}return s; }26.【程序改错】题目:fun函数的功能是:找出大于m的最小素数,并将其作为函数值返回。