当前位置:   article > 正文

《C语言<程序改错题练习合集(1)>》_有关c语言中指向一维数组的指针的改错题

有关c语言中指向一维数组的指针的改错题

"海压竹枝低复举,风吹山角晦还明。”                     ——宋·陈与义《观雨》

目录

T1:

题目:

下面程序通过指针操作,将由八进制数字组成的字符串“77777”转换为对应的十进制形式。

T2:

题目:

把字符串s中所有数字字符按以下规律改写:

(1)0,1,2,3,4,5,6,7,8分别对应改写成1,2,3,4,5,6,7,8,9

(2)9改写成0

(3)其他字符保持不变

T3:

 题目:若有车的车牌号和罚分记录数据,统计罚分达到或超过12分的车辆总数并输出这些车牌的信息(说明:id域代表车牌号,score域代表罚分)

T4:

 题目:输出一维数组中的最小元素及其下标值

T5:

题目:在屏幕上输出以下图形(字符之间没有空格)。

T6:

题目:统计所有三位正整数中个数和十位之和与百位的积是28的个数。如:259,268,277,286......是满足条件的数。

 T7:

题目:删除字符串中的所有空白字符

T8:

题目:输出大于2016的10个最小素数,如2017,2027,2029,2039,.......等。

T9:

题目: 下面程序通过指针操作,输出由二进制数字组成的字符串"0010110101000001"对应的无符号十进制整数。

T10:

题目:输入一个正整数,判断m是否是素数。

T11:

题目:输出一维数组中的最大元素及其下标值。 

T12:

题目: 从主函数中输入一个正整数n,并通过调用fac()函数,求得n的阶乘,在主函数中输出n阶乘的值。

T13:

题目:已知数列,第一项和第二项都是1,从第三项开始每项都是其前两项之和。求第n项(n从键盘输入,用递归实现)。

T14:

题目:统计1000以内个位数是9并且能被9整除的所有正整数的个数。

T15:

题目:在屏幕上输出以下图形(星号之间没有空格)

T16:

题目:将字符串“987654”转换成其对应的十进制整数形式输出。

T17:

题目:输出个位数字为7的最小的10个素数,如7,17,37,47......等。

T18:

题目:在屏幕上输出以下图形(星号之间没有空格)

T19:

题目:从键盘输入一个不多于4位的十进制正整数,求出它是几位数。

T20:

题目:在屏幕上输出以下图形(星号之间没有空格)

T21:

题目:fun函数的功能是:计算s=1+1/2+1/3+1/4+...1/n的值。在主函数中输入一个正整数n,通过调用fun函数,求得计算结果。 

T22:

 题目:在屏幕上输出以下图形(字符之间没有空格)。

T23:

 题目:把字符串s中所有小写字母改写成该字母的下一个字母,但是如果是字母'z',则改写成字母'a',大写字母和其他字符保持不变。

 T24:

题目:统计100以内有多少个素数。

T25:

题目:在屏幕上输出以下图形(说明:星号之间无空格)。

T26:

题目:函数search(int a[ ],int n,int number)的功能:在a数组的前n个元素中查找number,若存在则返回第一次找到的元素下标,否则返回-1。

主函数功能:输入number,调用search函数查找number,最后输出查找结果。

后记:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!                                                                     ——By 作者:新晓·故知 


T1:

题目:

下面程序通过指针操作,将由八进制数字组成的字符串“77777”转换为对应的十进制形式。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char str[6]="77777",*p;
  5. int n,t;
  6. n=1; /*$ERROR$*/
  7. p=str[0]; /*$ERROR$*/
  8. while(*p!=0)
  9. {
  10. t=*p-'0';
  11. n=n*8+t;
  12. p--; /*$ERROR$*/
  13. }
  14. printf("\n%s is convered to integer number: %d\n",str,n);
  15. }

题解:

  1. //可正确执行程序
  2. #include <stdio.h>
  3. void main()
  4. {
  5. char str[6] = "77777", * p; // char str[6] = "76777", * p; 可使用此语句进行调试,观察程序语句执行过程
  6. int n, t;
  7. n = 0; /*已改正*/
  8. p = str; /*已改正*/
  9. while (*p != 0)
  10. {
  11. t = *p - '0';
  12. n = n * 8 + t;
  13. p++; /*已改正*/
  14. }
  15. printf("\n%s is convered to integer number: %d\n", str, n);
  16. }

