ccu-C语言-练习一程序改错题

合集下载

C语言程序改错

C语言程序改错

C语言程序改错〖第1题〗『程序改错』(5分)(题号:422)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。

------------------------------------------------------*/#include"stdio.h"main( ){/**********FOUND**********/long a,b,c,d,e,x,scanf("%ld",&x);a=x/10000;/**********FOUND**********/b=x/10000/1000;c=x%1000/100;d=x%100/10;e=x%10;/**********FOUND**********/if (a==0)printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);else if (d!=0) printf("there are 2, %ld %ld\n",e,d);else if (e!=0) printf(" there are 1,%ld\n",e);getch();}答案:1). long a,b,c,d,e,x;2). b=x%10000/1000; 或 b=x/1000%10;3). if (a!=0) 或 if (!a)〖第2题〗『程序改错』(5分)(题号:411)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。

C语言程序改错题及答案

C语言程序改错题及答案
#include <stdio.h>
#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语言测试题-程序改错

C语言测试题-程序改错
------------------------------------------------------*/
/***********FOUND***********/
sort(str[N]);
for(i=0;i<N;i++)
printf("%c",str[i]);
printf("\n");
}
sort(char str[N])
{
int i,j; char t;
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));
功能:编写程序, 求矩阵(3行3列)与5的乘积
例如:输入下面的矩阵:
100 200 300
400 500 600
700 800 900
程序输出:
500 1000 1500
2000 2500 3000
}
for(p=str;*p;p++)
{
for(q=p;*p==*q;q++);
strcpy(p+1,q);
}
printf("结果字符串:%s\n\n",str);
getch();
}
答案:
1). for(p=str;*p;p++)

C语言程序改错题练习

C语言程序改错题练习
已付费成功了还是复制不了有可能是电脑的浏览器兼容性问题或者手机机型不支持的问题
C语言程序改错题练习
C语言程序改错题练习
天才就是百分之九十九的汗水加百分之一的灵感。以下是店铺为大家搜索整理的.C语言程序改错题练习,希望能给大家带来帮助!
在考生文件夹下,给定程序MODI.C的功能是:
求一维数组a中所有元素的平均值,结果保留两位小数。
例如,当一维数组a中的元素为:10,4,2,7,3,12,5,34,5,9
程序的输出应为:The aver is: 9.10 。
#include
#include
void main()
{
int a[10]={10,4,2,7,3,12,5,34,5,9},i;
float aver,s;
/************found************/
int aver,s;
/************found************/
s=a[0];
s = 0;
for ( i=1; i<10; i++)
s += a[i];
aver = s / i;
f\n", aver);
}

大学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语言程序改错讲解

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 ( \ scanf (\ y = fun (&a, &b);printf (\}第2题(10.0分)题号:438 难度:中第2章/*------------------------------------------------ 【程序改错】--------------------------------------------------功能:编写函数fun,求两个整数的最小公倍数,然后用主函数main()调用这个函数并输出结果,两个整数由键盘输入。

------------------------------------------------*/#includeint fun(int m,int n) { int i;/**********FOUND**********/ if (m=n) //if (mlong sum(int n) {/**********FOUND**********/int i,j // int i,j;long t,s=0;/**********FOUND**********/for(i=2;i #includelong fun (long num) {/**********FOUND**********/long k=1 // long k=1; do {k*=num ;/**********FOUND**********/num\\=10; // num/=10;或num=num/10;/**********FOUND**********/}while(!num) ; // } while(num) ;或 }while(num!=0); return (k) ; }main( ) {long n ;printf(\ printf(\}第5题(10.0分)题号:413 难度:易第2章/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。

C语言程序改错答案

C语言程序改错答案

C语⾔程序改错答案题⽬:下题是⼀段有关结构体变量传递的程序.答案:1). a.c='a';2). printf("%d,%c",a.x,a.c);3). b.c='y';题⽬:下列程序中,函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后⾯。

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

答案:1). for(i=0;i2). t[sl+i]=s[sl-i-1];3). t[sl+i]='\0';题⽬:编写函数fun其功能是在键盘上输⼊⼀个3⾏3列矩阵的各个元素的值(值为整数),然后输出矩阵第⼀⾏与第三⾏元素之积,并在fun()函数中输出。

答案:1). sum=1;2). for(i=0;i<3;i+=2) 或 for(i=0;i<3;i=i+2) 或 for(i=0;i<3;i++,i++)3). sum=sum*a[i][j]; 或 sum*=a[i][j];题⽬:函数fun的功能是:⽤下⾯的和式求圆周率的近似值。

