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

更新时间:2024-04-21 04:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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;cmax)

{ max=*c;

/**********FOUND**********/ b=c-a;} *b=c-a;} return max; } main()

{ int a[N],i,max,p=0;

printf(\ for(i=0;i

/**********FOUND**********/ get(\ scanf(\ /**********FOUND**********/ m=fun(a,p,N); max=fun(a,p,N);

printf(\ 29.【程序改错】

题目:fun函数的功能是:实现两个字符串的连接。

例如:输入dfdfqe和12345时,则输出dfdfqe12345. 请改正程序中的错误,使它能得出正确的结果。 #include\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 \main() {char c;

int letters=0,space=0,digit=0,others=0; printf(\/**********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++; else

others++;}

printf(\

space,digit,others); } 364.【程序改错】 题目:给定程序MODI1.C中函数 fun 的功能是:计算正整数num的

各位上的数字之积。例如,若输入:252,则输出应该是:20。若 输入:202,则输出应该是:0。 #include #include long fun (long num)

/**********FOUND**********/ {long k=1 {lon k=1; do

{ k*=num ;

/**********FOUND**********/ num\\=10; num/=10;

/**********FOUND**********/ } while(!num) ; } while(num); return (k) ; } main( ) { long n ; clrscr() ;

printf(\printf(\getch();}

433.【程序改错】 题目:编写一个函数,输入n为偶数时,调用函数求 1/2+1/4+...+1/n,当输入n为奇数时,调用函 数1/1+1/3+...+1/n(利用指针函数) #include \main()

{float peven(),podd(),dcall(); float sum; int n; while (1)

{/**********FOUND**********/ scanf(\ scanf(\if(n>1) break; } if(n%2==0)

{printf(\sum=dcall(peven,n); } else

{printf(\sum=dcall(podd,n); } printf(\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 fun(char *p)

{ char max,*q;int i=0; max=p[i]; while(p[i]!=0) { if(max

/**********FOUND**********/ p=q+i; q=p+i; } i++;}

/**********FOUND**********/ while(qp) /**********FOUND**********/ { q=*(q-1); {*q=*(q-1); q--; } p[0]=max; } main()

{ char str[80];

printf(\

printf(\ fun(str);

printf(\ getch(); }

410.【程序改错】 题目:有1、2、3、4个数字,能组成多少个互不相同 且无重复数字的三位数?都是多少? main()

{int i,j,k;

/**********FOUND**********/ printf(\ printf(\/**********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(\6.【程序改错】 题目:以下程序的功能是求如下表达式:

1 1 1 S = 1 + —— + ——— + ...... + ———————

1+2 1+2+3 1+2+3+......+n 请改正程序中的错误,使程序能得到正确的运行结果。 #include main() { int n;

float fun();

printf(\/**********FOUND**********/

print(\ scanf(\ printf(\

/**********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的最小素数,并将其作为 函数值返回。

请改正程序中的错误,使它能得出正确的结果。 #include int fun( int m) { int i,k;

for(i=m+1;;i++)

{/**********FOUND**********/ for(k=1;k

if(i%k!=0) break; if(i%k= =0) break; /**********FOUND**********/ if(k

/**********FOUND**********/ return k; return i; }} main() { int n;

scanf(\

printf(\381.【程序改错】

题目:给定程序MODI1.C的功能是:删除w所指数组中下标 为k的元素中的值。程序中,调用了getindex、arrout 和arrdel三个函数,getindex用以输入所删元素的下标, 函数中对输入的下标进行检查,若越界,则要求重新输入, 直到正确为止。arrout用以输出数组中的数据,arrdel进 行所要求的删除操作。 #include \#include \#define NUM 10

/**********FOUND**********/

arrout ( int w, int m ) arrout ( int w[ ], int m ) { int k;

/**********FOUND**********/

for (k = 1; k < m; k++) for (k = 0; k < m; k++) /**********FOUND**********/

printf (\ printf (\printf (\

arrdel ( int *w, int n, int k ) { int i;

for ( i = k; i < n-1; i++ ) w[i] = w[i+1]; n--;

return n; }

getindex( int n ) { int i; do

{ printf(\scanf (\

} while( i < 0 || i > n-1 ); return i; } main( )

{ int n, d, a[NUM]={21,22,23,24,25,26,27,28,29,30}; n = NUM; clrscr();

printf (\d = getindex( n ); n = arrdel ( a, n, d );

printf (\ 401.【程序改错】 题目:编写函数fun其功能是:输入两个实数,按代数值由小到大输出它们,并在fun() 函数中输出。(输出的数据都保留2位小数) #include \main() {fun(); getch();}

fun()

{/**********FOUND**********/ float t float t; float a,b;

scanf(\

/**********FOUND**********/ if(ab) {t=a;a=b;b=t;}

/**********FOUND**********/

printf(\ printf(\ } 350.【程序改错】

题目:请编写一个函数 int fun(int x),它的功能

是:判断整数x是否是同构数。若是同购数, 函数返回1;否则返回0。

所谓“同构数”是指这个数出现在它的平方数 的右边。例如:输入整数25,25的平方数是 625,25是625中右侧的数,所以25是同构数。 x的值由主函数从键盘读入,要求不大于1000。 #include \int fun(int x)

{/**********FOUND**********/ int k int k; /**********FOUND**********/ k=x; k=x*x; /**********FOUND**********/

if((k==x)&&(k0==x)&&(k00==x)) if((k==x)||(k0==x)||”(k00==x)) return 1; else

return 0; } main() { int x,y; clrscr();

printf(\

scanf(\

if(x>1000){printf(\ y=fun(x);

if(y) printf(\ else printf(\ getch();}

355.【程序改错】

下列程序中,函数fun的功能是:在字符串str中找出ASCII码值最 小的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序 移动。

例如:调用fun函数之前给字符串输入:eBCDAFGH, 调用后字符串中的内容为:AeBCDFGH。 --------------------------------------------------------

注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include #include fun(char *p)

{ char min,*q=p;int i=0; min=p[i]; while(p[i]!=0) { if(min>p[i]) { min=p[i];

/**********FOUND**********/ p=p+i; q=p+i; } i++;}

/**********FOUND**********/ while(qp)

/**********FOUND**********/ {*q=(q-1); {*q=*(q-1); q--; } p[0]=min; } main()

{ char str[80];

printf(\

printf(\ fun(str);

printf(\ } 392.【程序改错】

题目:编写程序, 求矩阵(3行3列)与5的乘积 例如, 输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 500 1000 1500 2000 2500 3000 3500 4000 4500 #include \

int fun(int array[3][3])

{/**********FOUND**********/ int i;j; int i,j; /**********FOUND**********/ for(i=1; i < 3; i++) for(i=0;i<3;i++) for(j=0; j < 3; j++)

/**********FOUND**********/

array[i][j]=array[i][j]/5; arrau[i][j]=array[i][j]*5} main()

{ int i,j;

int array[3][3]={{100,200,300}, {400,500,600}, {700,800,900}}; clrscr() ;

for (i=0; i < 3; i++) { for (j=0; j < 3; j++) printf(\ printf(\ } fun(array);

printf(\ for (i=0; i < 3; i++) { for (j=0; j < 3; j++) printf(\ printf(\

getch(); } 10.【程序改错】

题目:将若干学生的档案存放在一个文件中,并显示其内容。 struct student { int num; char name[10]; int age; };

struct student stu[3]={{001,\Mei\Hua\Hao\

#include main()

/**********FOUND**********/

{struct student p; {struct student *p; /**********FOUND**********/ cfile fp; FILE *fp int i;

if((fp=fopen(\ { printf(\ return; }

/**********FOUND**********/

for(*p=stu;p

fp=fopen(\

printf(\ Name age\\n\ for(i=1;i<=3;i++)

{ fread(p,sizeof(struct student),1,fp); /**********FOUND**********/

scanf(\

printf(\ } fclose(fp); } 20.【程序改错】

题目:已知一个数列从第0项开始的前三项分别为0、0、1,以 后的各项都是其相邻的前三项的和。下列给定程序中, 函数fun的功能是:计算并输出该数列的前n项的平方根 之和sum,n的值通过形参传入。

例如,当n=10时,程序的输出结果应为23.197745。 请更改程序中的错误,使它能得出正确的结果。 #include \

/**********FOUND**********/ fun (int n) double fun (int n) { double sum,s0,s1,s2,s; int k;

/**********FOUND**********/ sum=0.0; sum=1.0; if(n<=2) sum=0.0; s0=0.0; s1=0.0;

/**********FOUND**********/ s2=0.0; s2=1.0;

/**********FOUND**********/

for(k=4;k>n;k++) for(k=4;k<=n;k++) { s=s0+s1+s2; sum+=sqrt(s);

s0=s1;s1=s2;s2=s; } return sum; } main() { int n;

scanf(\

printf(\}

387.【程序改错】

题目:给定程序MODI1.C中函数 fun 的功能是:

统计字符串中各元音字母(即:A、E、I、 O、U)的个数。注意:字母不分大、小写。 例如:若输入:THIs is a boot,则输 出应该是:1、0、2、2、0。 #include #include

fun ( char *s, int num[5] ) { int k, i=5;

for ( k = 0; k

/**********FOUND**********/ num[i]=0; num[k]=0; for (; *s; s++) { i = -1;

/**********FOUND**********/ switch ( s ) switch[*s] { case 'a': case 'A': {i=0; break;} case 'e': case 'E': {i=1; break;} case 'i': case 'I': {i=2; break;} case 'o': case 'O': {i=3; break;} case 'u': case 'U': {i=4; break;} }

/**********FOUND**********/ if (i < 0) if(i>=0) num[i]++; }} main( )

{ char s1[81]; int num1[5], i; clrscr();

printf( \fun ( s1, num1 );

for ( i=0; i < 5; i++ ) printf (\ 105.【程序改错】

给定程序MODI1.C中函数fun的功能是: 将s所指字符串中的字母 转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不 变。

#include #include #include void fun (char *s)

{/***********FOUND***********/ while(*s!=\ while(*s!=’ \\0’)

{ if(*s>='A' && *s <= 'Z' || *s >= 'a' && *s<='z') { if(*s=='Z') *s='A'; else if(*s=='z') *s='a';

/***********FOUND***********/ else s += 1; else *s += 1; }

/***********FOUND***********/ s++ s++;}} main()

{ char s[80]; clrscr();

printf(\printf(\fun ( s );

printf (\getch(); getch();}

376.【程序改错】

题目:给定程序MODI1.C中函数 fun 的功能是: 根据整型形参 m,计算某一数据项的值。 y = 1/(100*100)+1/(200*200)+ 1/(300*300) + …… + 1/(m*m)

例如,若m = 2000,则应输出: 0.000160。 #include #include

/**********FOUND**********/ fun ( int m ) double fun ( int m ) { double y = 0, d ; int i ;

/**********FOUND**********/

for( i = 100, i <= m, i += 100 ) for( i = 100; i <= m;i += 100 ) { d = (double)i * (double)i ;

/**********FOUND**********/ y += 1.0 \\ d ; y += 1.0 / d ; } return( y ) ; } main( )

{ int n = 2000 ; clrscr( ) ;

printf( \351.【程序改错】

题目:编写一个函数,该函数可以统计一个长度为3 的字符串在另一个字符串中出现的次数。例 如,假定输入的字符串为: asdasasdfgasdaszx67asdmklo, 字符串为:asd,则应输出n=4。 #include #include #include

int fun(char *str,char *substr)

{/**********FOUND**********/ int i,n=0 int i,n=0;

/**********FOUND**********/

for(i=0;i<=strlen(str);i++) for(i=0;i<=strlen(str)-3;i++)

if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2])) /**********FOUND**********/ ++i; n++ return n; } main()

{ char str[81],substr[4]; int n; clrscr();

printf(\输入主字符串: \ gets(str);

printf(\输入子字符串: \ gets(substr); puts(str); puts(substr); n=fun(str,substr); printf(\getch(); }

本文来源:https://www.bwwdw.com/article/9a5p.html

Top