T2:

题目:

把字符串s中所有数字字符按以下规律改写:

(1)0,1,2,3,4,5,6,7,8分别对应改写成1,2,3,4,5,6,7,8,9

(2)9改写成0

(3)其他字符保持不变

  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. char s[80];
  6. int i;
  7. getc(s); /*$ERROR$*/
  8. for (i = 0; s[i] != '\0'; i++)
  9. {
  10. if (s[i] = '9') /*$ERROR$*/
  11. s[i] = '0';
  12. else if (s[i] >= '0' && s[i] <= '8')
  13. s[i] = s[i] + 1;
  14. }
  15. printf("%c\n", s); /*$ERROR$*/
  16. }

题解:

  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. char s[80];
  6. int i;
  7. gets(s); /*已改正*/ //scanf("%s", s);此语句和gets语句等价
  8. for (i = 0; s[i] != '\0'; i++)
  9. {
  10. if (s[i] == '9') /*已改正*/
  11. s[i] = '0';
  12. else if (s[i] >= '0' && s[i] <= '8')
  13. s[i] = s[i] + 1;
  14. }
  15. printf("%s\n", s); /*已改正*/
  16. }

T3:

 题目:若有车的车牌号和罚分记录数据,统计罚分达到或超过12分的车辆总数并输出这些车牌的信息(说明:id域代表车牌号,score域代表罚分)

  1. #include <stdio.h>
  2. struct car
  3. {
  4. char id[12];
  5. int score;
  6. };
  7. void main()
  8. {
  9. int i, n = 0;
  10. car c[6] = { {"A-QQ111",8}, /*$ERROR$*/
  11. {"A-TT222",12},
  12. {"B-WJ333",12},
  13. {"C-LC444",5},
  14. {"F-PC555",6},
  15. {"B-MY666",12} };
  16. printf("id\tscore\n");
  17. i = 0;
  18. while (i < 6)
  19. {
  20. if (score >= 12) /*$ERROR$*/
  21. {
  22. printf("%s\t%d\n", c[i].id, c[i].score);
  23. n--; /*$ERROR$*/
  24. }
  25. i++;
  26. }
  27. printf("n=%d\n", n);
  28. }

题解:

  1. #include <stdio.h>
  2. struct car
  3. {
  4. char id[12];
  5. int score;
  6. };
  7. void main()
  8. {
  9. int i, n = 0;
  10. struct car c[6] = { {"A-QQ111",8}, /*已改正*/
  11. {"A-TT222",12},
  12. {"B-WJ333",12},
  13. {"C-LC444",5},
  14. {"F-PC555",6},
  15. {"B-MY666",12} };
  16. printf("id\tscore\n");
  17. i = 0;
  18. while (i < 6)
  19. {
  20. if (c[i].score >= 12) /*已改正*/
  21. {
  22. printf("%s\t%d\n", c[i].id, c[i].score);
  23. n++; /*已改正*/
  24. }
  25. i++;
  26. }
  27. printf("n=%d\n", n);
  28. }

T4:

 题目:输出一维数组中的最小元素及其下标值

  1. #include <stdio.h>
  2. int search(int a[],int n)
  3. {
  4. int i,min;
  5. min=1; /*$ERROR$*/
  6. for(i=1;i<n;i++)
  7. {
  8. if(a[i]<a[min])
  9. min=i;
  10. }
  11. return i; /*$ERROR$*/
  12. }
  13. void main()
  14. {
  15. int a[10]={13,1,-5,4,9,0,-8,7,-6,2};
  16. int min;
  17. min=search(a); /*$ERROR$*/
  18. printf("min=%d,address=%d\n",a[min],min);
  19. }

题解:

  1. #include <stdio.h>
  2. int search(int a[], int n)
  3. {
  4. int i, min;
  5. min = 0; /*已改正*/
  6. for (i = 1; i < n; i++)
  7. {
  8. if (a[i] < a[min])
  9. min = i;
  10. }
  11. return min; /*已改正*/
  12. }
  13. void main()
  14. {
  15. int a[10] = { 13,1,-5,4,9,0,-8,7,-6,2 };
  16. int min;
  17. min = search(a,10); /*已改正*/
  18. printf("min=%d,address=%d\n", a[min], min);
  19. }

