72.假设一维数组中存放互不相同的十个整数,要求根据输入的下标值,即可直接删除.

 1 #include <stdio.h>
 2
 3 int mydel (int *a, int n, int k)
 4 {
 5     int i;
 6
 7     for (i = k; i < n - 1; i++)
 8         *(a+i) = *(a+i+1);
 9     n--;
10
11     return n;
12 }
13
14 void myout (int *a, int n)
15 {
16     while (n > 0)
17     {
18         printf("%4d", *a);
19         a++,n--;
20     }
21     printf("\n");
22 }
23
24 void main (void)
25 {
26     int n, k, a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
27     printf("Input data: ");
28     scanf("%d", &k);
29     printf("Before delete: ");
30     myout(a, 10);
31     n = mydel(a, 10, k);
32     printf("After delete: ");
33     myout(a, n);
34 }

View Code

结果:

Input data: 3

Before delete:    1   2   3   4   5   6   7   8   9  10

After delete:    1   2   3   5   6   7   8   9  10

73.用选择法将10个数按由小到大的顺序进行排序.

 1 #include <stdio.h>
 2
 3 void mysort (int *p, int n)
 4 {
 5     int i, j, k, t;
 6
 7     for (i = 0; i < n - 1; i++)
 8     {
 9         k = i;
10         for (j = k + 1; j < n; j++)
11             if (*(p+k) > *(p+j))
12                 k = j;
13         t = *(p+i);
14         *(p+i) = *(p+k);
15         *(p+k) = t;
16     }
17 }
18
19 void myout (int *p, int n)
20 {
21     while (n > 0)
22     {
23         printf("%4d", *p);
24         p++,n--;
25     }
26     printf("\n");
27 }
28
29 void main (void)
30 {
31     int a[10] = {10, 9, 8, 2, 5, 1, 7, 3, 4, 6};
32
33     printf("Before sort: ");
34     myout(a, 10);
35     mysort(a, 10);
36     printf("After sort: ");
37     myout(a, 10);
38 }

View Code

结果:

Before sort:   10   9   8   2   5   1   7   3   4   6

After sort:    1   2   3   4   5   6   7   8   9  10

74.输入字符串,调用函数将字符倒置.

 1 #include <stdio.h>
 2
 3 void myfun (char *p);
 4
 5 void main (void)
 6 {
 7     char a[50];
 8     printf("Input data: ");
 9     gets(a);
10     myfun(a);
11     printf("After: ");
12     puts(a);
13 }
14
15 void myfun(char *p)
16 {
17     char *q = p, t;
18     while (*q != '\0')
19         q++;
20     q--;
21     while (p < q)
22     {
23         t = *p;
24         *p = *q;
25         *q = t;
26         p++;
27         q--;
28     }
29 }

View Code

结果:

Input data: qwertyuio

After: oiuytrewq

Mark:

  如果程序的开头加#include <string.h>,则可将程序段"while (*q != '\0') q++; q--;"简化成"q = strlen(p) - 1;".

75.用递归的方法求斐波那契级数,n阶斐波那契级数的公式为:

 1 #include <stdio.h>
 2
 3 long int myf (int n);
 4
 5 void main (void)
 6 {
 7     int n;
 8     long int x;
 9
10     printf("Input data: ");
11     scanf("%d", &n);
12     if (n < 0)
13         printf("Wrong!\n");
14     else
15     {
16         x = myf(n);
17         printf("%d阶斐波那契级数的值为: %ld\n", n, x);
18     }
19 }
20
21 long int myf (int n)
22 {
23     long int x;
24     if (n == 1 || n == 2)
25         x = 1;
26     else
27         x = myf(n-1) + myf(n-2);
28     return x;
29 }

View Code

结果:

Input data: 6

6阶斐波那契级数的值为: 8