直到最后⼀项的绝对值⼩于等于0.0001。

π 1 1 1— = 1 - — + — - — + ...2 3 5 7请改正程序中的错误,使它能得出正确的结果。

答案:1). #include "math.h"2). float s=0,t=1,p=1; 或 float s=0,p=1,t=1; 或 float p=1,s=0,t=1; 或 float p=1,t=1,s=0; 或 float t=1,p=1,s=0; 或 float t=1,s=0,p=1;3). while(fabs(t)>1e-4) 或 while(0.00010.0001)4). printf("pi=%f\n",★s★*★4★);题⽬:给定程序MODI1.C中函数fun的功能是:将长整型数中每⼀位上为奇数的数依次取出,构成⼀个新数放在t中。

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语言期末考试复习资料-程序改错部分试题及答案

/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求如下表达式:1 1 1S = 1 + —— + ——— + ...... + ———————1+2 1+2+3 1+2+3+......+n ------------------------------------------------------*/#include <stdio.h>main(){int n;double fun();printf("Please input a number:");/**********FOUND**********/print("%d",n) ;printf("%10.6f\n",fun(n));}/**********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********FOUND**********/while(i=1;i<=n;i++);{t=0;for(j=1;j<=i;j++)t=t+j;/**********FOUND**********/=s+1/t;}return s;}/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:判断m是否为素数,若是返回1,否则返回0。

------------------------------------------------------*/#include <stdio.h>/**********FOUND**********/void fun( int n){int i,k=1;if(m<=1) k=0;/**********FOUND**********/for(i=1;i<m;i++)/**********FOUND**********/if(m%i=0) k=0;/**********FOUND**********/return m;}void main(){int m,k=0;for(m=1;m<100;m++)if(fun(m)==1){printf("%4d",m);k++;if(k%5==0) printf("\n");}}/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:用下面的和式求圆周率的近似值。

c语言程序改错题

c语言程序改错题

【程序改错】功能: 根据整型形参m的值, 计算如下公式的值。

1 1 1.....1.—..—......——2x2 3x3 mxm例如: 若m=5, 则应输出: 0.536389------------------------------------------------------*/#include <stdio.h>double fun(int m){double y=1.0;int i;/**********FOUND**********/for(i=2;i<m;i--) for(i=2;i<=m;i++) /**********FOUND**********/y-=1/(i*i); y-=1.0/(i*i)/**********FOUND**********/return m; return y}main(){int n=5;printf("\nthe result is %lf\n",fun(n));}【程序设计】---------------------------------------------------------题目: 编程求所有4位数, 这些数具有以下特点: 这数本身是平方数, 且其低2位和高2位所组成的2个2位数也是平方数。

要求: 使用程序中定义的变量-------------------------------------------------------*/#include <stdio.h>#include <math.h>main(){int qw,bw,sw,gw; // qw千位数bw百位数sw十位数gw个位数int a,b; //a 高两位低两数int i; //循环变量/**********Program**********/for(i=1000;i<10000;i++){qw=i/1000;bw=i/100%10;sw=i/10%10;gw=i%10;1a=qw*10+bw;b=sw*10+gw;if(sqrt(i)==(int)sqrt(i)&&sqrt(a)==(int)sqrt(a)&&sqrt(b)==(int)sqrt(b)) printf(“%d\n”,i);}/********** End **********/}【程序设计】功能: 从键盘为一维整型数组输入10个整数, 调用fun 函数找出其中最小的数, 并在main函数中输出。

C语言题库(程序改错、填空、设计)(2021年整理精品文档)

C语言题库(程序改错、填空、设计)(2021年整理精品文档)

C语言题库(程序改错、填空、设计)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(C语言题库(程序改错、填空、设计))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为C语言题库(程序改错、填空、设计)的全部内容。

/*——-—-—-—————----———---————-——-——-——----——---——-—【程序设计】--—-—--------——-———-—-—-——-——--—-—-———-——-—————---功能:输入n个数,并求出小于平均值的数的个数.——-————-—--—--———-—---—---—-———-—----———---————-*/#include "stdio.h”int average_num(int a[],int n){/*********Begin**********//********** End **********/}main(){int n,a[100],i,num;void TestFunc();scanf(”%d”,&n);for(i=0;i<n;i++)scanf("%d”,&a[i]);num=average_num(a,n);printf(”the num is:%d\n",num);TestFunc();}void TestFunc(){FILE *IN,*OUT;int n;int i[10];int o;IN=fopen("in.dat","r”);if(IN==NULL){printf(”Read File Error");}OUT=fopen(”out。