T5:

题目:在屏幕上输出以下图形(字符之间没有空格)。

  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. char a[6] = "54321", temp;
  6. int i, k;
  7. for (i = 1; i <= 5; i++)
  8. {
  9. printf("%c\n", a); /*$ERROR$*/
  10. temp = a[0];
  11. for (k = 0; k < 4; k++)
  12. a[k + 1] = a[k]; /*$ERROR$*/
  13. a[4] = a[0]; /*$ERROR$*/
  14. }
  15. }

题解:

  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. char a[6] = "54321", temp;
  6. int i, k;
  7. for (i = 1; i <= 5; i++)
  8. {
  9. printf("%s\n", a); /*已改正*/
  10. temp = a[0];
  11. for (k = 0; k < 4; k++)
  12. a[k] = a[k + 1]; /*已改正*/
  13. a[4] = temp; /*已改正*/
  14. }
  15. }

T6:

题目:统计所有三位正整数中个数和十位之和与百位的积是28的个数。如:259,268,277,286......是满足条件的数。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, g, s, b, count;
  5. count = 1; /*$ERROR$*/
  6. for (i = 100; i <= 999; i++)
  7. {
  8. g = i % 10;
  9. s = i / 10 % 10;
  10. b = i % 100; /*$ERROR$*/
  11. if ((g + s) * b == 28)
  12. count = i; /*$ERROR$*/
  13. }
  14. printf("%d\n", count);
  15. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, g, s, b, count;
  5. count = 0; /*已改正*/
  6. for (i = 100; i <= 999; i++)
  7. {
  8. g = i % 10;
  9. s = i / 10 % 10;
  10. b = i / 100; /*已改正*/
  11. if ((g + s) * b == 28)
  12. {
  13. count++; /*已改正*/
  14. //printf("%d ", i); //此语句打印满足条件的数值
  15. }
  16. }
  17. printf("%d\n", count);
  18. }

 T7:

题目:删除字符串中的所有空白字符

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char s[100] = "I love this program.";
  5. int i, j;
  6. j = 0;
  7. for (i = 0; s[i] != '\0'; i++)
  8. {
  9. if (s[i] != ' ')
  10. {
  11. s[j] = s[i];
  12. i++; /*$ERROR$*/
  13. }
  14. }
  15. s[j] = "\0"; /*$ERROR$*/
  16. printf("%c\n", s); /*$ERROR$*/
  17. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char s[100] = "I love this program.";
  5. int i, j;
  6. j = 0;
  7. for (i = 0; s[i] != '\0'; i++)
  8. {
  9. if (s[i] != ' ')
  10. {
  11. s[j] = s[i];
  12. j++; /*已改正*/
  13. }
  14. }
  15. s[j] = '\0'; /*已改正*/
  16. printf("%s\n", s); /*已改正*/
  17. }

T8:

题目:输出大于2016的10个最小素数,如2017,2027,2029,2039,.......等。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, n;
  5. n = 0;
  6. i = 2016;
  7. while (n <= 10) /*$ERROR$*/
  8. {
  9. flag = 0;
  10. for (j = 2; j < i; j++)
  11. if (i / j == 0) /*$ERROR$*/
  12. {
  13. flag = 1;
  14. break;
  15. }
  16. if (flag >= 0) /*$ERROR$*/
  17. {
  18. n = n + 1;
  19. printf("%d\n", i);
  20. }
  21. i = i++;
  22. }
  23. }

 题解1:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, n;
  5. n = 0;
  6. i = 2016;
  7. while (n < 10) /*已改正*/
  8. {
  9. flag = 0;
  10. for (j = 2; j < i; j++)
  11. if (i % j == 0) /*已改正*/
  12. {
  13. flag = 1;
  14. break;
  15. }
  16. if (flag == 0) /*已改正*/
  17. {
  18. n = n + 1;
  19. printf("%d\n", i);
  20. }
  21. i = i++;
  22. }
  23. }

题解2:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, n;
  5. n = 0;
  6. i = 2016;
  7. while (n < 10 && i--) /*已改正*/
  8. {
  9. flag = 0;
  10. for (j = 2; j < i; j++)
  11. if (i % j == 0) /*已改正*/
  12. {
  13. flag = 1;
  14. break;
  15. }
  16. if (flag == 0) /*已改正*/
  17. {
  18. n = n + 1;
  19. printf("%d\n", i);
  20. }
  21. i = i + 2; //此语句和原题(i=i++;)不同,但这种写法可编译
  22. }
  23. }