76.假设有若干个字符串,它们分别由指针数组中的每一个元素(指针)指向.找出最小的字符串,并使指针数组的第一个元素指向它,而原来指向最小字符串的数组元素指向第一个字符串.

 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 void main (void)
 5 {
 6     int i, k;
 7     char *temp, *p[4];
 8
 9     p[0] = "Zhang";
10     p[1] = "Li";
11     p[2] = "Chen";
12     p[3] = "Wang";
13     k = 0;
14     for (i = 1; i < 4; i++)
15         if (strcmp(p[i], p[k]) < 0)
16             k = i;
17     temp = p[0];
18     p[0] = p[k];
19     p[k] = temp;
20     printf("最小的字符串为: %s\n", p[0]);
21 }

View Code

结果:

最小的字符串为: Chen

77.假设有若干个字符串,并指针数组中的每一个元素分别指向它们,将字符串按由小到大的顺序输出.

 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 void main (void)
 5 {
 6     int i, j;
 7     char *temp, *p[4];
 8
 9     p[0] = "Zhang";
10     p[1] = "Li";
11     p[2] = "Chen";
12     p[3] = "Wang";
13     for (i = 0; i < 3; i++)
14         for (j = 0; j < 3 - i; j++)
15             if (strcmp(p[j], p[j+1]) > 0)
16             {
17                 temp = p[j];
18                 p[j] = p[j+1];
19                 p[j+1] = temp;
20             }
21
22     printf("按从小到大排序后的字符串顺序为: \n");
23     for (i = 0; i < 4; i++)
24         printf("%s\n", p[i]);
25 }

View Code

结果:

按从小到大排序后的字符串顺序为:

Chen

Li

Wang

Zhang

78.用register说明整型变量只是向系统申请,将变量的值保留在CPU的寄存器中.由于寄存器有限,系统不一定把用户申请的所有变量都保留在寄存器中,当CPU中没有足够的寄存器时,编译程序把认为不适合存放在寄存器中的变量,自动按auto变量处理.

  由于寄存器变量的值保留在CPU的寄存器中,其访问速度比普通变量快,因此对频繁使用的变量可用register进行说明.

79.假设学生基本情况包括学号和多门课的成绩,计算某学生的平均成绩.

 1 #include <stdio.h>
 2
 3 #define N 6
 4
 5 struct ex
 6 {
 7     long num;
 8     float s[N];
 9 };
10
11 void main (void)
12 {
13     struct ex wang, *p;
14     float ave, sum = 0, x;
15     int i;
16
17     p = &wang;
18     printf("Input number: ");
19     scanf("%ld", &(p->num));
20     printf("Input score: ");
21     for (i = 0; i < N; i++)
22     {
23         scanf("%f", &x);
24         p->s[i] = x;
25     }
26     printf("Number : %ld\n", p->num);
27     for (i = 0; i < N; i++)
28     {
29         sum = sum + p->s[i];
30         printf("%8.1f", p->s[i]);
31     }
32     printf("\n");
33     ave = sum / N;
34     printf("Average : %.1f\n", ave);
35 }

View Code

结果:

Input number: 1000101

Input score: 89.5 90.0 79.0

Number: 1000101

89.5     90.0     79.0

Average: 86.2

80.malloc函数可以根据其实参的值分配若干字节的存储区,并返回该存储区的地址,若系统不能提供足够的内存单元,函数将返回(NULL).

  在语句"p=(int *)malloc(2);"中,函数的参数表示向系统申请2个字节的内存空间,用来存放整型值.由于函数调用成功后将返回一个无类型的指针,因此在malloc函数名之前先通过强制转换运算(int *)将指针的基类型转换为int型,再讲其值赋给基类型为int型的指针变量p.

  sizeof(int)用来计算本系统int类型应占内存字节数.

  free函数释放的空间必须是经动态函数开辟的.

转载于:https://www.cnblogs.com/zero-jh/p/5031290.html

