C语言成长学习题(十六)
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语言成长学习题(十六)相关推荐
- C语言编程>第十六周 ② 函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。
例题:函数fun的功能是:统计长整数test的各位上出现数字5.6.7的次数,并通过外部(全局)变量sum5.sum6.sum7返回主函数. 例如:当test=89431676时,结果应该为:sum5 ...
- C语言编程>第二十六周 ⑥ 请补充fun函数,该函数的功能是:按 “0”到 “9”统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。
例题:请补充fun函数,该函数的功能是:按 "0"到 "9"统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中.注意:不能使用字符串库函数. ...
- C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中
例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...
- C语言编程>第十六周 ⑦ s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回。
例题:s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回.每个单词之间都由空格隔开,并且字符串s开始 ...
- C语言编程>第二十六周 ① 函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。
例题:函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换.形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动. 例如,若a所指数组中的数据依次为:11 22 33 ...
- 文远知行杯广东工业大学第十六届程序设计竞赛ABEFHI(记录)
文远知行杯广东工业大学第十六届程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCPC/区域赛校队选手,巩固经典专 ...
- 文远知行杯广东工业大学第十六届程序设计竞赛(题解)
文远知行杯广东工业大学第十六届程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A:思维题 #include<bits/stdc++.h> usi ...
- 【C语言简单说】十六:do...while循环
** ㄟ(▔^▔ㄟ) (╯▔^▔)╯** 今天差点忘记更了=.=.. 今天我们来说我们的do-while循环,其实这个循环和我们的while循环很像,区别就在于我们现在要学的这个循环是先执行一次循环, ...
- 【C语言】案例四十六 点名册(一)
案例描述 案例要求编程实现一份基于指针的点名册,记录学生的姓名,并能实现学生姓名的输出:点名册中的学生姓名由多个字符组成,点名册中包含不止一名学生. 案例分析 将每个学生视为一个字符数组,则点名册中的 ...
最新文章
- 从信息时代到智力时代的药物发现
- python之人脸识别
- java final域_final域_鲲鹏通用_TaiShan服务器代码移植参考_Java同步原语_华为云
- SpringBoot_数据访问-整合MyBatis(二)-注解版MyBatis
- jdbc Template 介绍和 spring 链接数据源的四种方式
- 微博polg什么意思_成都网站代运营是什么意思?-建站
- 2019.04.24笔记
- 这可能是最好的RxJava 2.x 入门教程学习系列
- Python 中星号的本质及其使用方式
- java calendar类_Java世界最常用的工具类库
- java 微信导航栏_微信小程序教程系列之设置标题栏和导航栏
- paip.输入法编程----一级汉字1000个
- Linux安装SSH
- 服务器接口响应监控,监控服务器端口运行状况软件
- Android MediaRecorder录制视频
- 中国十大悍匪排行榜,屌爆了!!!!
- mac的 tr命令_tr命令 - Holy_Shit - 博客园
- groovy_流利的Groovy
- 我的世界java村民繁殖_教程/村民养殖 - Minecraft Wiki,最详细的官方我的世界百科...
- ABAP 企业微信ASE 加密算法
热门文章
- 函数 —— strtok() 例如:按照字符拆分字符串,放入新定义的数组中;按照字符拆分字符串,放入原先的数组中
- java队列queue的我觉得很好的使用方式
- 学习javascript数据结构(三)——集合
- 在Ubuntu中永久添加DNS
- 机器学习资料推荐 URL
- BZOJ3534:[SDOI2014]重建(矩阵树定理)
- 利用jmap和MAT等工具查看JVM运行时堆内存
- JavaScript 编程精解 中文第三版 十一、异步编程
- ckeditor_4.5.10_full,ckfinder_aspnet_2.6.2,插件使用
- 16-01-25---Servlet复习笔记(01)