C语言程序改错题及答案

C语言程序改错题及答案
}
printf("%d\n",s);
}
4、
#include<stdio.h>
void itoa(long i,char *s)
{
if(i==0)
return;
/****** 1 ******/
*s = '1'+i%10;//*s = '0'+i%10;
itoa(i/10,s-1);
}
void main()
printf("\nInput the first string:");
scanf("%s",s1);
printf("\nInput the second string:");
scanf("%s",s2);
while (s1[i] !='\0')
/****** 1 ******/
i+1;// i=i+1;
/***** 2 *****/
} while(fabs(t)<eps)//while(fabs(t)>=eps) ;
printf("%f\n",s);
}
9、
#include <stdio.h>
void main()
{ float x,max,min; int i;
/******** 1 *******/
t[sl+i]=s[sl-i];
/********2********/
t[sl]="\0";//t[sl+s1]=’\0’;
}
void main()

C语言笔试--程序改错题

C语言笔试--程序改错题

C语言机试程序改错题gc22.c程序是输入一个字符串, 将此字符串中最长的单词输出,程序在注释行附近有两个错误,请试调试改正,但调试改正中不得增删语句。

int alph(char c){if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))return(1);elsereturn(0); /* find 1 */}int longest(char str) ////////////// int longest(char *str){int len=0,i,length=0,flag=1,point,place;for(i=0;i<=strlen(str);i++)if(alph(str[i]))if(flag){flag=0;point=i;}elselen++;else /* Find 2 */{flag=0; /////////////flag=1;if(len>length){ length=len;place=point;len=0; }}return(place);}main( ){int i;char line[100];printf("Enter string\n");gets(line);printf("the longest is:");for(i=longest(line);alph(line[i]);i++)printf("%c",line[i]);printf("\n");}2下列程序是建立一个包含学生有关数据的单向链表。

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

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

#define NULL 0struct stud{long num;char name[10];float score;struct stud *next;};/* …………… comment …………… */int n;struct stud create() ////////struct stud *create(void){struct stud *head,*p1,*p2;n=0;p1=p2=(struct stud *)malloc(sizeof(struct stud));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;else p2->next=p1;p1=(struct stud *)malloc(size(struct stud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);}p2->next=NULL;return(head);}gc56.c程序用于将字符串中的小写字母转换为大写字母,程序中有两处错误,请调试改正之,但不得增删语句.#include<stdio.h>void main(void){char s[255];int i;scanf("%s",s);for (i=0;s[i];i++)if(s[i]>='b' && s[i]<='z') //////s[i]>='a' && s[i]<='z's[i] = s[i] +'a' + 'A'; //////s[i] = s[i] -'a' + 'A'printf("%s",s);}gc57.c的功能是互换给定数组中的最大数和最小数。

C语言程序改错题汇总

C语言程序改错题汇总

程序改错题汇总1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.2、分别统计字符串中大写字母和小写字母的个数。

3、求1到10的阶乘的和。

4、判断m是否为素数,若是返回1,否则返回0。

5、用选择法对数组中的n个元素按从小到大的顺序进行排序。

6、求一个3行4列矩阵的外框的元素值之和。

7、以下程序把两个数按由大到小的顺序输出来。

8、求1到20的阶乘的和。

9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。

(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。

下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。

11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?12、编写函数fun计算下列分段函数的值:x*x+x x<0且x≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*x+x-1 其它13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。

14、实现交换两个整数的值。

15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。

16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。

17、计算数组元素中值为正数的平均值(不包括0)。

18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。

在此处,要求t1和t2所指字符串的长度相同。

19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。

20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。

c语言程序改错题

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语言程序改错题及答案

C语言程序改错题及答案
if(x>max) max=x;
if(x<min) min=x;
}
printf("%f,%f\n",max,min);
}
10、.在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。
该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。
for(i=0;i<sl;i++)
t[i]=s[i];
for(i=0;i<sl;i++)
/********1********///t[sl+i]=s[s1-1-i];
t[sl+i]=s[sl-i];
/********2********/
t[sl]="\0";//t[sl+s1]=’\0’;
}
void main()
/***** 2 *****/
for(i=1;i<strlen(str);i++)//i=0
if(str[i]>='a'&& str[i]<='z') str[i]=str[i]-32 ;
puts(str);
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str;// char*str

