当前位置:   article > 正文

专升本计算机基础与程序设计-C语言代码真题练习_湖南文理学院专升本c语言真题

湖南文理学院专升本c语言真题

1到 n!的阶乘相加

  1. int main() {
  2.     int a = 0;
  3.     int b = 0;
  4.     int c = 1;
  5.     int n = 0;
  6.      for(n=1; n <=4;n++)
  7.      { 
  8.         c = 1;
  9.         for (a = 1;a <= n; a++)
  10.         {
  11.             c *= a; 
  12.         }
  13.             
  14.             b += c;
  15.      }
  16.     
  17.             printf("%d", b);
  18.     
  19.     return 0;
  20. }

 二分法查找有序数组中的整型n

  1. int main() {
  2.     int arr [] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  3.     int k = 7;
  4.     int left = 0;
  5.     int sz = sizeof(arr) / sizeof(arr[0]);
  6.     int right = sz-1;
  7.     
  8.     while (left <= right) 
  9.     {
  10.     int mid = (left + right) / 2;
  11.     if (arr[mid] < k) {
  12.         left = mid + 1;
  13.     }
  14.     else if (arr[mid] > k) {
  15.         right = mid - 1;
  16.     }
  17.     else {
  18.         printf("找到了,下标是%d", mid);
  19.         break;
  20.     }
  21.     }
  22.     if(left>right)
  23.     {
  24.         printf("找不到了");
  25.         
  26.     }
  27.     return 0;
  28. }

模拟三次登录操作,登录失败退出

  1. int main() {
  2.     int i = 0;
  3.     char password[20] = { 0 };
  4.     for (i = 0; i < 3; i++)
  5.     {
  6.         printf("请输入密码:");
  7.         scanf("%s", password);
  8.         if (strcmp(password, "12345") == 0)
  9.         {
  10.             printf("登录成功");
  11.             break;
  12.         }
  13.         else 
  14.         {
  15.             printf("密码错误,请重新输入\n");
  16.         }
  17.         
  18.     }
  19.     if (i == 3)
  20.         printf("三次密码输入错误,退出程序");
  21.     
  22.     return 0;
  23. }

1-100随机数 猜数字

  1. void game() {
  2.     int ret = rand()%100+1;
  3.     int guess = 0;
  4.     while (1)
  5.     {
  6.         printf("请猜1~100的数字\n:>");
  7.         scanf("%d", &guess);
  8.         if (guess < ret) {
  9.             printf("猜小了\n");
  10.         }
  11.         else if (guess >ret){
  12.             printf("猜大了\n");
  13.         }
  14.         else {
  15.             printf("恭喜你猜对了!\n");
  16.             break;
  17.         }
  18.     }
  19.     
  20. }
  21. void begin() {
  22.     printf("*****1.开始游戏*****\n");
  23.     printf("*****0.退出游戏*****\n");
  24. }
  25. int main() {
  26.     
  27.     int input = 0;
  28.     srand((unsigned int)time(null));
  29.     
  30.     do 
  31.     {
  32.         begin();
  33.         printf("请选择:>");
  34.         scanf("%d", &input);
  35.         switch (input)
  36.             {
  37.             case 1:
  38.                 game();
  39.             case 0:
  40.                 printf("退出游戏\n");
  41.                 break;
  42.             default:
  43.                 printf("请重新选择\n");
  44.                 break;
  45.             }
  46.     } while (input);
  47.     
  48.     
  49.     return 0;
  50. }
  51. /*


判断闰年的函数

  1. int is_leap_year(int a) {
  2.     if (a % 4 == 0 && a % 100 != 0)
  3.     {
  4.         return 1;
  5.     }
  6.     else if (a % 400 == 0)
  7.     {
  8.         return 1;
  9.     } 
  10.     else
  11.         return 0;
  12. }
  13. int main() {
  14.     int count = 0;
  15.     int y = 0;
  16.     for (y = 1000;y < 2000;y++)
  17.     {
  18.         
  19.         if (is_leap_year(y) == 1)
  20.         {
  21.             count++;
  22.             printf("%d\n", y);
  23.         }
  24.         
  25.     }
  26.     printf("总数=%d\n", count);
  27.     return 0;
  28. }
  29. void my_strcpy(char *arr1,char *arr2) {
  30.     while(*arr1++ = *arr2++){
  31.     }
  32. }

 字符函数练习

  1. int main() {
  2.     char arr1[] = { "1234578" };
  3.     char arr2[] = { "xx0108" };
  4.     my_strcpy(arr1, arr2);
  5.     printf("% s \n", arr1);
  6. }
  7. int main() {
  8.     int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
  9.     int arr2[10] = { 0 };
  10.     memcpy(arr2, arr1, 21);
  11.     
  12.     return 0;
  13. }

给出一个5位数,判断它是不是回文数,个位与万位相同,十位与千位相同即为回文数,如12321
编程思路:定义5个长整型变量,使用scanf接收键盘输入的5位数,通过除数取模运算获得十、百、千、万位数对比判断

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.     12321;
  6.     long ge, shi, qian, wan, x;
  7.     scanf("%ld", &x);
  8.     wan = x / 10000;
  9.     qian = x % 10000/1000;// X/1000 % 10 都可以
  10.     shi = x / 10 % 10;
  11.     ge = x  % 10;
  12.     if (wan == ge && qian == shi)
  13.     {
  14.         printf("%ld\n%ld\n%ld\n%ld\n%ld是回文数\n", x,wan,qian,shi,ge);
  15.     }
  16.     else
  17.     {
  18.         printf("%ld\n%ld\n%ld\n%ld\n%ld不是回文数\n", x, wan, qian, shi, ge);
  19.     }
  20.     return 0;
  21. }*/