T9:

题目: 下面程序通过指针操作,输出由二进制数字组成的字符串"0010110101000001"对应的无符号十进制整数。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char v2[] = "0010110101000001", * p;
  5. unsigned int v10, t;
  6. v10 = 1; /*$ERROR$*/
  7. p = v2[0]; /*$ERROR$*/
  8. while (*p != '\0')
  9. {
  10. t = *p - '0';
  11. v10 = v10 * 2 + t;
  12. p--; /*$ERROR$*/
  13. }
  14. printf("\n%s is convered to integer number: %u\n", v2, v10);
  15. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char v2[] = "0010110101000001", * p;
  5. unsigned int v10, t;
  6. v10 = 0; /*已改正*/
  7. p = v2; /*已改正*/
  8. while (*p != '\0')
  9. {
  10. t = *p - '0';
  11. v10 = v10 * 2 + t;
  12. p++; /*已改正*/
  13. }
  14. printf("\n%s is convered to integer number: %u\n", v2, v10);
  15. }

T10:

题目:输入一个正整数,判断m是否是素数。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, m;
  5. scanf("%d", m); /*$ERROR$*/
  6. flag = 0;
  7. for (i = 2; i < m; i++)
  8. {
  9. if (m / i == 0) /*$ERROR$*/
  10. {
  11. flag = 1;
  12. break;
  13. }
  14. }
  15. if (flag >= 0) /*$ERROR$*/
  16. printf("%d是素数\n", m);
  17. else
  18. printf("%d不是素数\n", m);
  19. }

 题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, m;
  5. scanf("%d", &m); /*已改正*/
  6. flag = 0;
  7. for (i = 2; i < m; i++)
  8. {
  9. if (m % i == 0) /*已改正*/
  10. {
  11. flag = 1;
  12. break;
  13. }
  14. }
  15. if (flag == 0) /*已改正*/
  16. printf("%d是素数\n", m);
  17. else
  18. printf("%d不是素数\n", m);
  19. }

T11:

题目:输出一维数组中的最大元素及其下标值。 

  1. #include <stdio.h>
  2. int search(int a[], int n)
  3. {
  4. int i, max;
  5. max = 1; /*$ERROR$*/
  6. for (i = 1; i < n; i++)
  7. {
  8. if (a[i] > a[max])
  9. max = i;
  10. }
  11. return i; /*$ERROR$*/
  12. }
  13. void main()
  14. {
  15. int a[10] = { 13,1,-5,4,9,0,-8,7,-6,2 };
  16. int max;
  17. max = search(a); /*$ERROR$*/
  18. printf("max=%d,address=%d\n", a[max], max);
  19. }

题解: 

  1. #include <stdio.h>
  2. int search(int a[], int n)
  3. {
  4. int i, max;
  5. max = 0; /*已改正*/
  6. for (i = 1; i < n; i++)
  7. {
  8. if (a[i] > a[max])
  9. max = i;
  10. }
  11. return max; /*已改正*/
  12. }
  13. void main()
  14. {
  15. int a[10] = { 13,1,-5,4,9,0,-8,7,-6,2 };
  16. int max;
  17. max = search(a, 10); /*已改正*/
  18. printf("max=%d,address=%d\n", a[max], max);
  19. }

T12:

题目: 从主函数中输入一个正整数n,并通过调用fac()函数,求得n的阶乘,在主函数中输出n阶乘的值。

  1. #include <stdio.h>
  2. long fac(int n)
  3. {
  4. int i;
  5. long s;
  6. s = 1;
  7. i = 0; /*$ERROR$*/
  8. while (i < n) /*$ERROR$*/
  9. {
  10. s = s * i;
  11. i++;
  12. }
  13. return s;
  14. }
  15. void main()
  16. {
  17. int n;
  18. long result;
  19. printf("Enter n:");
  20. scanf("%d", n); /*$ERROR$*/
  21. result = fac(n);
  22. printf("n! =%ld\n", result);
  23. }