C语言成长学习题(十六)相关推荐

  1. C语言编程>第十六周 ② 函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。

    例题:函数fun的功能是:统计长整数test的各位上出现数字5.6.7的次数,并通过外部(全局)变量sum5.sum6.sum7返回主函数. 例如:当test=89431676时,结果应该为:sum5 ...

  2. C语言编程>第二十六周 ⑥ 请补充fun函数,该函数的功能是:按 “0”到 “9”统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。

    例题:请补充fun函数,该函数的功能是:按 "0"到 "9"统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中.注意:不能使用字符串库函数. ...

  3. C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中

    例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...

  4. C语言编程>第十六周 ⑦ s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回。

    例题:s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回.每个单词之间都由空格隔开,并且字符串s开始 ...

  5. C语言编程>第二十六周 ① 函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。

    例题:函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换.形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动. 例如,若a所指数组中的数据依次为:11 22 33 ...

  6. 文远知行杯广东工业大学第十六届程序设计竞赛ABEFHI(记录)

    文远知行杯广东工业大学第十六届程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCPC/区域赛校队选手,巩固经典专 ...

  7. 文远知行杯广东工业大学第十六届程序设计竞赛(题解)

    文远知行杯广东工业大学第十六届程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A:思维题 #include<bits/stdc++.h> usi ...

  8. 【C语言简单说】十六:do...while循环

    ** ㄟ(▔^▔ㄟ) (╯▔^▔)╯** 今天差点忘记更了=.=.. 今天我们来说我们的do-while循环,其实这个循环和我们的while循环很像,区别就在于我们现在要学的这个循环是先执行一次循环, ...

  9. 【C语言】案例四十六 点名册(一)

    案例描述 案例要求编程实现一份基于指针的点名册,记录学生的姓名,并能实现学生姓名的输出:点名册中的学生姓名由多个字符组成,点名册中包含不止一名学生. 案例分析 将每个学生视为一个字符数组,则点名册中的 ...

最新文章

  1. 从信息时代到智力时代的药物发现
  2. python之人脸识别
  3. java final域_final域_鲲鹏通用_TaiShan服务器代码移植参考_Java同步原语_华为云
  4. SpringBoot_数据访问-整合MyBatis(二)-注解版MyBatis
  5. jdbc Template 介绍和 spring 链接数据源的四种方式
  6. 微博polg什么意思_成都网站代运营是什么意思?-建站
  7. 2019.04.24笔记
  8. 这可能是最好的RxJava 2.x 入门教程学习系列
  9. Python 中星号的本质及其使用方式
  10. java calendar类_Java世界最常用的工具类库
  11. java 微信导航栏_微信小程序教程系列之设置标题栏和导航栏
  12. paip.输入法编程----一级汉字1000个
  13. Linux安装SSH
  14. 服务器接口响应监控,监控服务器端口运行状况软件
  15. Android MediaRecorder录制视频
  16. 中国十大悍匪排行榜,屌爆了!!!!
  17. mac的 tr命令_tr命令 - Holy_Shit - 博客园
  18. groovy_流利的Groovy
  19. 我的世界java村民繁殖_教程/村民养殖 - Minecraft Wiki,最详细的官方我的世界百科...
  20. ABAP 企业微信ASE 加密算法

热门文章

  1. 函数 —— strtok() 例如:按照字符拆分字符串,放入新定义的数组中;按照字符拆分字符串,放入原先的数组中
  2. java队列queue的我觉得很好的使用方式
  3. 学习javascript数据结构(三)——集合
  4. 在Ubuntu中永久添加DNS
  5. 机器学习资料推荐 URL
  6. BZOJ3534:[SDOI2014]重建(矩阵树定理)
  7. 利用jmap和MAT等工具查看JVM运行时堆内存
  8. JavaScript 编程精解 中文第三版 十一、异步编程
  9. ckeditor_4.5.10_full,ckfinder_aspnet_2.6.2,插件使用
  10. 16-01-25---Servlet复习笔记(01)