从键盘输入若干整数(数据个数应少于50个),其值再0~4的范围内,用-1作为结束输入的标志,统计每个整数的个数。
编程思路:使用scanf接收键盘传参吗,使用while判断-1为结束标志,使用for循环统计每个整数个数

  1. #include <stdio.h>
  2. #define m 50
  3. void main() 
  4. {
  5.     int a[m],c[5] = { 0 }, i, n = 0,x;
  6.     printf("请输入0~4范围内的整数(最多输入50个),以-1结束\n");
  7.     scanf("%d", &x);
  8.     while (x != -1)
  9.     {
  10.         if (x >= 0 && x <= 4)
  11.         {  
  12.             a[n] = x;  
  13.             n++;
  14.         }
  15.         scanf("%d", &x);
  16.     }
  17.         for (i = 0; i < n; i++)
  18.         {
  19.             c[a[i]]++;
  20.         }
  21.         printf("每个整数的个数是:\n");
  22.         for (i = 0;i <= 4;i++)
  23.         {
  24.             printf("%d:%d\n", i, c[i]);
  25.         }
  26.         
  27.     */
  28. }

9x9乘法表

  1. #include <stdio.h>
  2. void main()  //1~9 乘法表
  3. {
  4.     int i, j ,sum = 0;
  5.     for (j = 1;j<=9;j++)
  6.     {
  7.         for (i = 1;i <= j;i++)
  8.         {
  9.             sum = i * j;
  10.             printf("%d * %d = %d"" ",i, j, sum);
  11.         }printf("\n");
  12.     }
  13. }

输入一组字符串判断单词数量

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N 50
  4. void main() 输入一组字符串以空格为间隔,判断单词数量
  5. {
  6.     char str[N];
  7.     int num = 0;
  8.     int i = 0;
  9.     int word = 0;
  10.     printf("请输入一组字符串,可用空格作为间隔:\n");
  11.     gets(str);
  12.     for (i = 0;i < N && str[i] != '\0'; i++)
  13.     {
  14.         if (str[i] == ' ')
  15.         {
  16.             word = 0;
  17.         }
  18.         else
  19.         {
  20.             word = 1;
  21.             num = num + word;
  22.         }
  23.     }
  24.     printf("单词个数为:%d", num);
  25. }

