C程序设计(第五版) 谭浩强 著
C程序设计,本专栏所有源代码全部在DEV-C++5.11和VS2019这两个IDE(集成开发环境)下编译通过,没有任何错误和任何警告。
AKK188888881
这个作者很懒,什么都没留下…
展开
-
11.从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中。再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出。
从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中。再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出。#include<stdio.h>int main(){ int i,flag; char str[80],c; FILE *fp; fp=fopen("text.dat","w"); flag=1; ...原创 2020-04-24 15:02:20 · 5826 阅读 · 0 评论 -
10.从第9题的“职工工资文件”中删去一个职工的数据,再存回原文件。
从第9题的“职工工资文件”中删去一个职工的数据,再存回原文件。#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE 3struct Wage{ char name[10]; int salary;}emp2[SIZE];void save2(){ F...原创 2020-04-24 14:56:01 · 998 阅读 · 0 评论 -
9.有一磁盘文件employee,内存放职工的数据。每个职工的数据包括职工姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文件。
有一磁盘文件employee,内存放职工的数据。每个职工的数据包括职工姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文件。#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE 3struct Emplo...原创 2020-04-24 14:51:34 · 5983 阅读 · 0 评论 -
8.将第7题结果仍存入原有的stu_sort文件而不另建立新文件。
将第7题结果仍存入原有的stu_sort文件而不另建立新文件。#include<stdio.h>#include<stdlib.h>#define SIZE 5struct Student_type{ int num; char name[10]; float score1; float score2; float score3; float av...原创 2020-04-24 14:42:45 · 830 阅读 · 0 评论 -
7.将第6题已排序的学生成绩文件进行插入处理。插入一个学生的3门课程成绩,程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。
将第6题已排序的学生成绩文件进行插入处理。插入一个学生的3门课程成绩,程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。#include<stdio.h>#include<stdlib.h>#define SIZE 5struct Student_type{ int num; char name[10]; float sc...原创 2020-04-24 14:36:40 · 2787 阅读 · 0 评论 -
6.将第5题stud文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件stu_sort中。
将第5题stud文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件stu_sort中。#include<stdio.h>#include<stdlib.h>#define SIZE 5struct Student_type{ int num; char name[10]; float score1; float score2; ...原创 2020-04-24 14:27:05 · 7757 阅读 · 0 评论 -
5.有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。
有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。//类似于例10.4 #include<stdio.h>#include<stdlib.h>#define SIZE 5struct Student_type{ int num; char nam...原创 2020-04-24 14:20:47 · 23093 阅读 · 3 评论 -
4.有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中去。
有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中去。#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp; char a[100]; if((fp=fopen("A.txt","r"))==NULL)//打开test1文件 ...原创 2020-04-24 14:14:07 · 6115 阅读 · 0 评论 -
3.从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存,输入的字符串以“!“结束。
从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存,输入的字符串以"!"结束。//类似于例10.1 #include <stdio.h>#include <stdlib.h>int main(){ FILE *fp; char ch,filename[10]; printf("please input the n...原创 2020-04-24 14:04:46 · 7646 阅读 · 0 评论 -
【例10.6】在磁盘文件上存有10个学生的数据。要求将第1,3,5,7,9个学生数据输入计算机,并在屏幕上显示出来。
【例10.6】在磁盘文件上存有10个学生的数据。要求将第1,3,5,7,9个学生数据输入计算机,并在屏幕上显示出来。#include<stdio.h>#include<stdlib.h>struct Student_type{ char name[10]; int num; int age; char addr[15];}stud[10];int m...转载 2020-04-22 12:03:07 · 2393 阅读 · 0 评论 -
【例10.5】有一个磁盘文件,内有一些信息。要求第1次将它的内容显示在屏幕上,第2次把它复制到另一个文件上。
【例10.5】有一个磁盘文件,内有一些信息。要求第1次将它的内容显示在屏幕上,第2次把它复制到另一个文件上。#include<stdio.h>int main(){ FILE *fp1,*fp2; char ch; fp1=fopen("file1.dat","r"); fp2=fopen("file2.dat","w"); ch=getc(fp1); whil...转载 2020-04-22 11:58:38 · 987 阅读 · 0 评论 -
【例10.4load函数】从键盘输入数据,如果已有的数据以二进制形式存储在一个磁盘文件stu_list中,要求从其中读入数据并输出到stu.dat文件中,可以编写一个如下的load函数
从键盘输入数据,如果已有的数据以二进制形式存储在一个磁盘文件stu_list中,要求从其中读入数据并输出到stu.dat文件中,可以编写一个如下的load函数,从磁盘文件stu_list中读二进制数据,并存放在stud数组中。例题10.4load函数:#include<stdio.h>#define SIZE 10struct Student_type{ char na...原创 2020-04-22 11:45:33 · 1110 阅读 · 0 评论 -
【例10.4】从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。
从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。并验证stu.dat是否已存在此数据(再编写一个程序从stu.dat文件中读入数据,然后在屏幕上输出)例10.4把10个学生数据读入到磁盘里:#include<stdio.h>#define SIZE 10struct Student_type{ char name[10]; int num; int a...转载 2020-04-22 11:26:24 · 5684 阅读 · 0 评论 -
【例10.3】从键盘输入若干个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。
【例10.3】从键盘输入若干个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。例10.3写入字符串并输出:#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ FILE *fp; char str[3][10],temp[10]; int ...转载 2020-04-22 11:17:36 · 2170 阅读 · 0 评论 -
【例10.2】将一个磁盘文件中的信息复制到另一个磁盘文件中。今要求将上例建立的file1.dat文件中的内容复制到另一个磁盘文件file2.dat中。
将一个磁盘文件中的信息复制到另一个磁盘文件中。今要求将上例建立的file1.dat文件中的内容复制到另一个磁盘文件file2.dat中。#include<stdio.h>#include<stdlib.h>int main(){ FILE *in,*out; char ch,infile[10],outfile[10]; printf("输入读入文件的名字:...转载 2020-04-22 11:08:57 · 2738 阅读 · 0 评论 -
【例10.1】从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“#”为止。从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“#”为止。
【例10.1】从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“#”为止。#include<stdio.h>#include<stdlib.h>int main(){ FILE *fp; char ch,filename[10]; printf("请输入所用的文件名:"); scanf("%s",filename); getchar();...转载 2020-04-22 11:03:09 · 3196 阅读 · 6 评论 -
删除链表a中与链表b具有相同年龄的结点,并把删除后得到的新的链表a与链表b合并,输出合并后的链表。
链表a中删除与链表b具有相同年龄的结点,并把删除后得到的新的链表a和链表b合并后得到的链表a。方法:#include <stdio.h>#include <stdlib.h>//声明结构体struct Studentstruct Student{ int num; ...原创 2020-04-21 18:05:42 · 236 阅读 · 0 评论 -
建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。方法:(链表统一用动态分配)#include <stdio.h>#include <stdlib.h>//声明结构体struct Studentstruct Student{ ...原创 2020-04-19 22:27:02 · 5066 阅读 · 0 评论 -
有两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同学号的那些结点。
有两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同学号的那些结点。方法:(链表统一用动态分配)#include <stdio.h>#include <stdlib.h>//声明结构体struct Studentstruct Student{ int nu...原创 2020-04-19 22:25:11 · 1854 阅读 · 0 评论 -
已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。方法:(链表统一用动态分配)#include <stdio.h>#include <stdlib.h>//声明结构体struct Studentstruct Student{ int...原创 2020-04-19 22:23:41 · 7100 阅读 · 0 评论 -
综合本章例9.9(建立链表的函数creat)、例9.10(输出链表的函数print)和本章习题第7题(删除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数,先后调用这些
综合本章例9.9(建立链表的函数creat)、例9.10(输出链表的函数print)和本章习题第7题(删除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数,先后调用这些函数。用以上5个函数组成一个程序,实现链表的建立、输出、删除和插入,在主函数中指定需要删除和插入的结点的数据。方法一:#include <stdio.h>#include <s...转载 2020-04-18 18:32:24 · 2810 阅读 · 0 评论 -
写一个函数insert,用来向一个动态链表插入节点。
写一个函数insert,用来向一个动态链表插入节点。方法一:#include <stdio.h>#include <stdlib.h>struct Student{ //声明结构体(双向链表结构体) int num; float score; struct Student *prev; struct Stude...原创 2020-04-18 17:53:45 · 4060 阅读 · 0 评论 -
在第9章例9.9和例9.10的基础上,写一个函数del,用来删除动态链表中指定的结点。
在第9章例9.9和例9.10的基础上,写一个函数del,用来删除动态链表中指定的结点。方法一:(删除成绩为99的学生)#include <stdio.h>#include <stdlib.h>struct Student{ int num; float score; struct Student *prev; ...转载 2020-04-17 17:39:24 · 2278 阅读 · 2 评论 -
有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。方法一:#include <stdio.h>struct student{ int num; char name[10]; float score[3]; float...原创 2020-04-11 17:51:12 · 12793 阅读 · 1 评论 -
口袋中有红、黄、蓝、白、黑5种颜色的球若干个,每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。
口袋中有红、黄、蓝、白、黑5种颜色的球若干个,每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。方法:(枚举)#include<stdio.h>int main(){ enum Color{red,yellow,blue,white,black}; enum Color i,j,k,pri; int n,loop; n=0; for(...转载 2020-04-09 22:11:31 · 5406 阅读 · 0 评论 -
有若干个人员的数据,其中有学生和老师。学生的数据中包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。要求用同一个表格来处理。
有若干个人员的数据,其中有学生和老师。学生的数据中包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。要求用同一个表格来处理。方法:(在结构体里定义一个共用体变量,再根据job判断)#include<stdio.h>struct{ int num; char name[10]; char sex; char job; union {...转载 2020-04-09 22:06:25 · 9677 阅读 · 9 评论 -
写一函数建立一个有3名学生数据的单向动态链表和输出链表的函数print,把它们合起来加上一个主函数,组成一个程序
写一函数建立一个有3名学生数据的单向动态链表和输出链表的函数print,把它们合起来加上一个主函数,组成一个程序代码:#include<stdio.h>#include<stdlib.h>#define LEN sizeof(struct Student)struct Student{ long num; float score; struct Stu...转载 2020-04-09 22:00:56 · 2567 阅读 · 0 评论 -
有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)
有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)代码:#include<stdio.h>#define N 3struct Student{ int num; char name[20]; float score[3]; float aver;};int main(){ vo...转载 2020-04-09 21:56:37 · 7512 阅读 · 0 评论 -
有3个学生的信息,放在结构体数组中,要求输出全部学生的信息。
有3个学生的信息,放在结构体数组中,要求输出全部学生的信息。方法:(用指向结构体数组的指针处理)#include<stdio.h>struct Student{ int num; char name[20]; char sex; int age;};struct Student stu[3]={{10101,"Li Lin",'M',18},{10102,"Zha...转载 2020-04-09 21:50:19 · 8088 阅读 · 0 评论 -
写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char *p1, char *p2); 设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返
写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char *p1, char *p2); 设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0;若s1!=s2,返回它们二者第1个不同字符的ASCII码差值(如"BOY"与"BAD",第2个字母不同,"O"与"A"之差为79-65=14)。如果s1>s2,则输出正值;如果s1&l...原创 2020-04-06 21:52:14 · 5700 阅读 · 0 评论 -
输入一个字符串,内有数字和非数字字符,例如: A123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]……
输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。方法一:#include <stdio.h>#include <math.h>void output(char *s, int n)...转载 2020-04-05 21:34:09 · 8704 阅读 · 1 评论 -
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图8.43。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图8.43。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。方法一:#include <stdio.h>void sort(int *s, int n, int x); //定义排序函数int main(){ int n[10], *p, m; for (p=n, pr...转载 2020-04-01 16:25:40 · 16976 阅读 · 0 评论 -
有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。方法:用指针指向malloc开辟的动态数组#include <stdio.h>#include <stdlib.h>int main(){ int i,n,cc,ff; int *people; people=(int*)...转载 2020-03-31 21:04:47 · 13078 阅读 · 2 评论 -
有一个指针数组,其元素分别指向一个整型数组的元素,用指向指针数据的指针变量,输出整型数组各元素的值。并在此基础上实现对各数排序。
有一个指针数组,其元素分别指向一个整型数组的元素,用指向指针数据的指针变量,输出整型数组各元素的值。并在此基础上实现对各数排序。#include<stdio.h>int main(){ void sort(int x[],int n); int a[5]={1,3,5,7,9}; int *num[5]={&a[0],&a[1],&a[2],&a...原创 2020-03-29 18:01:44 · 2287 阅读 · 0 评论 -
编写一个求定积分的通用函数,用它分别求以下5个函数的定积分:∫ab(1+x)dx,∫ab (2x+3)dx,∫ab(ex+1)dx,∫ab(1+x)2dx,∫abx3dx。其中a,b为积分上下限...
编写一个求定积分的通用函数,用它分别求以下5个函数的定积分:∫ab (1+x)dx , ∫ab (2x+3)dx , ∫ab (ex+1)dx ,∫ab (1+x)2dx , ∫ab x3dx 。其中,a,b为积分上下限,数值待定。方法一:指向函数的指针(数学公式)#include<stdio.h>#include<math.h>#define e 2.71828...原创 2020-03-28 19:44:42 · 4000 阅读 · 0 评论 -
输入一个字符串并逆序输出
方法一:只用一个字符串#include<stdio.h>#include<string.h> void reverse(char a[]);int main(){ char a[300]=""; gets(a); reverse(a); puts(a); return 0;}void reverse(char a[]){ int i,j; ch...原创 2020-03-26 20:48:15 · 5630 阅读 · 0 评论 -
输出二维数组任一行任一列元素的值。
方法一:指针变量#include<stdio.h>int main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,m=4,i,j; p=a[0];//或者p=&a[0][0]; printf("please enter row and colum:"); scanf("%d,%d",&i...原创 2020-03-26 20:15:35 · 2866 阅读 · 0 评论 -
C语言 求n阶矩阵 主对角线之和 反对角线之和 主对角线之和和反对角之和的总和
#include<stdio.h>int main(){ int i,j,n,sum1=0,sum2=0,sum=0; int a[20][20]; printf("请输入矩阵大小:"); scanf("%d",&n); printf("请输入一个N*N的整数矩阵a[N][N](N<=20)\n"); for(i=0;i<n;i++) {...原创 2020-03-20 01:45:21 · 9822 阅读 · 2 评论 -
写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。
方法一(输出的字符前后无空格):#include <stdio.h>#include <string.h>char ycopy(char x[], char y[]); //定义复制函数int main(){ char a[20]="", b[20]=""; //字符串初始化 gets(a); ...转载 2020-03-18 20:39:14 · 8311 阅读 · 0 评论 -
有一个字符串,内有若干字符,现输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。
方法一:用两个数组实现file1.c(文件1):#include<stdio.h>int main(){ extern void enter_string(char str1[]); extern void delete_string(char str1[],char str2[],char ch); extern void print_string(char str2...原创 2020-03-16 18:40:31 · 3723 阅读 · 0 评论