ccu-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语言程序改错题及答案
#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语言测试题-程序改错
/***********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语言程序改错题练习,希望能给大家带来帮助!
在考生文件夹下,给定程序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语言期末考试练习题程序改错(带详解答案)
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语言程序改错讲解一、程序改错共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语⾔程序改错答案题⽬:下题是⼀段有关结构体变量传递的程序.答案: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语言改错题考试题库
--------------------------------------------------------
功能:在一个一维整型数组中找出其中最大的数及其下标。
------------------------------------------------------*/
#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语言期末考试复习资料-程序改错部分试题及答案
/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求如下表达式: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语言程序改错题
【程序改错】功能: 根据整型形参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语言题库(程序改错、填空、设计)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(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语言程序改错题及答案
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语言机试程序改错题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语言程序改错题汇总
程序改错题汇总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语言程序改错题
程序改错-------------------------------------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语言程序改错题及答案
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语言程序改错题
第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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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项之和。