二维数组变量交换

  1. #include <stdio.h>
  2. void main()
  3. {
  4.     char a[5][10] = { "one","two","three","four","five" };//定义一个二维字符数组,简单赋值
  5.     int i, j;//用作下面循环的变量
  6.     char t;//用作交换的中间变量
  7.     for (i = 0;i < 4;i++)//冒泡法的标准格式,详见下面
  8.         for (j = i + 1;j < 5;j++)
  9.             {
  10.                 t = a[i][0];
  11.                 a[i][0] = a[j][0];
  12.                 a[j][0] = t;
  13.             }
  14.     puts(a[1]);//输出交换后的第二个字符串
  15. }

从键盘输入一个正整数,判断它是不是3和5的倍数,如果是,输出yes,否则输出no
思路:使用scanf接收键盘输入的正整数,使用if语句判断输入的正整数是否为3和5的倍数,使用printf语句按要求输出内容
临时记忆 :算法的五大特性 可行性、确切性、输入、输出、有穷性 衡量算法优劣的特征:可读性、正确性、健壮性、时间复杂度、空间复杂度

  1. #include <stdio.h>
  2. int  main() {
  3.     int a = 0;
  4.     scanf("%d", &a);
  5.     if (a % 3 == 0 && a % 5 == 0)
  6.     {
  7.         printf("yes");
  8.     }
  9.     else
  10.     {
  11.         printf("no");
  12.     }
  13.     return 0;
  14. }

现有36块砖,规定由36个人搬,共有男人、女人、小孩若干。
已知:男人一次搬4块,女人一次搬3块,两个小孩抬一块,要求一次性刚好办完,问男人、女人,小孩各多少人?
编程思路:设置3个变量,运用简单的三元一次方程判断即可(错误)
根据题意,男人应少于9人(9个男人一次性能将砖办完),女人应少于12人,可以采用穷举法实现(正确)

  1. #include <stdio.h>
  2. int main() {
  3.     /*int men = 0, women = 0, kid = 0;
  4.     (men + women + kid) == 36;
  5.     (4 * men + 3 * women + kid/2) == 36;
  6.     printf("男人:%d女人:%d小孩:%d", men, women, kid);*/
  7.     int men, women, children;
  8.     for (men = 0;men < 9;men++)
  9.     {
  10.         for (women = 0;women < 12;women++)
  11.         {
  12.             children = 36 - women - men;
  13.             if ((4 * men + 3 * women + children / 2) == 36 && children % 2 == 0)
  14.             {
  15.                 printf("男人:%d个\n女人:%d个\n小孩:%d个\n", men, women, children);
  16.             }
  17.         }
  18.     }
  19.     return = 0;
  20. }

求1+1(1+2)+(1+2+3)+...+(1+2+3+...+n),其中n是从键盘输入的正整数。
编程思路:scanf接收键盘输入的正整数,for循环将n的阶乘的阶乘相加求和

  1. #include <stdio.h>
  2. int main() {
  3.     int i,n,all=0,sum = 1;
  4.     scanf("%d", &n);
  5.     for (i = 1;i <= n;i++) 
  6.     {
  7.         sum = sum * i;
  8.         all = all + sum;
  9.     }
  10.     printf("%d", all);
  11.     return 0;
  12. }


从键盘输入若干个字符,直至按Enter键为止,分别统计其中的英文的字母,空格,数字和其他字符的个数。
编程思路:错误 gets()函数接收从键盘输入的字符串,for循环遍历字符,if语句判断字符类型分别叠加
                  正确:调用getchar()函数,将从键盘输入的数据暂存到键盘缓冲区,直到输入结束(遇到Enter键)后,
