程序改错
一、程序改错 1. 功能:用起泡法对10个整数从小到大排序
>> void sort(int
>> for(j=0;j<n-1-i;j++) if(x[j]>x[j+1] 2. 功能:求如下表达式 1 1 1 S = 1 + —— + ——— + ...... + ———————
1+2 1+2+3 1+2+3+......+n
>> s=s+1.0/t >> char fun( char *c) >> double fun(int n) >> scanf("%d",&n)
4. 功能:将一个字符串中的大写字母转换成小写字母 >> char >> return *c >> char >> for(i=1;i<=n;i++)
5. 功能:判断m 是否为素数,若是返回1,否则返回0。
>> int fun( int n >> for(i=2;i<m;i++)
>> if(m%i==0) k=0; >> return k
6. 功能:用下面的和式求圆周率的近似值。
直到最后一项的绝对值小于等于0.0001。
>>#include >>float >>while(fa bs(t)>1e-4)
>> printf("pi=%f\n",s*4)
7. 功能:输出Fabonacci 数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。
>> printf("%8.0f",f1) >>
for(i=2;i<=20;i++) >> f1=f2 >> f2=f3
8. 功能:根据整型形参m 的值,计算如下公式的值。
>>for(i=2;i<m;i--) >> y-=1.0/(i*i) >> return y
9. 功能:计算并输出k 以内最大的10个能被13或17整除的自然数之和。
k 的值由主函数传入。
例如:若k 的值为500,则函数值为4622
>> while >> if((k%13==0)||(k%17==0)) >> k-
- >> return(m)
10. 功能:计算正整数num 的各位上的数字之积。
>> long k=1 >> scanf("%ld",&n) >>
num/=10
>> printf("\n%ld\n",fun(n))
11. 功能:求出两个非零正整数的最大公约数,并作为函数值返回。
例如:若给num1和num2分别输入49和21,则输出的最大公约数为7。
>> b=t >> a=b >> r=a%b >> return b
12. 功能:计算数组元素中值为正数的平均值(不包括0)。
>> double sum=0.0 >> while(s[i]! =0) >> sum/=c >> return (sum)
13. 功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum
>> sum=0 >> scanf("%d",&a[i][j]) >>
sum=sum+a[i][i] >>printf("sum=%d\n",sum)
14. 功能:给定n 个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。
>> float xa=0 >> for(j=0;j<n;j++ >>
for(j=0;j<n;j++)>> return c
15. 功能:找出大于m 的最小素数,并将其作为函数值返回
>> return(i)>> for(k=2;k<i;k++) >> if(i%k==0)>> if(k==i)
16. 功能:实现3行3列矩阵的转置,即行列互换。
>> scanf("%d",a[i][j]) >> for(j=0;j<n/2;j++) >> t=a[i][j] >> a[j][i]=t
17. 功能:实现两个字符串的连接
>> while(s1[i]') >> while(s2[j]) >> s1[i]=s2[j] >> s1[i]='\0'
18. 功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。
max 代表最高分,min 代表最低分,avg 代表平均分 >> scanf("%f",&a[i]) >> max=min=avg=a[0] >> if(min>a[i])
19. 功能:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置.
>>scanf("%d", a[i])>>for(i=1;i<10;i++) >> if(a[i]<min)>> a[0]=a[i]
20. 功能:用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出
>> for(i=0;i<N-j ;i++)>> if(str[i]>str[i+1])>> scanf("%c",&str[i])>> sort(str)
21. 功能:根据整型形参m ,计算如下公式的值: y=1+1/3+1/5+1/7+...+1/(2m-3)
>> double y=1;>> for(i=3;
i<m;i++) >>y+=1.0/(2*i-3);
22. 功能:先将在字符串s 中的字符按正序存放到t 串中,然后把s 中的字符按逆序连接到t 串的后面。
>> for(i=0;i<=sl;i++)>> t[sl+i]=s[sl-1-i] >> t[sl+1]='\0'
23. 功能:请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。
>> for(i=0;i<num-1;i++)>> for(j=i+1; j<num;
j++) >> if(s[i]<s[j])
24. 功能:计算正整数num 的各位上的数字之积
>> long k=1;>> num/=10;>> while(num>0)
25. 功能:用选择法对数组中的n 个元素按从小到大的顺序进行排序。
>> p = j; >> if(a[i]<a[p]) >> p=i
26. 功能:求出以下分数序列的前n 项之和。
和值通过函数值返回main 函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……
>> double fun ( int n ) >> s+ = (double)a /
b ;>> return s
27. 功能:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调
>> m=i >> for(k=m+1; k<n; k++) >> m=k
28. 功能:分别统计字符串中大写字母和小写字母的个数
>> void fun ( char *s, int *a, int
*b ) >> *b++ >> *a++ 29. 功能:打印出杨辉三角形(要求打印出10行)
>> for(i=0;i<10;i++)>> for(i=2;i<10;i++) >> a[i ][j i]=a[i-1][j-1]+a[i-1][j] 30. 功能:以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的最大的n 。
>> s=n=0 >> while(s<=1000)>> printf("n=%d\n",n-1) 31. 功能:编写函数fun,求两个整数的最小公倍数,然后用主函数main()调用这个函数并输出结果,两个整数由键盘输入
>> if (m<n)>> ifi%n==0)>> q=fun(m,n) 32. 功能:写一个函数,求一个字符串的长度,在
main 函数中输入字符串,并输出其长度。
>> while(*p!='\0') >> char str[20] >> len=length(str)。
C语言常见改错
1:常见格式 int→%d,long→%ld,float→%f,double→%lf 2:所需输出结果与已定义类型不同,可以利用强制转 换符。如定义 sum 为 int,但要输出实数 float,可以(float) sum 。见例一 四、固定语句格式错误 1:for( ; ; ); 2:while( ); 3:switch(){ };(for,while,switch 后面无分号) 见例五 4:do{ }while( );(do{ }while 结构后面有分号)
if(isSuShu(i)==0) /*(4)条件表达错,应改为(isSuShu(i)==1)或(isSuShu(i))*/ {
count=0; /*(5)本句应改为:count++;或 count+=1;*/
printf("%d\t",i);
if(count%K==0)
printf("\n");
case 6: b[2]++; break;
case 7: b[3]++; break;
case 8: b[4]++; break;
case 9: b[5]++;
/*(4)行末应加:break; */
default: b[5]++;
}
}
}
printf("The result is: \n");
for (i=1; i<6; i++) printf("%d0 number is: \n ", i+4,b[i]);
复习4-CPP程序设计-分析与改错
int main(){ T const t1(1,10); t1.print(); return 0; }
天道酬勤 勤能补拙
思考题4-程序改错2
int main(){ T const t1(1,10); class T t1.printY(); { return 0; } public: void T(int xx, int yy) {x = xx; y = yy; countT++; } void T(T t){x= t.x; y = t.y; countT++; } float fun( const int & f) { --f; x=f*f; } static void print() {cout<<x<<y<<countT<<endl;} void printY(){cout<<y;} 答案: (1) 常数据成员y必须在初始化列表中初始化; private: (2) 构造函数T( )无返回值,也不能写void int x; (3) 常引用变量 f 禁止修改 (4) 静态函数print( )禁止访问非静态变量 const int y; (5) 私有变量countT禁止直接初始化; static int countT = 0; (6) 常对象t1禁止调用一般成员函数,只可调 用常成员函数和静态成员函数。 } (7) 类定义结束,需要加分号 ;
* 和 &在不同语句中的含义 *
int *ptr
在声明语句中
&
inf &ref
声明ref 是一个int型的引用
声明p是一个int指针
在执行语句中 或声明语句的初 值表达式中
cout<<*p
C语言实验册完整答案
实验2答案五.程序改错#include<stdi o.h>int main(void){int x=3,y;y = x*x;printf("%d = %d * %d\n",y,x,x); /* 输出*/printf("%d * %d = %d\n",x,x,y);return 0;}六、一般编程题6.1#include<stdio.h>int main(void){int x,y;printf("Input x: ");scanf("%d",&x);printf("Input y: ");scanf("%d",&y);printf("%d + %d = %d\n",x,y,x+y);printf("%d - %d = %d\n",x,y,x-y);printf("%d * %d = %d\n",x,y,x*y);printf("%d / %d = %d\n",x,y,x/y);printf("%d %% %d = %d\n",x,y,x%y);return 0;}6.2#include<stdio.h>int main(void){ float x; double y;printf("Input x: ");scanf("%f",&x);printf("Input y: ");scanf("%lf",&y);printf("%f + %f = %f\n",x,y,x+y);printf("%f - %f = %f\n",x,y,x-y);printf("%f * %f = %f\n",x,y,x*y);printf("%f / %f = %f\n",x,y,x/y);return 0;}6.3#include<stdio.h>int main(void){ char c;printf("Input c: ");scanf("%c",&c);printf("%c\n",c+32);return 0;}6.4#include<stdio.h>int main(void){int celsius,fahr;fahr = 150;celsius = 5*fahr/9 - 5*32/9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 如果使用公式9)32(5-⨯=f c 计算结果不一样,celsius = 65。
C语言考试改错
第一套改错:fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
1、m=0; 改为m=i;2、if(a[k]>a[m]) k=m;改为if(a[k]>a[m]) m=k;第二套改错:fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
1、void fun(char str, char ch ) 改为void fun(char *str, char ch ) 2、if ( *str == ch )改为if ( *str! = ch )3、str[1] = '0';改为str[1] = 0;第四套改错:fun函数的功能是:将p所指字符串中的每个单词的最后一个字母改成大写。
(这里的“单词”是指由空格隔开的字符串)。
1、if( p == ' ' )改为if( *p == ' ' )2、* (p-1) = toupper( *( p - 1 ) ) 改为* (p-1) = toupper( *( p - 1 ) );第六套改错:fun函数的功能是:tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。
1、if(( ‘a’ <= tt[i] )||( tt[i] <= ‘z’ ) )改为if(( ‘a’ <= tt[i] )&&( tt[i] <= ‘z’ ) )2、tt[i] + = 32;改为tt[i] - = 32;第三套改错:fun的功能是:计算整数n的阶乘。
1、result*=--n; 改为result*=n--;2、return _____;改为returnresult;第五套改错:fun函数的功能是:根据形参m,计算如下公式的值。
t=1+1/2+1/3+1/4+……+1/m1、t + = 1.0/k; 改为t + =1.0/i;2、________改为return t;第七套改错:fun函数的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
山东春季高考C语言练习题
C 语言程序设计1.程序填空题程序功能:定义函数 max(int a,int b),比较整数 a,b 的大小并输出较大值。
代码如下:#includeint max(int a,int b){if(【1】)return a;elsereturn 【2】;}void main(){int 【3】;printf("请输入 2 个整数:\n");scanf("%d%d", &a,&b);printf("较大值:%d \n", 【4】);}2.程序填空题代码如下:#include <stdio.h>main(){int age1, age2;printf("请输入小明和小红的年龄:");scanf("%d %d", 【1】, 【2】);if (【3】)printf("小明比小红大\n");else if (【4】)printf("小红比小明大\n");elseprintf(【5】);}3.程序填空题#include <stdio.h>main(){int num, n1, n2, n3;printf("请输入一个三位正整数:");scanf("%d", 【1】);n1 = 【2】;n2 = 【3】;n3 = 【4】;if (【5】 == num)printf("Y\n");elseprintf("N\n");}4.程序填空题程序功能:输入一个 1800~2800 之间的整数作为年份,判断该年份是否为闰年。
年份符合下列条件之一者为闰年:①能被 4 整除且不能被 100 整除;②能被 400 整除。
程序部分代码如下:#include <stdio.h>main(){int year,flag;printf("请输入年份:");【1】;【2】printf("年份超出范围。
c语言题库改错题及详解答案
c语言题库改错题及详解答案C语言是一种广泛使用的计算机编程语言,它以其强大的功能和灵活性而闻名。
在学习和掌握C语言的过程中,练习题库中的改错题是提高编程技能的有效方式。
以下是一些常见的C语言改错题及其详解答案。
1. 题目:编写一个程序,计算并输出1到10的累加和。
错误代码:```cint main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum = sum + i;}print("Sum is %d", sum);return 0;}```错误点: `print` 函数应为 `printf`。
正确代码:```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum += i; // 可以简化为 sum += i;}printf("Sum is %d\n", sum);return 0;}```2. 题目:编写一个程序,判断输入的年份是否为闰年。
错误代码:```cint main() {int year;printf("Enter a year: ");scanf("%d", &year);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```错误点:逻辑判断的括号使用不正确。
正确代码:```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```3. 题目:编写一个程序,实现字符串的反转。
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语言改错题题库及详解答案C语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。
然而,即使是经验丰富的程序员也难免会在编写C语言程序时犯一些错误。
下面是一个C语言改错题题库及其详解答案,帮助学习者识别并改正常见的编程错误。
题目1:错误的变量初始化```cint main() {int a;printf("%d", a); // 错误:变量a未初始化return 0;}```详解答案:在C语言中,如果一个变量在使用前没有被显式地初始化,它的值是不确定的。
为了修复这个错误,我们应该在声明变量时对其进行初始化。
```cint main() {int a = 0; // 正确的初始化printf("%d", a);return 0;}```题目2:错误的数组索引```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[5]); // 错误:数组索引越界return 0;}```详解答案:数组索引是从0开始的,所以对于一个有5个元素的数组,有效的索引范围是0到4。
访问数组的第6个元素会导致越界错误。
```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[4]); // 正确的索引return 0;}```题目3:错误的循环使用```cint main() {int i;for (i = 0; i <= 10; i++) {printf("%d ", i);} // 错误:循环条件错误return 0;}```详解答案:循环条件应该是`i < 10`,以确保循环不会无限执行。
```cint main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;}```题目4:错误的函数调用```cint main() {int result = add(5, 3); // 错误:add函数未定义printf("%d", result);return 0;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
c语言改错题技巧
c语⾔改错题技巧计算机⼆级C语⾔程序设计实战根据本⼈多年研究全国计算机等级考试⼆级C语⾔,发现很多考⽣对上机考试存在很⼤的问题。
现将本⼈在教学当中对⼆级C 语⾔上机考试题库总结的经验和⼤家分享,希望能对我们考⽣的考试有所帮助,顺利通过考试!以下是对上机考试改错题的做题⽅法和总结,改错题的错误主要分为以下⼏类:1、if或while语句若错误⾏是if或者while语句,则要注意以下点:1)⾸先判断是否正确书写if或while关键字;2)然后看有没有⽤⼩括号把整个表达式括起来,若没有则加上⼩括号;3)若条件表达式中有指针变量⽽且没有指针运算符时,则加上指针运算符;4)若if条件表达式中只有⼀个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =);5) 若if条件表达式为其他的⽐较运算符,则⼀般是进⾏逆转或加⼀个等于号;2、for语句若错误⾏是for语句,则要注意以下⼏点:1)⾸先判断for有没有书写正确;2)然后看for中的表达式是不是⽤分号(;)隔开,若不是则改为分号。
记住是分号(;),不是逗号(,)!3) 再者,分析for中的三个表达式,是否符合题意;第⼀个表达式表⽰起始条件,第⼆个表达式表⽰终⽌条件,第三个表达式表⽰循环变量的变化。
3、 return语句若错误⾏为return语句,则要注意以下⼏点:1)⾸先看是不是正确书写return关键字;2)然后看是不是缺少分号,若是则加上分号即可;3)再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。
4、赋值语句若错误⾏是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。
5、定义语句若错误⾏是定义语句,则要注意:1)⾸先分析变量类型名是否写对;2)然后分析给变量赋初值是否正确;3)若以上均不是,则看是不是少定义了某个变量或少了花括号;6、表达式错误问题:若错误⾏中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进⾏强制类型转换。
C语言程序改错及填空题
gc23.c下列程序是建立一个包含学生有关数据的单向链表。
但该程序有2个错误,错误出现在每个注释行附近,请调试改正。
调试改正中,不得改变程序结构,也不得增删语句。
#defineNULL0structstud{longnum;charname[10];floatscore;structstud*next;};/*……………comment……………*/intn;structstudcreate()////////structstud*create(void){structstud*head,*p1,*p2;n=0;p1=p2=(structstud*)malloc(sizeof(structstud));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;elsep2->next=p1;p1=(structstud*)malloc(size(structstud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);}p2->next=NULL;return(head);}gc57.c的功能是互换给定数组中的最大数和最小数。
如将下面8个数:5,3,1,4,2,8,9,6变成:5,3,9,4,2,8,1,6程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。
程序有二处错误,请改正。
注意:不得增行和删行,也不得修改程序的结构。
main(){inti;staticinta[8]={5,3,1,4,2,8,9,6};voidjhmaxmin();printf("Originalarray:\n");for(i=0;i<8;i++)jhmaxmin(a,8);printf("Arrayafterswapingmaxandmin:\n");for(i=0;i<8;i++)printf("%5d",a[i]);printf("\n");}//注意:voidjhmaxmin(p,n)intp,n;这是一种老的函数形式,现在一般这样写voidjhmaxmin(intp,intn)voidjhmaxmin(p,n)intp,n;////////int*p,n;{intt,*max,*min,*end,*q;end=p+n;max=min=p;for(q=p+1;q<end;q++){if(*q>*max)max=q;if(*q<max)min=q;////////*q<*min}t=*max;*max=*min;*min=t;}gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。