C语言程序改错题

C语言程序改错题

第1题【程序改错】【2 】功效:先将在字符串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个随机整数从小到大排序.例如:若输入整数7,则应输出:3 10 17 28 32 36 47.------------------------------------------------------*/#include "conio.h"#include <stdio.h>sortpb ( int n, int *a ){/**********FOUND**********/int i, j, p, tfor ( j = 0; j < n-1 ; j++ ){p = j;for ( i = j + 1; i < n ; i ++ )/**********FOUND**********/if ( a[p] > a[j] ) p = i;/**********FOUND**********/if ( p == j ){t = a[j];a[j] = a[p];a[p] = t;}}}double rnd ( ){static t = 29, c = 217, m = 1024, r = 0; r =( r*t + c )%m; return( ( double )r/m ); }getarr( int n, int *x ){int i;for( i = 1; i <= n; i++, x++ ) *x = ( int )( 50*rnd() );}putarr( int n, int *z ){int i;for( i = 1; i <= n; i++, z++ ){printf( "%4d", *z );if ( !( i%10 ) ) printf( "\n" );}printf("\n");}main(){int aa[20], n;printf( "\nPlease enter an integer number between 5 and 20: " ); scanf( "%d", &n );getarr( n, aa );printf( "\n\nBefore sorting %d numbers:\n", n ); putarr( n, aa ); sortpb( n, aa );printf( "\nAfter sorting %d numbers:\n", n ); putarr( n, aa );}答案:1). int i, j, p, t;2). if ( a[p] > a[i] ) p = i;3). if ( p != j )第4题【程序改错】--------------------------------------------------------功效:以下程序能求出1*1+2*2+......+n*n<=1000中知足前提的最大的n.------------------------------------------------------*/#include <stdio.h>#include "string.h"main(){int n,s;/**********FOUND**********/s==n=0;/**********FOUND**********/while(s>1000){++n;s+=n*n;}/**********FOUND**********/printf("n=%d\n",&n-1);}答案:1). s=n=0;2). while(s<=1000)3). printf("n=%d\n",n-1);第5题【程序改错】--------------------------------------------------------功效:求出a所指数组中最大数和次最大数(划定最大数和次最大数不在a[0]和a[1]中),依次和a[0].a[1]中的数对调.例如:数组华夏有的数:7.10.12.0.3.6.9.11.5.8,输出的成果为:12.11.7.0.3.6.9.10.5.8.------------------------------------------------------*/#include <conio.h>#include <stdio.h>#define N 20void fun ( int * a, int n ){int k,m1,m2,max1,max2,t;max1=max2= -32768; m1=m2=0;for ( k = 0; k < n; k++ )if ( a[k]>max1 ){max2 = max1; m2 = m1;max1 = a[k]; m1 = k;}/**********FOUND**********/else if( a[k]>max1 ){max2 = a[k]; m2 = k; }/**********FOUND**********/t = a[0];a[m1]=a[0];a[m1] = t;/**********FOUND**********/t = a[1];a[m2]=a[1];a[m2] = t;}main( ){int b[N]={7,10,12,0,3,6,9,11,5,8}, n=10, i; for ( i = 0; i<n; i++)printf("%d ",b[i]);printf("\n");fun (b, n);for ( i=0; i<n; i++ )printf("%d ",b[i]);printf("\n");}答案:1). else if( a[k]>max2 )2). t = a[0]; a[0]=a[m1]; a[m1] = t;3). t = a[1]; a[1]=a[m2]; a[m2] = t;第6题【程序改错】--------------------------------------------------------功效:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子).例如:若输入整数:2310,则应输出:2.3.5.7.11.请纠正程序中的语法错误,使程序能得出准确的成果.------------------------------------------------------*/#include "conio.h"#include <stdio.h>/**********FOUND**********/isPrime(integer n ){int i, m;m = 1;for ( i = 2; i < n; i++ )/**********FOUND**********/if ( n%i ){m = 0;break;}/**********FOUND**********/return n ;}main( ){int j, k;printf( "\nPlease enter an integer number between 2 and 10000: " ); scanf( "%d", &k );printf( "\n\nThe prime factor(s) of %d is( are ):", k );for( j = 2; j <= k; j++ )if((!( k%j))&&( IsPrime(j))) printf( "\n %4d", j );printf("\n");}答案:1). IsPrime(int n)2). if(!(n%i))3). return m ;第7 题【程序改错】--------------------------------------------------------功效:为一维数组输入10个整数;将个中最小的数与第一个数对调,将最大的数与最后一个数对调,输出数组元素.------------------------------------------------------*/#include <stdio.h>main(){int a[10];void input();void output();void max_min();input(a,10);max_min(a,10);output(a,10);}void input(int *arr,int n){int *p,i;p=arr;printf("please enter 10 integers:\n"); for(i=0;i<n;i++)/**********FOUND**********/ scanf("%d",p);}void max_min(int *arr,int n){int *min,*max,*p,t;min=max=arr;for(p=arr+1;p<arr+n;p++)/**********FOUND**********/ if(*p<*max)max=p;else if(*p<*min) min=p;t=*arr;*arr=*min;*min=t;/**********FOUND**********/ if(max=arr) max=min;t=*(arr+n-1);*(arr+n-1)=*max;*max=t;}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");}答案:1). scanf("%d",p ++); 或 scanf("%d",arr[i]); 或 scanf("%d",p+i); 或 scanf("%d",arr+i);2). if(*p>*max) 或 if(*max<*p)3). if( max == arr )4). for(i=0;i<n;i++) 或 for(i=0;n>i;i++) 或 for(p=arr;p<arr+n;) 或 for(i=0;i<=n-1;i++) 或for(i=0;n-1>=i;i++) 或 for(p=arr;p<=arr+n-1;) 或 for(p=arr;arr+n-1>=p;)第8题【程序改错】--------------------------------------------------------功效:求出在字符串中最后一次消失的子字符串的地址,经由过程函数值返回,在主函数中输出从此地址开端的字符串;若未找到,则函数值为NULL.例如:当字符串中的内容为:"abcdabfabcdx",t中的内容为:"ab"时,输出成果应是:abcdx.当字符串中的内容为: "abcdabfabcdx",t中的内容为:"abd"时,则程序输出未找到信息:not found!.------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>char * fun (char *s, char *t ){char *p , *r, *a;/**********FOUND**********/a == NULL;while ( *s ){p = s;r = t;while ( *r )/**********FOUND**********/if ( r == p ){r++;p++;}elsebreak;/**********FOUND**********/if ( *r ='\0' ) a = s;s++;}return a ;}main(){char s[100], t[100], *p;printf("\nPlease enter string S :"); scanf("%s", s );printf("\nPlease enter substring t :"); scanf("%s", t );p = fun( s, t );if ( p )printf("\nThe result is : %s\n", p);elseprintf("\nNot found !\n" );}答案:1). a = NULL;2). if ( *r == *p )3). if ( *r == '\0' ) a = s;第9题【程序改错】--------------------------------------------------------功效:从m个学生的成绩中统计出高于和等于平均分的学生人数,此人数由函数值返回.平均分经由过程形参传回,输入学生成绩时,用-1停止输入,由程序主动统计学生人数.例如:若输入 8 逻辑学生的成绩,输入情势如下: 80.5 60 72 90.5 98 51.5 88 64 -1成果为:The number of students :4Ave = 75.56.------------------------------------------------------*/#include <conio.h>#include <stdio.h>#define N 20int fun ( float *s, int n, float *aver ){float av, t ; int count , i;count = 0; t=0.0;for ( i = 0; i < n; i++ ) t += s [ i ];av = t / n; printf( "ave =%f\n",av );for ( i = 0; i < n; i++ )/**********FOUND**********/if ( s[ i ] < av ) count++;/**********FOUND**********/aver = av;/**********FOUND**********/return count}main(){float a, s[30], aver;int m = 0;printf ( "\nPlease enter marks ( -1 to end):\n ");scanf("%f",&a );while( a>0 ){s[m] = a;m++;scanf ( "%f", &a );}printf( "\nThe number of students : %d\n" , fun ( s, m, &aver ));printf( "Ave = %6.2f\n",aver );}答案:1). if ( s[ i ] >= av ) count++;2). *aver = av;3). return count;第10题【程序改错】--------------------------------------------------------功效:依据以下公式求π值,并作为函数值返回.例如:给指定精度的变量eps输入0.0005时,应该输出Pi=3.140578.π 1 1 2 1 2 3 1 2 3 4— = 1 + — + — x — + — x — x — + — x — x — x — + ...2 3 3 5 3 5 7 3 5 7 9------------------------------------------------------*/ #include <stdio.h>double fun(double eps){double s,t;int n=1;s=0.0;t=1;/**********FOUND**********/while(t<=eps){s+=t;/**********FOUND**********/t=n/(2*n+1)*t;n++;}/**********FOUND**********/return s;}main(){double x;scanf("%lf",&x);printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));}答案:1). while(t>eps) 或 while(eps<t) 或 while(t>=eps) 或 while(eps<=t) 或 while (t>eps) 或 while (eps<t) 或 while (t>=eps) 或 while (eps<=t)2). t=t*n/(2*n+1); 或 t=1.0*n/(2*n+1)*t; 或 t=n/(2*n+1.0)*t; 或 t=n/(2.0*n+1)*t; 或t=n/(2.0*n+1.0)*t; 或 t=1.0*n/(2.0*n+1.0)*t;3). return 2 * s ; 或 return (2*s); 或 return(2*s); 或 return (s*2); 或 return(s*2);第11题【程序改错】--------------------------------------------------------功效:实现两个字符串的衔接.例如:输入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++;/**********FOUND**********/while(s2[j]= ='\0'){/**********FOUND**********/s2[j]=s1[i];i++;j++;}/**********FOUND**********/s2[j]='\0';}答案:1). while( s1[i] != '\0' ) 或 while(s1[i]) 或 while( s1[i] != 0 )2). while( s2[j] != '\0' ) 或 while(s2[j]) 或 while( s2[j] != 0 )3). s1[i]=s2[j];4). s1[i]='\0'; 或 *(s1+i)='\0'; 或 s1[i]=0;第12题【程序改错】--------------------------------------------------------功效:求二分之一的圆面积,函数经由过程形参得到圆的半径,函数返回二分之一的圆面积.例如:输入圆的半径值:19.527 输出为:s = 598.950017.------------------------------------------------------*/#include <stdio.h>#include <conio.h>/**********FOUND**********/double fun( r){double s;/**********FOUND**********/s=1/2*3.14159* r * r;/**********FOUND**********/return r;}main(){float x;printf ( "Enter x: ");scanf ( "%f", &x );printf (" s = %f\n ", fun ( x ) );}答案:1). float fun(float r) 或 double fun(float r) 或 double fun(double r)2). s=1.0/2*3.14159* r * r;3). return s;第13题【程序改错】--------------------------------------------------------功效:应用二维数组输出如图所示的图形. *******************************------------------------------------------------------*/ #include <stdio.h>#include <conio.h>/**********FOUND**********/#define N= 7main(){char a[N][N];int i,j,z;for(i=0;i<N;i++)for(j=0;j<N;j++)/**********FOUND**********/a[i][j]=;z=0;for(i=0;i<(N+1)/2;i++){for(j=z;j<N-z;j++)a[i][j]='*';z=z+1;}/**********FOUND**********/ z=0;for(i=(N+1)/2;i<N;i++){z=z-1;for(j=z;j<N-z;j++)a[i][j]='*';}for(i=0;i<N;i++){for(j=0;j<N;j++)/**********FOUND**********/ printf("%d",a[i][j]);printf("\n");}}答案:1). #define N 72). a[i][j]=' ';3). z=z-1; 或 z--; 或 z=-1+z;4). printf("%c",a[i][j]);第14题【程序改错】--------------------------------------------------------功效:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*.------------------------------------------------------*/#include <stdio.h>main(){int i,a,n=1;/**********FOUND**********/while(n<7){do{scanf("%d",&a);}/**********FOUND**********/while(a<1&&a>50);/**********FOUND**********/for(i=0;i<=a;i++)printf("*");printf("\n");n++;}}答案:1). while(n<=7) 或 while(n<8)2). while(a<1||a>50); 或 while(a>50||a<1);3). for(i=1;i<=a;i++)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1题/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:判断m是否为素数,若是返回1,否则返回0。