将缓冲区中的数据一起输入到计算机中,利用while循环对每个字符进行判断和统计,知道遇到Enter键为止。

  1. #include <stdio.h>
  2. //#define N 100
  3. int main() 
  4. {
  5.     char c;
  6.     int words = 0, spaces = 0, nums = 0,others=0;
  7.      while((c=getchar())!='\n'
  8.     {
  9.         if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
  10.         {
  11.             words++;
  12.         }
  13.         else if (c == ' ')
  14.         {
  15.             spaces++;
  16.         }
  17.         else if (c >= '0' && c <= '9')
  18.             nums++;
  19.         else
  20.             others++;      
  21.     }
  22.     printf("英文字母=%d\n空格=%d\n数字=%d\n其他字符=%d\n", words, spaces, nums, others);
  23.     return 0;
  24. }

从键盘输入输入两个整数,使用库函数,计算这两个整数的差的绝对值*/
编程思路:调用库函数<math.h>,利用scanf()函数从键盘接收2个整数,
使用abs()函数计算两数差的绝对值,进行输出即可。

  1. #include <stdio.h>
  2. #include<math.h>
  3. int main() 
  4. {
  5.     int x,y,z;
  6.     printf("请输入两个整数:\n");
  7.     scanf(" %d%d", &x, &y);
  8.     z=abs(x - y);
  9.     printf("%d", z);
  10.     return 0;
  11. }

求一个整数的任意次方的最后3位数,即求a的b次方的最后3位数,要求a和b从键盘输入
编程思路:scanf函数从键盘接收两个整数,for循环遍历解得a的b次方结果,
最后取模运算加if判断语句解得任意次方最后3位数ps:想了小半小时写出加字符串的代码,一看参考答案在printf语句里加个限制输出的标识 %03d 即可...还是学艺不够精呐
由于题目只需要末三位数 为免越界每次乘积都只取末3位数

  1. #include <stdio.h>
  2. int main() 
  3. {
  4.     int a,b,i,total=1,rear=0;
  5.     char x[3] = { 0 };
  6.     printf("请输入两个整数:\n");
  7.     scanf(" %d%d", &a, &b);
  8.     for (i = 1;i <= b;i++)
  9.     {
  10.         total = total * a;
  11.     }
  12.     rear = total % 1000;
  13.     if(rear % 100 == 0 && rear % 1000 == 0 )
  14.         {
  15.           x[0] = '0';
  16.           x[1] = '0';
  17.          printf("%d\n%s%d",x,rear);    
  18.         }
  19.     else if (rear % 1000 == 0)
  20.     {
  21.         x[0] = '0';
  22.         
  23.         printf("%d\n%s", x,rear);
  24.     }
  25.     else
  26.     {
  27.         printf("%d\n%d", rear);
  28.     }
  29.     
  30.     return 0;
  31. }

简化语句版:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a, b, i, total = 1;
  5.     printf("请输入两个整数:\n");
  6.     scanf(" %d%d", &a, &b);
  7.     for (i = 1;i <= b;i++)
  8.     {
  9.         total = total * a;
  10.         total = total % 1000;
  11.     }
  12.     printf("%03d\n", total);
  13.     return 0;
  14. }

 

为了使电文保密,往往按一定的规律将原文转换为密码,收报人再按原先约定的规律将其译回原文。
用以下规律将原文转换成密码;原文中的字母变成该字母后的第4个,如A→E,B→F,...V→Z,
小写字母也按同样的规则进行转换,其他字符保持不变,请编写程序实现输入一个字符串,输出其密码,如输入
“China”,输出“Glmre”
编程思路:使用gets函数接收键盘输入的字符串,while循环依次调整每个字符,if语句判断是否需要调整
参考答案是用getchar函数接收单个字符判断,用一个字符变量存储缓存而不需要数组变量存储

  1. #include <stdio.h>
  2. #define N 100
  3. int main()
  4. {
  5.     int i=0;
  6.     char a[N] = {0};
  7.     gets(a);
  8.     while (a[i] != '\0')
  9.     {
  10.         
  11.         if (a[i] >= 'A' && a[i] <= 'Z' || a[i] >= 'a' && a[i] <= 'z')
  12.         {
  13.             a[i] = a[i] + 4;
  14.         }
  15.         i++;
  16.     }
  17.     printf("%s", a);
  18. }