题解:

  1. #include <stdio.h>
  2. long fac(int n)
  3. {
  4. int i;
  5. long s;
  6. s = 1;
  7. i = 1; /*已改正*/
  8. while (i <= n) /*已改正*/
  9. {
  10. s = s * i;
  11. i++;
  12. }
  13. return s;
  14. }
  15. void main()
  16. {
  17. int n;
  18. long result;
  19. printf("Enter n:");
  20. scanf("%d", &n); /*已改正*/
  21. result = fac(n);
  22. printf("n! =%ld\n", result);
  23. }

T13:

题目:已知数列,第一项和第二项都是1,从第三项开始每项都是其前两项之和。求第n项(n从键盘输入,用递归实现)。

  1. #include <stdio.h>
  2. long f(int n)
  3. {
  4. if (n = 1 || n = 2) /*$ERROR$*/
  5. return 1;
  6. else
  7. return f(n - 1) - f(n - 2); /*$ERROR$*/
  8. }
  9. void main()
  10. {
  11. long m;
  12. int n;
  13. printf("\nPlease input n:\n");
  14. scanf("%d", n); /*$ERROR$*/
  15. if (n > 0)
  16. {
  17. m = f(n);
  18. printf("%ld\n", m);
  19. }
  20. else printf("Data error\n");
  21. }

题解:

  1. //求第n项的斐波那契数列的值
  2. #include <stdio.h>
  3. long f(int n)
  4. {
  5. if (n == 1 || n == 2) /*已改正*/
  6. return 1;
  7. else
  8. return f(n - 1) + f(n - 2); /*已改正*/
  9. }
  10. void main()
  11. {
  12. long m;
  13. int n;
  14. printf("\nPlease input n:\n");
  15. scanf("%d", &n); /*已改正*/
  16. if (n > 0)
  17. {
  18. m = f(n);
  19. printf("%ld\n", m);
  20. }
  21. else printf("Data error\n");
  22. }

T14:

题目:统计1000以内个位数是9并且能被9整除的所有正整数的个数。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, c;
  5. c = 1; /*$ERROR$*/
  6. for (i = 1; i < 1000; i++)
  7. if (i % 9 == 0)
  8. if (i % 10 == 9)
  9. {
  10. c = i; /*$ERROR$*/
  11. }
  12. print("%d\n", c); /*$ERROR$*/
  13. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, c;
  5. c = 0; /*已改正*/
  6. for (i = 1; i < 1000; i++)
  7. if (i % 9 == 0)
  8. if (i % 10 == 9)
  9. {
  10. c++; /*已改正*/
  11. //printf("%d ", i);
  12. }
  13. printf("\n");
  14. printf("%d\n", c); /*已改正*/
  15. }

T15:

题目:在屏幕上输出以下图形(星号之间没有空格)

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j;
  5. i = 1; /*$ERROR$*/
  6. while (i < 5)
  7. {
  8. j = 0;
  9. while (j <= i)
  10. {
  11. printf("*");
  12. j++;
  13. }
  14. printf("\n");
  15. i++;
  16. }
  17. i = 4;
  18. while (i > 0)
  19. {
  20. j = 0;
  21. while (j <= 4 - i)
  22. {
  23. printf(" ");/*输出一个空格*/
  24. j++;
  25. }
  26. j = 0;
  27. while (j < 4 - i) /*$ERROR$*/
  28. {
  29. printf("*");
  30. j++;
  31. }
  32. printf("\n");
  33. i++; /*$ERROR$*/
  34. }
  35. }

 题解:

  1. //左上右下
  2. #include <stdio.h>
  3. void main()
  4. {
  5. int i, j;
  6. i = 0; /*已改正*/
  7. while (i < 5)
  8. {
  9. j = 0;
  10. while (j <= i)
  11. {
  12. printf("*");
  13. j++;
  14. }
  15. printf("\n");
  16. i++;
  17. }
  18. i = 4;
  19. while (i > 0)
  20. {
  21. j = 0;
  22. while (j <= 4 - i)
  23. {
  24. printf(" ");/*输出一个空格*/
  25. j++;
  26. }
  27. j = 0;
  28. while (j <= i - 1) /*已改正*/
  29. {
  30. printf("*");
  31. j++;
  32. }
  33. printf("\n");
  34. i--; /*已改正*/
  35. }
  36. }

T16:

题目:将字符串“987654”转换成其对应的十进制整数形式输出。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char str[20] = "987654", * p;
  5. int n, t;
  6. n = 1; /*$ERROR$*/
  7. p = str[0]; /*$ERROR$*/
  8. while (*p != 0)
  9. {
  10. t = *p - '0';
  11. n = n * 10 + t;
  12. p--; /*$ERROR$*/
  13. }
  14. printf("\n%s is convered to integer number: %d\n", str, n);
  15. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char str[20] = "987654", * p;
  5. int n, t;
  6. n = 0; /*已改正*/
  7. p = str; /*已改正*/
  8. while (*p != 0)
  9. {
  10. t = *p - '0';
  11. n = n * 10 + t;
  12. p++; /*已改正*/
  13. }
  14. printf("\n%s is convered to integer number: %d\n", str, n);
  15. }

T17:

题目:输出个位数字为7的最小的10个素数,如7,17,37,47......等。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, n;
  5. n = 0;
  6. i = 7;
  7. while (n <= 10) /*$ERROR$*/
  8. {
  9. flag = 0;
  10. for (j = 2; j < i; j++)
  11. if (i / j == 0) /*$ERROR$*/
  12. {
  13. flag = 1;
  14. break;
  15. }
  16. if (flag >= 0) /*$ERROR$*/
  17. {
  18. n = n + 1;
  19. printf("%d\n", i);
  20. }
  21. i = i + 10;
  22. }
  23. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, n;
  5. n = 0;
  6. i = 7;
  7. while (n < 10) /*已改正*/
  8. {
  9. flag = 0;
  10. for (j = 2; j < i; j++)
  11. if (i % j == 0) /*已改正*/
  12. {
  13. flag = 1;
  14. break;
  15. }
  16. if (flag == 0) /*已改正*/
  17. {
  18. n = n + 1;
  19. printf("%d\n", i);
  20. }
  21. i = i + 10;
  22. }
  23. }

T18:

题目:在屏幕上输出以下图形(星号之间没有空格)

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j;
  5. i = 1; /*$ERROR$*/
  6. while (i < 5)
  7. {
  8. j = 0;
  9. while (j < 4 - i)
  10. {
  11. printf(" ");/*输出一个空格*/
  12. j++;
  13. }
  14. j = 0;
  15. while (j <= i)
  16. {
  17. printf("*");
  18. j++;
  19. }
  20. printf("\n");
  21. i++;
  22. }
  23. i = 4;
  24. while (i > 0)
  25. {
  26. j = 0;
  27. while (j < 4 - i) /*$ERROR$*/
  28. {
  29. printf("*");
  30. j++;
  31. }
  32. printf("\n");
  33. i++; /*$ERROR$*/
  34. }
  35. }

题解:

  1. //左下右上
  2. #include <stdio.h>
  3. void main()
  4. {
  5. int i, j;
  6. i = 0; /*已改正*/
  7. while (i < 5)
  8. {
  9. j = 0;
  10. while (j < 4 - i)
  11. {
  12. printf(" ");/*输出一个空格*/
  13. j++;
  14. }
  15. j = 0;
  16. while (j <= i)
  17. {
  18. printf("*");
  19. j++;
  20. }
  21. printf("\n");
  22. i++;
  23. }
  24. i = 4;
  25. while (i > 0)
  26. {
  27. j = 0;
  28. while (j < i - 1) /*已改正*/
  29. {
  30. printf("*");
  31. j++;
  32. }
  33. printf("\n");
  34. i--; /*已改正*/
  35. }
  36. }

T19:

题目:从键盘输入一个不多于4位的十进制正整数,求出它是几位数。

例如:输入528,则结果为n=3。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int x, n;
  5. scanf("%d", x); /*$ERROR$*/
  6. if (x <= 0 || x >= 10000)
  7. printf("Data Error!\n");
  8. else
  9. {
  10. if (x <= 10) n = 1; /*$ERROR$*/
  11. else if (x < 100) n = 2;
  12. else if (x < 1000) n = 3;
  13. n = 4; /*$ERROR$*/
  14. printf("n=%d\n", n);
  15. }
  16. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int x, n;
  5. scanf("%d", &x); /*已改正*/
  6. if (x <= 0 || x >= 10000)
  7. printf("Data Error!\n");
  8. else
  9. {
  10. if (x < 10) n = 1; /*已改正*/
  11. else if (x < 100) n = 2;
  12. else if (x < 1000) n = 3;
  13. else n = 4; /*已改正*/
  14. printf("n=%d\n", n);
  15. }
  16. }