------------------------------------------------------*/#include <stdio.h>/**********FOUND**********/void fun( int n){int i,k=1;if(m<=1) k=0;/**********FOUND**********/for(i=1;i<m;i++)/**********FOUND**********/if(m%i=0) k=0;/**********FOUND**********/return m;}void main(){int m,k=0;for(m=1;m<100;m++)if(fun(m)==1){printf("%4d",m);k++;if(k%5==0) printf("\n");}}第2题/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:求1到10的阶乘的和。

------------------------------------------------------*/#include <stdio.h>main(){int i;float s=0;float fac(int n);/**********FOUND**********/for(i=1;i<10;i++)/**********FOUND**********/s=fac(i);printf("%f\n",s);}float fac(int n){/**********FOUND**********/int y=1;int i;for(i=1 ;i<=n;i++)y=y*i;/**********FOUND**********/return;}第3题/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:求1到20的阶乘的和。

------------------------------------------------------*/#include <stdio.h>fun(){int n,j;float s=0.0,t=1.0;for(n=1;n<=20;n++){/**********FOUND**********/s=1;for(j=1;j<=n;j++)/**********FOUND**********/t=t*n;/**********FOUND**********/s+t=s;}/**********FOUND**********/printf("jiecheng=%d\n",s);}main(){fun();}第4题/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:实现交换两个整数的值。

