C语言
C语言笔记
chen_hui.778
学习就像在黑房子里面洗衣服,你永远不知道洗的有多干净,可以做的就是一直洗,等到天亮之后,你的衣服就干净了。
展开
-
C++和C语言面试问题(持续更新)
第一部分:计算机基础1.C/C++内存有哪几种类型?C中,内存分为5个区,堆,栈,程序代码区,全局/静态存储区和常量存储区。此外,C++中有自由存储区一说。全局变量和static变量会初始化为零,而堆和栈上变量是随机的不是确定的。2.C/C++堆和栈的区别?①堆存放动态分配的对象—程序运行时分配的对象,比如局部变量,其生存期由程序控制;②栈用来保存定义在函数内的非static对象,仅在...原创 2020-02-28 18:31:26 · 344 阅读 · 0 评论 -
C语言之 copyfile应用设计
总结:main(int argc,char *argv[])argc :表示输入给main函数的参数的个数argv:argv[0],表示传给main函数的第一个参数,也就是控制命令argv[1]: 表示传给,main()函数的第二个参数,也就是源文件argv[2]:表示传给,main函数第三个参数,也就是目标文件#include <stdio.h>#include &...原创 2020-02-02 10:04:59 · 646 阅读 · 0 评论 -
位运算笔记
与& (负数求与时,采用补码方式求与)或 |异或 ^ (相同为0,不同为1)使用异或交换a ,b两值a = a^b;b = a^b;a = b^a;#include <stdio.h>int main(){ char ch; printf("请输入一个字符:\n"); ch = getchar(); getchar();//去...原创 2020-02-01 21:23:31 · 110 阅读 · 0 评论 -
C语言的文件笔记
文件合成器:将两个文件以二进制的形式读出,再将其写入到新文件中。#include <stdio.h>#include <stdlib.h>int main(){ FILE *f_pic,*f_file,*f_finish; char pic_name[20],file_name[20],file_finish[20]; char ch;...原创 2020-02-01 21:08:32 · 228 阅读 · 0 评论 -
C语言刷题(35):输入一连串数字和空格,计算数字之和
#include <stdio.h>void main(){ int i; char a[100]; int sum = 0; printf("请输入一连串数字和空格:"); for(i=0;(a[i]=getchar())!='\n';i++) { if(a[i]>='0'&&a[i]<=...原创 2020-01-21 21:33:39 · 800 阅读 · 0 评论 -
C语言:链表总结
1.什么是静态链表?所有节点都是在程序中建立的,不是临时开辟的,也不能用完后始放,这种链表称之为静态链表。例下:#include <stdio.h>struct Student{ int num; float score; struct Student *next;};void main(){ struct Student a,b,c,*...原创 2020-01-20 16:05:54 · 319 阅读 · 0 评论 -
C语言刷题(34):用结构体变量和结构体变量的指针作函数参数,有n个结构体,内含学生号,姓名和三门课程成绩。要求求出平均成绩最高的学生的所有信息
#include <stdio.h>struct Student{ long num; char name[20]; float score[3]; float aver;};void main(){ void input(struct Student stu[]);//实现输入n个结构体的内容 struct Student...原创 2020-01-19 21:57:01 · 1587 阅读 · 0 评论 -
三种方式输出结构体
#include <stdio.h>struct Student{ long num; char *name; float score;};void main(){ struct Student stu; struct Student *p; p = &stu; stu.num = 10000; stu....原创 2020-01-19 20:27:34 · 16649 阅读 · 1 评论 -
C语言刷题33:用结构体数组存储学生学号,成绩,姓名,按照分数大小顺序排序,并输出所有成绩
小憨总结:结构体按照某一项数据的大小进行排序时,需要交换的是结构体,而不是某一项#include <stdio.h>struct Student{ int num; char name[20]; float score;};int main(){ struct Student stu[5] = {{101,"Mike",89.23},{102,...原创 2020-01-19 18:19:31 · 12289 阅读 · 2 评论 -
C语言结构体数组:投票系统
#include <stdio.h>#include <string.h>struct Person { char name[20]; int num;};void main(){ struct Person leader[3] = {"张三",0,"李四",0,"王五",0}; char leader_name[20]; i...原创 2020-01-19 17:42:02 · 3299 阅读 · 0 评论 -
C语言刷题(32):利用指针数组实现在主函数中输入5个等长的字符串。用另一函数对它们进行排序。
小憨总结:若指针指向两个字符串,则交换时,直接交换指针,而不是指针中的内容,即重新指向,指针中存放的是字符串第一个元素的首地址。一般定义了二维数组,就要定义,指向一维数组的指针。#include <stdio.h>#include <string.h>void main(){ void print(char (*q)[10]); void sor...原创 2020-01-18 11:48:11 · 4138 阅读 · 4 评论 -
C语言刷题(31):将一个5x5的矩阵中的最大元素放在中心,4个角分别放在4个最小元素,(顺序从左到右,从上到下从小到大存放)
小憨总结:去除二维数组中一个数据时,不是i!=x&&!=j ,而是(!(ix&&jy))#include "stdio.h"void main(){ void solve(int (*p)[5]); int a[5][5]; int i,j; printf("input array:\n"); for(i=0;i&...原创 2020-01-17 22:47:04 · 2207 阅读 · 2 评论 -
C语言刷题(30):利用指针传递二维数组变量名,写一函数,将一个3x3的整型矩阵转置
小憨笔记:①实参做二维数组传递首地址时,形参定义为指向数组的指针,int (*p)[n]#include "stdio.h"void main(){ void reverse(int (*p)[3]); int a[3][3]; int i,j; printf("input array:\n"); for(i=0;i<3;i++) {...原创 2020-01-17 20:51:15 · 2440 阅读 · 2 评论 -
C语言刷题(29):输入一行文字,找出其中大写字母,小写字母,空格,数字,以及其他字符各有多少?
小憨笔记:①在输入包含空格字符串的时候,不可使用scanf();只能使用while((c[i]=getchar()!=’\n’) i++; 来输入。②在给char类型的数组,赋值时,一定要在数组的最后附上’\0’,否则输出时,数组的剩下部分会出现乱码#include <stdio.h>#include <string.h>void main(){ v...原创 2020-01-17 18:10:17 · 2462 阅读 · 0 评论 -
C语言刷题(28):有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位
算法思想:1.给每一个人编号(用数组的形式),即每一数组有一个值2.循环遍历(直到当前只剩下1个不为0的值,退出循环):用变量k(1~3)循环递增,当变量递增为k=3时,令该数组值为03.输出不为0编号#include <stdio.h>void main(){ void solve(int *arr,int n); void print(int *arr,...原创 2020-01-17 16:26:51 · 838 阅读 · 0 评论 -
C语言刷题(27):有n个数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数
#include <stdio.h>void main(){ void print(int *a); void reverse(int *arr,int n,int m); int n,i,m=4; int a[10]; printf("input N:"); scanf("%d",&n); printf("please input...原创 2020-01-17 14:35:22 · 320 阅读 · 0 评论 -
C语言刷题(26):输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:①输入10个数②处理函数3.输出10个数
#include <stdio.h>void main(){ void input(int *arr); void tackcle(int *arr); void print(int *arr); int a[10]; printf("input 10 numbers:\n"); input(a); tackcle(a); ...原创 2020-01-17 12:20:14 · 1776 阅读 · 0 评论 -
C语言刷题(25):指针数组,指向指针的指针综合运用,题:输入3个字符串,按由小到大的顺序输出
#include <stdio.h>#include <string.h>void main(){ void sort(char *p,char *q,char *r); void print(char **a); char a[3][30]; char *str[3];//数组中指向有三个元素的指针 int i; fo...原创 2020-01-17 10:43:21 · 1151 阅读 · 0 评论 -
C语言刷题(24):使用指针实现的输入三个整数,按由小到大的顺序输出
#include <stdio.h>void main(){ void sort(int *p); int a[3]; int i; printf("please input there integer:"); scanf("%d %d %d",a,a+1,a+2); sort(a); printf("Sorted:");...原创 2020-01-17 09:36:32 · 3040 阅读 · 0 评论 -
C语言刷题(23):指针的指针,使用冒泡排序,使用指针传值,进行排序
#include <stdio.h>void main(){ int *sort(int *p,int n); int a[5]={9,2,12,4,5}; int *num[5]; int *p; int i; for(i =0 ;i<5;i++) { num[i] = &a[i]; }...原创 2020-01-17 07:26:51 · 410 阅读 · 0 评论 -
C语言刷题(22):指针数组,将英文书籍名称排序,每一个指针数组中保存一个字符串
//#include <stdio.h>#include <string.h>void main(){ void sort(char * name[],int n); void print(char * name[],int n); char * name[]={"Follow me","BASIC","The Great Wall","FO...原创 2020-01-17 07:24:26 · 831 阅读 · 0 评论 -
C语言刷题(21):指针篇,使用指针找出其中不及格的的课程的学生以及学号。
#include <stdio.h>void main(){ float *research(float (*p)[4]); float score[3][4]={{55,66,77,88},{96,96,97,68},{89,46,91,82}}; float *p,*q; int i; for(i=0;i<3;i++) {...原创 2020-01-17 07:22:35 · 1632 阅读 · 0 评论 -
C语言刷题(20):二维数组与指针之间的关系,查找一门以上课程不及格学生,输出他们的全部课程的成绩。
#include <stdio.h>void main(){ void search(float (*p)[4],int n); float score[3][4]={{67,45,78,55},{66,89,98,77},{46,77,88,99}}; search(score,3);}void search(float (*p)[4],int n)...原创 2020-01-16 10:53:13 · 690 阅读 · 0 评论 -
C语言刷题(19),指针篇:指向数组的指针做函数的参数
用指针变量做形参,以接受实参数组名传递来的地址。可以有两种方法:①用指向变量的指针变量②用指向一维数组的指针变量#include <stdio.h>void main(){ void average(float *p,int n); void search(float (*p)[4],int n); float score[3][4]={{1,2,3,...原创 2020-01-15 21:41:10 · 609 阅读 · 0 评论 -
C语言刷题(18)指针篇:利用指针实现冒泡排序
冒泡排序个人总结:给定数组a[n].for循环第一趟:0到n-2;(正)第二趟: 1到n-1 (逆)#include <stdio.h>void main(){ void sort(int *p,int n); int i; int a[10]; printf("please input array[10]:\n"); for(...原创 2020-01-15 20:39:32 · 785 阅读 · 0 评论 -
C语言刷题(17):指针篇,使用指针实现数组逆置
#include <stdio.h>void main(){ void reverse(int *a,int n); int *p; int a[10]={0,1,2,3,4,5,6,7,8,9}; reverse(a,10); for(p = a;p<a+10;p++) { printf("%d ",*p);...原创 2020-01-15 20:11:57 · 5715 阅读 · 0 评论 -
C语言刷题(17):用指针变量作为函数参数传值,对输入的两个整数按大小顺序输出
#include <stdio.h>void main(void){ void swap(int *a,int *b); int a ,b ,*p,*q; p = &a; q = &b; printf("input a and b:"); scanf("%d %d",&a,&b); if(*p&...原创 2020-01-15 19:35:08 · 5759 阅读 · 1 评论 -
C语言刷题(16):使用函数指针,实现一个函数调用加减,最大值函数运算
#include <stdio.h>int process(int x,int y,int (*p)()) //int (*p)()为函数指针{ int max(int x,int y); int sub(int x,int y); int add(int x,int y); if(p == max) { return max...原创 2020-01-15 14:19:41 · 368 阅读 · 0 评论 -
C语言刷题(15):给定一个数组,输入列和行,输出对应值
数组为四行四列,当初输入不合法时,重新输入#include <stdio.h>void main(){ int i,j; int a[4][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}}; int (*p)[4] ; //定义一个数组指针 p = a; printf("i="); ...原创 2020-01-15 13:57:21 · 999 阅读 · 0 评论 -
C语言总结:用三种方式(下标,数组地址,指针)输出数组
#include <stdio.h>void main(){ int a[10] = {9,8,7,6,5,4,3,2,1,0}; int *p; p = a; int i; printf("数组下标输出数组a:"); for(i=0;i<10;i++) { printf("%d ",a[i]); ...原创 2020-01-15 08:25:50 · 3285 阅读 · 0 评论 -
C语言刷题(14):编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格和其他字符的个数
#include <stdio.h>#include <string.h>int lett=0,dig=0,spac=0,oth=0;void main(){ void count(char a[]); char a[100]; puts("input string:"); gets(a); count(a); pri...原创 2020-01-14 16:28:55 · 14448 阅读 · 8 评论 -
C语言刷题(13):写一个函数,输入一个4个数字,要求输出这个4个数字字符,但每两个数字间空一个字符。
#include <stdio.h>#include <string.h>void main(){ void insert(char a[]); char a[10]; puts("输入四个数字:"); gets(a); insert(a); puts("插入空格后数字:"); puts(a);}void i...原创 2020-01-13 16:37:55 · 3333 阅读 · 2 评论 -
C语言刷题(12):写一个函数,将两个字符串连接
#include <stdio.h>#include <strings.h>void main(){ char concatenate(char a[],char b[],char c[]); char a[100],b[100],c[100]; printf("input String one:"); scanf("%s",&...原创 2020-01-13 16:22:44 · 8001 阅读 · 4 评论 -
C语言刷题(11):写一个函数,使字符串反向存放
#include <stdio.h>#include <string.h>void main(){ void inverse(char str[]); char str[100]; printf("input string:"); scanf("%s",str); inverse(str); printf("invert...原创 2020-01-13 12:07:00 · 678 阅读 · 0 评论 -
C语言刷题(10):写一个函数,使给定的一个3X3的二维整型数组转置,即行列转换
#include <stdio.h>#define N 3void main(){ void convert(int a[N][N]); int a[N][N],i,j; printf("input array:\n"); for(i = 0;i<N;i++) { for(j=0;j<N;j++) ...原创 2020-01-13 11:39:31 · 4170 阅读 · 0 评论 -
C语言刷题(9):判断一个数是否为质数(素数)
算法思想:若一个数除了1和本身外,不能被其他数整除,则该数为素数。为了减少时间复杂度,进行判断时,从2开始到sqrt(n)来依次判断是否能够整除。#include <stdio.h>#include <math.h>void main(){ void prime(int a); int a; printf("Input a number:"...原创 2020-01-13 11:12:01 · 800 阅读 · 0 评论 -
C语言刷题(8):求方程ax^2 + bx +c =0的根,用三个函数分别求当:b^2 -4ac大于0,小于 0,等于 0的根,并输出结果
#include <stdio.h>#include <math.h>float a,b,c,x1,x2;void deata_MoreThan_0(float a,float b,float c,float deata);void deata_equal_0(float a,float b,float c,float deata);void deata_less...原创 2020-01-13 10:49:28 · 8787 阅读 · 0 评论 -
C语言刷题(7):求最大公约数和最小公倍数
最大公约数算法:if a<b交换 a ,bwhile ((r = a % b)!= 0){a = b;b = r;}return b;最小公倍数算法:return a * b / c;#include <stdio.h>int Gmd(int a,int b);int Lmb(int a,int b,int c);void main(){ ...原创 2020-01-13 10:03:45 · 372 阅读 · 0 评论 -
C语言刷题6:给定b的值,输入a和m,求a*b和a^m的值
#include <stdio.h>int power(int a,int m);void main(){ int a,m,b=4; printf("input a and m :"); scanf(" %d %d",&a,&m); printf("a*b=%d\n",a*b); printf("a**m=%d\n",pow...原创 2020-01-13 08:26:19 · 3810 阅读 · 3 评论 -
C语言刷题(5):用static,计算阶乘
#include <stdio.h>void main(){ int fac(int n); int i; for(i = 1;i<=4;i++) { fac(i); } printf("5! =%d",fac(i));}int fac(int n){ static int f=1; f =...原创 2020-01-13 08:23:57 · 849 阅读 · 0 评论