您的当前位置:首页正文

上海理工大学c语言程序调试题复习

来源:九壹网
5月17日程序调试题复习

1. 程序调试题1

调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括C_2_1.C文件和C_2_1.EXE文件)保存到实验结果文件夹中。

功能说明:程序从键盘输入5个字符串(每个字符串长度不超过80,且字符串中不含有空格),程序找出其中最大的字符串放到max中,最后输出该最大的字符串。如输入:BASICJavaC++PascalPHP

则输出:Pascal

带错误原程序(见素材\\C_2_1.C):#include #include int main(){

int i;

char s[81], max[81]={'\\0'};

for (i=0; i<5; i++) { gets(s);

if (strcmp(s,max)) strcpy(max,s); }

puts(max);

getchar(); /*本句无错;暂停程序,按任意键继续 */}

2. 程序调试题2

调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括C_2_2.C文件和C_2_2.EXE文件)保存到实验结果文件夹中。

功能说明:函数aver的功能是计算n个整数去掉一个最大值和一个最小值后的平均值,程序从键盘输入8个整数,通过调用函数aver计算这8个整数去掉一个最大值和一个最小值后的平均值,然后输出(保留一位小数)。

如输入:1 2 3 4 5 6 7 8 则输出:average=4.5带错误原程序(见素材\\C_2_2.C):#include float aver(int *a, int n){ int i, max, min; float s;

s=max=min=a[0]; for (i=0; iif (a[i]>max) max=a[i]; if (a[i]>min) min=a[i]; }

return (s-max-min)/(n-2);}

int main(){

int b[8], i;

for (i=0; i<8; i++) scanf(\"%d\

printf(\"average=%.1f\\n\

getchar(); /*本句无错;暂停程序,按任意键继续 */}

3. 程序调试题3

调试要求:下列程序包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括C_2_3.C文件和C_2_3.EXE文件)保存到实验结果文件夹中。

功能说明:程序从键盘输入8个整数,统计并输出其中数值在70~80之间(含70和80)的数的个数。

如输入:23 71 56 85 94 78 63 80 则输出:3带错误原程序(见素材\\ C_2_3.C):#include int main(){

int a[8], i, c;

c=0;

for (i=0; i<8; i++) {

sanf(\"%d\

if (70<=a[i] and a[i]<=80) c++; }

printf(\"%d\\n\

getchar(); /*本句无错;暂停程序,按任意键继续 */}

4. 程序调试题4

调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括C_2_4.C文件和C_2_4.EXE文件)保存到实验结果文件夹中。

功能说明:程序从键盘输入一个字符串s(长度不超过80),然后用冒泡法将s中下标值为偶数的元素按照字符顺序从小到大排序,其它元素不变,最后输出排序后的字符串。

如输入:2d4a3b1c 则输出:1d2a3b4c带错误原程序(见素材\\ C_2_4.C):#include

#include int main(){

char s[],t; int i, j, k;

gets(s); k=strlen(s);

for (i=0; i<=k-2; i+=2) // 用冒泡法对下标值为偶数的元素从小到大排序

for (j=2; j<=k-3-i; j++)

if (s[j]>s[j+2]) // 下标值为偶数的相邻两个元素逆序,则交换 { t=s[j]; s[j]=s[j+2]; s[j+2]=tt; } puts(s);

getchar(); /*本句无错;暂停程序,按任意键继续 */}

5. 程序调试题5

调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将结果(包括C_2_5.C文件和C_2_5.EXE文件)保存到实验结果文件夹中。

功能说明:函数secondary_max的功能是在n个整数中找出次大值,程序从键盘输入8个整数,通过调用函数secondary_max找出这8个整数中的次大值,然后输出。

如输入:71 23 56 85 94 78 63 80 则输出:85带错误原程序(见素材\\ C_2_5.C):#include

int secondary_max(int a[], int n){ int i, max1, max2;

max1=a[0]; max2=a[1];

if (max1for (i=2; i{ if (a[i]>max1) { max1=max2; max1=a[i]; } else if (a[i]>max2) max2=a[i]; }

return max2;}

int main(){

int b[8],i;

for (i=0; i<8; i++) scanf(\"%d\

printf(\"average=%d\\n\

getchar(); /*本句无错;暂停程序,按任意键继续 */}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top