编写程序实现通过键盘输入一个百分制成绩,并输出成绩等级A,B,C,D,E,其中,90分以上为A,80分~89分为B,70~79分为C
60~69分为D,60分以下为E
编程思路:scanf()获取键盘输入的单精度整型数,if()函数判断数值属于哪类等级,printf()函数输出

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     float a=0;
  5.     scanf("%f", &a);
  6.     if (a < 60 )
  7.     {
  8.         printf("成绩为:E");
  9.     }
  10.     else if (a >= 60 && a < 70)
  11.     {
  12.         printf("成绩为:D");
  13.     }
  14.     else if (a >= 70 && a < 80)
  15.     {
  16.         printf("成绩为:C");
  17.     }
  18.     else if (a >= 80 && a < 90)
  19.     {
  20.         printf("成绩为:B");
  21.     }
  22.     else if (a >= 90 && a < 100)
  23.     {
  24.         printf("成绩为:A");
  25.     }
  26.     return 0;
  27. }


编写一个函数计算两个整数差的绝对值,将差值返回调用函数,并用main()函数来调用该函数,
求2和-3两个数差的绝对值
编程思路:自定义绝对值函数newabs(),设置两个形参接收调用传值,取其最大值减去最小值作差,输出返回值即可

  1. #include<stdio.h>
  2. int newabs(int x, int y)
  3. {
  4.     if (x > y)
  5.     {
  6.         return x - y;
  7.     }
  8.     else
  9.         return y - x;
  10. }
  11. int main()
  12. {
  13.     printf("%d", newabs(2, -3));
  14.     return 0;
  15. }


输入一个字符,如果它是一个小写字母,则把它变成对应的大写字母;如果它是一个大写字母,则把它变成
对应的小写字母;其它字符不变
编程思路:scanf()接收键盘输入的字符,判断大小写字母,运用大小写字母的ASCII码差值转换即可

  1. #include <stdio.h>
  2. int main()
  3. {    
  4.     char a='0';
  5.     scanf("%c",&a);
  6.     if (a >= 'a' && a <= 'z')
  7.     {
  8.         a = a - 32;
  9.     }
  10.     else if (a >= 'A' && a <= 'Z')
  11.     {
  12.         a = a + 32;
  13.     }
  14.     
  15.     printf("%c\n", a);
  16.  return 0;
  17. }

已知数组a中的元素均为正整数,求a中偶数的个数和所有偶数的平均值。
编程思路:定义一组正整数数组,for循环遍历数组元素,分别解得偶数个数及偶数平均值

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a[10] = {1,2,3,4,5,6,7,8,9,10};
  5.     int i = 0,x=0,sum=0;
  6.     for(i=0;i<10;i++)
  7.     {
  8.         if (a[i] % 2 == 0)
  9.         {
  10.             x++;
  11.             sum = sum + a[i];
  12.         }
  13.         
  14.     }
  15.     printf("偶数个数:%d\n偶数平均值:%d", x, sum / x);
  16.     return 0;
  17. }

设计一个模拟计算器,要求从键盘输入两个数,再输入算术运算符,输出计算结果
scanf()接收键盘输入的数和运算符,switch()判断不同的算数运算符进行对应运算

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int a=0, b=0,sum=0;
  5.     char ope='0';
  6.     printf("依次输入两个数和一个运算符(逗号相隔)\n");
  7.     scanf("%d,%d,%c", &a, &b,&ope);
  8.     switch (ope)
  9.     {
  10.     case '+':
  11.         sum = a + b;
  12.         break;
  13.     case '-':
  14.         sum = a - b;
  15.         break;
  16.     case '*':
  17.         sum = a * b;
  18.         break;
  19.     case '/':
  20.         sum = a / b;
  21.         break;
  22.     default:
  23.         break;
  24.     }
  25.     printf("%d\n运算结果为:", sum);
  26.     return 0;
  27. }

编写一个程序,求解使1+2+3+...+n成立的最小的n值及1+2+3+...+n的结果,
编程思路:for循环计算n的阶乘与200比较大小即可
用do while 亦可

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int sum = 1, n = 0;
  5.     for (n = 0;sum < 200;)
  6.     {
  7.         n++;
  8.         sum = sum * n;
  9.     }
  10.     do {
  11.         n++;
  12.         sum = sum * n;
  13.     } while (sum < 200);
  14.     printf("n的值是:%d\nn阶乘的值是:%d", n, sum);
  15.  return 0;
  16. }