T20:

题目:在屏幕上输出以下图形(星号之间没有空格)

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, k, n = 0;
  5. char ch = '*';
  6. for (i = 1; i <= 5; i++)
  7. {
  8. j = 1;
  9. while (j <= 5 - i)
  10. {
  11. printf(" ");
  12. j++;
  13. }
  14. j = 0; /*$ERROR$*/
  15. while (j <= 2 * i - 1)
  16. {
  17. printf("%d", ch); /*$ERROR$*/
  18. j++;
  19. }
  20. printf("/n"); /*$ERROR$*/
  21. }
  22. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, k, n = 0;
  5. char ch = '*';
  6. for (i = 1; i <= 5; i++)
  7. {
  8. j = 1;
  9. while (j <= 5 - i)
  10. {
  11. printf(" ");
  12. j++;
  13. }
  14. j = 1; /*已改正*/
  15. while (j <= 2 * i - 1)
  16. {
  17. printf("%c", ch); /*已改正*/
  18. j++;
  19. }
  20. printf("\n"); /*已改正*/
  21. }
  22. }

T21:

题目:fun函数的功能是:计算s=1+1/2+1/3+1/4+...1/n的值。在主函数中输入一个正整数n,通过调用fun函数,求得计算结果。 

  1. #include <stdio.h>
  2. double fun(int n)
  3. {
  4. double s;
  5. if (n > 1)
  6. s = 1.0 / n + fun(n - 1);
  7. else
  8. s = 1.0;
  9. return; /*$ERROR$*/
  10. }
  11. void main()
  12. {
  13. int n;
  14. double result;
  15. printf("\nPlease input n:\n");
  16. scanf("%d", n); /*$ERROR$*/
  17. if (n <= 0)
  18. printf("\nData error\n);
  19. else
  20. {
  21. result = fun(&n); /*$ERROR$*/
  22. printf("\nThe result is %lf\n", result);
  23. }
  24. }

题解:

  1. #include <stdio.h>
  2. double fun(int n)
  3. {
  4. double s;
  5. if (n > 1)
  6. s = 1.0 / n + fun(n - 1);
  7. else
  8. s = 1.0;
  9. return s; /*已改正*/
  10. }
  11. void main()
  12. {
  13. int n;
  14. double result;
  15. printf("\nPlease input n:\n");
  16. scanf("%d", &n); /*已改正*/
  17. if (n <= 0)
  18. printf("\nData error\n");
  19. else
  20. {
  21. result = fun(n); /*已改正*/
  22. printf("\nThe result is %lf\n", result);
  23. }
  24. }

T22:

 题目:在屏幕上输出以下图形(字符之间没有空格)。

  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. char a[6] = "ABCDE", temp;
  6. int i, k;
  7. for (i = 1; i <= 5; i++)
  8. {
  9. printf("%c\n", a); /*$ERROR$*/
  10. temp = a[0];
  11. for (k = 0; k < 4; k++)
  12. a[k + 1] = a[k]; /*$ERROR$*/
  13. a[4] = a[0]; /*$ERROR$*/
  14. }
  15. }

 题解:

  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. char a[6] = "ABCDE", temp;
  6. int i, k;
  7. for (i = 1; i <= 5; i++)
  8. {
  9. printf("%s\n", a); /*已改正*/
  10. temp = a[0];
  11. for (k = 0; k < 4; k++)
  12. a[k] = a[k + 1]; /*已改正*/
  13. a[4] = temp; /*已改正*/
  14. }
  15. }

T23:

 题目:把字符串s中所有小写字母改写成该字母的下一个字母,但是如果是字母'z',则改写成字母'a',大写字母和其他字符保持不变。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char s[80];
  5. int i;
  6. getc(s); /*$ERROR$*/
  7. for (i = 0; s[i] != '\0'; i++)
  8. {
  9. if (s[i] = 'z') /*$ERROR$*/
  10. s[i] = 'a';
  11. else if (s[i] >= 'a' && s[i] <= 'y')
  12. s[i] = s[i] + 1;
  13. }
  14. printf("%c\n", s); /*$ERROR$*/
  15. }

 题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char s[80];
  5. int i;
  6. gets(s); //scanf("%s", s); /*已改正*/
  7. for (i = 0; s[i] != '\0'; i++)
  8. {
  9. if (s[i] == 'z') /*已改正*/
  10. s[i] == 'a';
  11. else if (s[i] >= 'a' && s[i] <= 'y')
  12. s[i] = s[i] + 1;
  13. }
  14. printf("%s\n", s); /*已改正*/
  15. }

 T24:

题目:统计100以内有多少个素数。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, count;
  5. count = 1; /*$ERROR$*/
  6. for (i = 2; i <= 100; i++)
  7. {
  8. flag = 0;
  9. for (j = 2; j < i; j++)
  10. if (i / j == 0) /*$ERROR$*/
  11. {
  12. flag = 1;
  13. break;
  14. }
  15. if (flag >= 0) /*$ERROR$*/
  16. count++;
  17. }
  18. printf("%d\n", count);
  19. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int i, j, flag, count;
  5. count = 0; /*已改正*/
  6. for (i = 2; i <= 100; i++)
  7. {
  8. flag = 0;
  9. for (j = 2; j < i; j++)
  10. if (i % j == 0) /*已改正*/
  11. {
  12. flag = 1;
  13. break;
  14. }
  15. if (flag == 0) /*已改正*/
  16. {
  17. //printf("%d ", i); //此语句可打印符合条件的每一项
  18. count++;
  19. }
  20. }
  21. printf("\n");
  22. printf("%d\n", count);
  23. }

T25:

题目:在屏幕上输出以下图形(说明:星号之间无空格)。

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char a[5];
  5. int i, j;
  6. for (j = 0; j < 5; j++)
  7. a[j] = "*"; /*$ERROR$*/
  8. for (i = 0; i < 5; i++)
  9. {
  10. for (j = 0; j <= i; j++)
  11. printf("%d", a[j]); /*$ERROR$*/
  12. printf("/n"); /*$ERROR$*/
  13. }
  14. }

题解:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. char a[5];
  5. int i, j;
  6. for (j = 0; j < 5; j++)
  7. a[j] = '*'; /*已改正*/
  8. for (i = 0; i < 5; i++)
  9. {
  10. for (j = 0; j <= i; j++)
  11. printf("%c", a[j]); /*已改正*/
  12. printf("\n"); /*已改正*/
  13. }
  14. }

T26:

题目:函数search(int a[ ],int n,int number)的功能:在a数组的前n个元素中查找number,若存在则返回第一次找到的元素下标,否则返回-1。

主函数功能:输入number,调用search函数查找number,最后输出查找结果。

  1. #include <stdio.h>
  2. int search(int a[],int n,int number)
  3. {
  4. int result=-1;
  5. int i;
  6. for(i=0;i<n;i++)
  7. {
  8. if(a[i]==number)
  9. {
  10. result=i;
  11. continue; /*$ERROR$*/
  12. }
  13. }
  14. return n; /*$ERROR$*/
  15. }
  16. void main()
  17. {
  18. int a[10]={9,8,12,15,17,9,16,23,8,15};
  19. int number;
  20. int result;
  21. scanf("%d",&number);
  22. result=search(a,10,number);
  23. if(result=-1) /*$ERROR$*/
  24. printf("Not found!\n");
  25. else
  26. printf("%d\n",result);
  27. }

 题解:

  1. #include <stdio.h>
  2. int search(int a[], int n, int number)
  3. {
  4. int result = -1;
  5. int i;
  6. for (i = 0; i < n; i++)
  7. {
  8. if (a[i] == number)
  9. {
  10. result = i;
  11. break; /*已改正*/
  12. }
  13. }
  14. return result; /*已改正*/ //return i!=number?-1:i+1;
  15. }
  16. void main()
  17. {
  18. int a[10] = { 9,8,12,15,17,9,16,23,8,15 };
  19. int number;
  20. int result;
  21. scanf("%d", &number);
  22. result = search(a, 10, number);
  23. if (result == -1) /*已改正*/
  24. printf("Not found!\n");
  25. else
  26. printf("%d\n", result);
  27. }

后记:
●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

                                                                     ——By 作者:新晓·故知 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/215334
推荐阅读
相关标签
  

闽ICP备14008679号