例如:给a和b分别输入3和6 ,输出为a=6 b=3------------------------------------------------------*/#include <stdio.h>/**********FOUND**********/void fun (int a, b){int t;/**********FOUND**********/t=a;/**********FOUND**********/a=b;/**********FOUND**********/b=t;}main(){int a,b;printf("enter a,b:");scanf("%d%d",&a,&b);fun(&a,&b);printf("a=%d b=%d\n",a,b);}第5题/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。

max代表最高分,min代表最低分,avg代表平均分。

------------------------------------------------------*/#include <stdio.h>main( ){int i;/***********FOUND***********/float a[8],min,max,avg;printf("input 10 score:");for(i=0;i<=9;i++){printf("input a score of student:");/***********FOUND***********/scanf("%f",a);}/***********FOUND***********/max=min=avg=a[1];for(i=1;i<=9;i++){/***********FOUND***********/if(min<a[i])min=a[i];if(max<a[i])max=a[i];avg=avg+a[i];}avg=avg/10;printf("max:%f\nmin:%f\navg:%f\n",max,min,avg);}第6题/*------------------------------------------------------- 【程序改错】---------------------------------------------------------题目:下列给定程序中,函数fun的功能是:实现两个整数的交换。

例如:给a和b分别输入60和65,输出为:a=65 b=60。