输入3个数,按从小到大的顺序排列
编程思路:定义4个变量,1个变量接收其他3个变量值暂存,if判断最大值,依次交换即可

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a, b, c,t;
  5.     printf("请输入3个数:\n");
  6.     scanf("%d%d%d", &a, &b, &c);
  7.         if (a > b) {
  8.             t = a;a = b;b = t;
  9.         }
  10.         if (a > c) {
  11.             t = a;a = c;c = t;
  12.         }
  13.         if (b > c) {
  14.             t = b;b = c;c = t;
  15.         }//三个数排序完成 
  16.         
  17.         printf("%d<=%d<=%d", a, b, c);
  18.     
  19.     return 0;
  20. }


编程将能被11整除且不包含重复数字的三位数进行输出,并记录它们的个数
编程思路:for函数循环遍历计算,限制条件在三位数内,
采用取模运算得到个十百位值,if函数判断若满足条件进行输出并记录个数

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int i,ge,shi,bai,n=0;
  5.     for (i = 100;i < 1000;i++)
  6.     {
  7.         if( i % 11 == 0)
  8.         {
  9.             ge = i % 10;
  10.             shi = i/10 % 10;
  11.             bai = i /100 ;
  12.             if (ge != shi && shi != bai && ge != bai)
  13.             {
  14.                 printf("%d\n", i);
  15.                 n++;
  16.             }
  17.         }
  18.     }printf("满足条件的数共有%d个", n);
  19.     return  0;
  20. }


从输入的5个字符串中找出最长的一个字符并输出
编程思路:创建一个二维数组,gets函数依次接收从键盘输入的字符串,strlen函数求得字符串长度
指针sp指向最长的字符串

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     char a[5][50], * sp;
  5.     int i;
  6.     for (i = 0;i < 5;i++)
  7.     {
  8.         gets(a[i]);
  9.     }
  10.     sp = a[0];
  11.     for (i = 1;i < 5;i++)
  12.     {
  13.         if (strlen(sp) < strlen(a[i]))
  14.         {
  15.             sp = a[i];
  16.         }
  17.         
  18.     }printf("\n最长的字符串是:%s", sp);
  19.     return 0;
  20. }

请输出26个大写字母的ASCII码值,要求3个数一行。
编程思路:for循环遍历大写字母,定义1个整型变量接收字符变量转换即可

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int  b,n=0;
  5.     char a;
  6.     for (a = 'A';a <= 'Z';a++)
  7.     {
  8.         b = a;
  9.         printf("%d ", b);
  10.         n++;
  11.         if (n == 3)
  12.         {
  13.             printf("\n");
  14.             n = 0;
  15.         }
  16.     }
  17.     return 0;
  18. }

通过键盘输入年月日,计算该日是这一年的第几天
编程思路:把平年的每一月的天数存入数组中,使用if语句进行判断年份是否为闰年
若为闰年且月份大于等于3,即输出结果需要进行加1操作

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int month_day[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
  5.     int i, year, month, day, * p;
  6.     p = month_day;
  7.     printf("请输入年-月-日:\n");
  8.     scanf("%d-%d-%d", &year, &month, &day);
  9.     for (i = 1;i < month;i++)
  10.     {
  11.         day = day + p[i];
  12.     }
  13.     if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
  14.     {
  15.         day++;
  16.     }
  17.     printf("该日是%d年的第%d天", year, day);
  18.     return 0;
  19. }

从键盘输入两个正整数,求他们相除的余数
编程思路:定义3个整数变量,scanf()函数接收键盘输入的两个正整数
一个变量接收输入整数相除的余数的值

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int x, y, z = 0;
  5.     scanf("%d%d", &x, &y);
  6.     z = (x % y);
  7.     printf("%d", z);
  8.     return 0;
  9. }