-------------------------------------------------------*/#include <stdio.h>#include <conio.h>#include <stdlib.h>/***********FOUND***********/void fun(int a,b){int t;/***********FOUND***********/t=b;b=a;a=t;}void main(){int a,b;system("CLS");printf("Enter a, b: ");scanf("%d%d",&a,&b);fun(&a, &b);printf("a=%d b=%d\n ", a,b);}第7题/*-------------------------------------------------------【程序改错】---------------------------------------------------------题目:下列给定程序中,函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形。

若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回1;若不能,则返回0。

-------------------------------------------------------*/#include <stdio.h>#include <math.h>int fun(int a,int b,int c){if(a+b>c&&b+c>a&&a+c>b){if(a==b&&b==c)/***********FOUND***********/return 1;else if(a==b||b==c||a==c)return 2;/***********FOUND***********/else return 3;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape=fun(a,b,c);printf("\n\nThe shape :%d\n",shape);}第8题/*-------------------------------------------------------【程序改错】---------------------------------------------------------题目:下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。

t=1/2-1/3-…-1/m例如:若输入5,则应输出-0.283333。

-------------------------------------------------------*/#include <stdlib.h>#include <conio.h>#include <stdio.h>double fun(int m){double t=1.0;int i;for(i=2;i<=m;i++)/***********FOUND***********/t=1.0-1/i;/***********FOUND***********/return;}void main(){int m;system("CLS");printf("\nPlease enter 1 integer numbers:\n");scanf("%d",&m);printf("\n\nThe result is %1f\n",fun(m));}第9题/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:输入10个数,要求输出这10个数的平均值------------------------------------------------------*/#include <stdio.h>double average(double array[10]){int i;double aver,sum=array[0];/***********FOUND***********/for(i=0;i<10;i++)sum=sum+array[i];aver=sum/10.0;return(aver);}main( ){/***********FOUND***********/int score[10],aver ;int i;printf("input 10 scores:\n");for(i=0;i<10;i++)/***********FOUND***********/scanf("%f", score);printf("\n");/***********FOUND***********/aver=average(score[10]);printf("average score is %5.2f",aver);}第10题/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:求出以下分数序列的前n项之和。

相关文档
最新文档