将一个数的数字倒过来所得到的新数称位原数的反序数。
如果一个数等于它的反序数,则这个数称位对称数。
求不超过1933的所有的对称数
编程思路:for()函数循环遍历从10到1933的数
通过取模运算取得不同位数的值,通过if()函数嵌套判断是否为对称数
(1)这个方法有点冗余

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int sum=0,t,ge,shi,bai,qian,i = 0;
  5.     for (i = 10;i <= 1993;i++)
  6.     {
  7.         if (i < 100
  8.         {
  9.           ge = i % 10;
  10.          shi = i / 10 % 10;
  11.         
  12.                if (ge == shi)
  13.             {
  14.             printf("%d ", i);
  15.             sum++;
  16.             }
  17.         }
  18.         if (i>=100 && i < 1000)
  19.         {
  20.             ge = i % 10;
  21.             shi = i / 10 % 10;
  22.             bai = i / 100 % 10;
  23.             t = bai;
  24.             bai = ge;
  25.             ge = t;
  26.             if (ge == bai)
  27.             {
  28.                 printf("%d ", i);
  29.                 sum++;
  30.             }
  31.         }
  32.         if (i >= 1000 && i < 1993)
  33.         {
  34.             ge = i % 10;
  35.             shi = i / 10 % 10;
  36.             bai = i / 100 % 10;
  37.             qian = i / 1000;
  38.             t = qian;
  39.             qian = ge;
  40.             ge = t;
  41.             t = bai;
  42.             bai = shi;
  43.             shi = t;
  44.             if (ge == qian && shi==bai)
  45.             {
  46.                 printf("%d ", i);
  47.                 sum++;
  48.             }
  49.         }
  50.         
  51.     }printf("满足条件的对称数有:%d个 ", sum);
  52.     return 0;
  53. }


(2)for循环+while循环 参考答案

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a, d, i, x,sum=0;
  5.     for (i = 10;i <= 1993;i++)
  6.     {
  7.         a = i;x = 0;
  8.         while (a != 0) //a最后被拆光等于0了跳出循环
  9.         {
  10.             d = a % 10; //每次把末尾的数拆下来
  11.             x = x * 10 + d;//把拆下来的数赋给x
  12.             a = a / 10;//把a值缩小10倍
  13.         }
  14.         if (x == i)//将原数值i和颠倒后的x对比
  15.         {
  16.             printf("%d\t", x);
  17.             sum++;
  18.         }
  19.     }printf("总计:%d\n",sum);
  20.     return 0;
  21. }


通过键盘输入数组元素,将该数组中的值按逆序重新存放后输出
编程思路:定义一个整型数组存放整型元素,for()循环依次遍历数组下标地址,
scanf()接收键盘将参数传至数组对应下标地址,while()函数使用左右指针交换数组元素

  1. #include <stdio.h>
  2. #define N 5
  3. int main()
  4. {
  5.     int a[N] = {0};
  6.     int i,x,t;
  7.     for (i = 0;i < N;i++)
  8.     {
  9.         scanf("%d", &a[i]);
  10.     }
  11.     for (i = 0;i <N/2;i++)
  12.     {
  13.         t = a[i];
  14.         a[i] = a[N - i - 1];
  15.         a[N - i - 1] = t;
  16.     }
  17.     for (i = 0;i < N;i++)
  18.     {
  19.         printf("%d ", a[i]);
  20.     }
  21.     return 0;
  22. }


某次比赛,有6个评委打分,对一名参赛者,6个评委给出的分数分别为
 {92,85,66,89,95,79},去掉一个最高分和一个最低分,求该参赛者的平均得分
编程思路:使用数组a存储分数,零最大值和最小值取a[0],依次和数组中的i+1个元素比较
0<=i<=5 ,数组元素总和减去max和min值后即可求平均数

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int a[6] = { 92,85,66,89,95,79 };
  5.     int max = a[0], min = a[0],i,sum=0;
  6.     float  aver;
  7.     for (i = 1;i <= 5;i++)
  8.     {
  9.         if (max < a[i])
  10.             max = a[i];
  11.         if (min > a[i])
  12.             min = a[i];
  13.     }
  14.     for (i = 0;i <= 5;i++)
  15.     {
  16.         sum = sum + a[i];
  17.     }
  18.     aver = (float)(sum - max - min) / 4;
  19.     printf("%.2f", aver);
  20.         return 0;
  21. }

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

闽ICP备14008679号