
C
zzamx
这个作者很懒,什么都没留下…
展开
-
C语言 多个函数参数(含变量自增 i++; ++i)默认传参顺序
#include<stdio.h>void func(int a, int b, int c, int d){ printf("a:%d b: %d c:%d d:%d \n", a, b, c, d);}int main(){ int i; i = 0; func(i, i, i, i); i = 0; func(i++, i++, i++, i++); i = 0; func(++i, ++i, ++i, ++i); i = 0; func(原创 2022-04-07 16:04:29 · 2035 阅读 · 0 评论 -
寻找素数对--浙大程序设计竞赛
问题描述哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.做好了这件实事,就能说明这个猜想是成立的.由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.//寻找素数对 http://icpc.njust.edu.cn/Problem/Hdu/1262/...原创 2020-04-11 15:46:26 · 334 阅读 · 0 评论 -
C语言_左移<<运算符、右移>>运算符
我的一些注释看不懂的话,可以参看我上一篇blog(含基础知识) https://blog.youkuaiyun.com/xiaoyue_/article/details/115218001#include<stdio.h>int main(){ // 左移右移运算符 // 正数 int m1=5; // 5的补码: 0000 0000 0000 0000 0000 0000 0000 0101 (正数的原码、反码、补码都相同) // 右移2位 >> 0000 000原创 2021-03-25 22:20:46 · 1105 阅读 · 0 评论 -
C语言_二进制的原码、反码、补码_位运算符:~、|、&、^
二进制 位运算符& :按位与 相对应的二进制位:都为1才为1,否则为0| :按位或 相对应的二进制位:有1为1,否则为0^ : 按位异或 相对应的二进制位:相同为0,不同为1~ :按位取反 相对应的二进制位:0变1,1变0正数:三码合一,原码、反码、补码都相同负数:原码、反码、补码各不相同计算如下:原码:计算出来的二进制反码:负数:符号位不变,其余位按位取反补码:负数:符号位不变,反码+1详见注释#include<stdio.h> int main(){ i原创 2021-03-25 20:41:03 · 1596 阅读 · 2 评论 -
二维数组指针_地址和值的表达方式_区别 如 &a[0],*a[0], *(a+i),*(a+i)+j 等
#include<stdio.h>int main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};/* printf("%d,%d\n",a,*a); // 0行首地址 和 0行0列元素地址 (注释掉的这部分可不看,和下边是一样的) printf("%d,%d\n",a[0],*(a+0)); // 0行0列元素地址 printf("%d,%d\n",&a[0],&a[0][0]); // 0行首地址原创 2021-03-22 17:18:34 · 3613 阅读 · 1 评论 -
一维数组、二维数组--相关指针的含义
a+1代表 序号为1的行的首地址。a+2 代表 a[2]的首地址a[0]代表 一维数组a[0]中第0列元素的地址,即&a[0][0]a[1]的值是 &a[1][0];a[2]的值是 &a[2][0];a[0]+0 是a[0][0]的地址,即 &a[0][0];a[0]+1 是a[0][1]的地址,即 &a[0][1];a[i] 和 *(a+i) 等价a[0]+1 和 *(a+0)+1 都是 &a[0][1]a[1]+2 和 *(a+原创 2021-03-22 15:24:20 · 810 阅读 · 0 评论 -
C/C++基本函数之strlen(),strcmp(),strcpy(),strcat()
头文件#include<string.h> // C#include<csting> // C++1.strlen()可以得到字符数组中第一个\0前的字符的个数,格式如下:strlen(字符数组);#include<stdio.h>#include<string.h>int main(){ char str[10]; gets(str); printf("%d",strlen(str)); return 0;}//输入:ab原创 2021-03-16 23:46:48 · 6617 阅读 · 0 评论 -
将大数组定义在函数体外
Take notes:如果数组大小较大(大概10^6级别),则需要将其定义再主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大。–摘自算法笔记...原创 2021-03-16 20:58:41 · 829 阅读 · 0 评论 -
C语言--指针--【程序44】题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n, //当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
一般写法#include<stdio.h>void even(int n){ int i; float sum=0; for(i=2;i<=n;i=i+2) { sum+=(float)1/i; } printf("%.2f",sum);}void odd(int n){ int i; float sum=0; for(i=1;i<=n;i...原创 2020-04-05 06:39:34 · 2910 阅读 · 0 评论 -
C语言--指针【程序43】 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
普通写法#include<stdio.h>int len(char a[]){ int cnt=0; for(int i=0;a[i]!=0;i++) cnt++; return cnt;}int main(){ char str[100]; gets(str); printf("%d",len(str)); return 0;} 指针写法#in...原创 2020-04-04 17:51:46 · 10906 阅读 · 4 评论 -
C语言【程序42】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
解题关键点:1.如何实现围成一圈–循环计数 == > 当循环到末尾的时候,重新置为12.如何控制循环结束 ==>用人数控制循环结束时机,只剩一个人的时候,退出循环#include<stdio.h>int main(){ int a[1000],n,i,t,cnt=0; scanf("%d",&n); t=n; //用人数控制循环结束时机 ...原创 2020-04-03 15:05:58 · 16022 阅读 · 4 评论 -
C语言--指针--【程序41】题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
原题:题目:找到年龄最大的人,并输出。请找出程序中有什么问题#define N 4#include "stdio.h"static struct man{ char name[20]; int age;} person[N]={"li",18,"wang",19,"zhang",20,"sun",22};int main(){ struct man *q,*p; int ...原创 2020-04-03 10:18:10 · 3553 阅读 · 3 评论 -
C语言--指针--【程序40】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
初级版本–开辟一个新数组(有点耗费内存了)//【程序40】//题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数#include<stdio.h>int main(){ int n,m,i,j,a[20],b[20]; //初级版本 --开辟一个新数组 scanf("%d %d",&n,&m); for(i=0;i<n...原创 2020-04-02 17:26:44 · 13718 阅读 · 3 评论 -
C语言--指针--【程序38】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
//【程序38】//题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。#include<stdio.h>int main(){ int a[20],i,*p,*max,*min,max_index,min_index,n,tmp; //不允许把一个数赋予指针变量,故下面的赋值是错误的: int *p; p=1000; scanf("%d...原创 2020-04-02 14:08:18 · 3630 阅读 · 2 评论 -
C++ 指针--引用--区别、注意事项
引用 vs 指针–面试回答★ 区别:引用是某块内存的别名。指针指向一块内存,它的内容是所指内存的地址;不存在空引用。引用必须连接到一块合法的内存。引用只能在定义时被初始化一次,之后不可变;指针可变;引用必须在创建时被初始化。 指针可以在任何时间被初始化。引用不能为空,指针可以为空;★ 相同点: 都是地址的概念;指针–引用–使用区别#include<iostream&g...原创 2020-04-02 11:20:17 · 146 阅读 · 0 评论 -
C语言--指针--典型混淆点--区分改变变量的值or改变指针的指向(地址)
区分改变变量的值or改变指针的指向(地址)例题:输入a和b两个整数,按先大后小的顺序输出a和b方法一:并未交换a,b的值,只是交换了p1,p2的值(即交换了p1,p2所指向的地址==交换了a,b的地址)#include<stdio.h> //方法一int main(){ int *p1,*p2,a,b; int *tmp;//区分对比tmp是否是指针类型 sca...原创 2020-03-28 17:38:22 · 522 阅读 · 1 评论 -
C语言--指针--指针数组和指向指针的指针
例题10-26 将若干字符串按字母顺序(由小到大)输出;//例题10-26 将若干字符串按字母顺序(由小到大)输出;#include<stdio.h>#include<string.h>void sort(char *name[],int n)//name:指针数组名,接受实参传过来的name数组0行的地址 { char *temp; int i,j,k...原创 2020-03-27 19:38:15 · 307 阅读 · 0 评论 -
C语言--指针--返回指针值的函数
例题10-24 有若干个学生的成绩(每个学生有4门课),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数实现。//例题10-24 有若干个学生的成绩(每个学生有4门课),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数实现。 #include<stdio.h>int main(){ float score[][4]={{60,70,80,90},...原创 2020-03-27 17:13:45 · 2997 阅读 · 0 评论 -
C语言--指针--指向函数的指针1
例题10-22 求a,b中的大者。例题10-22 求a,b中的大者。#include<stdio.h>//int main() //一般方法 //{// int max(int,int);// int a,b,c;// scanf("%d %d",&a,&b);// c=max(a,b);// printf("a=%d,b=%d,max=%d\...原创 2020-03-27 16:42:00 · 148 阅读 · 0 评论 -
C语言--指针--指向函数的指针
例题10-23 设一个函数process,在调用它的时候,每次实现不同的功能。输入a,b两个数,第一次调用process时找出a,b中大者,第二次找出其中小者,第三次求a,b之和//例题10-23 设一个函数process,在调用它的时候,每次实现不同的功能。输入a,b两个数,第一次调用process时找出a,b中大者,第二次找出其中小者,第三次求a,b之和#include<stdio....原创 2020-03-27 16:20:38 · 542 阅读 · 0 评论 -
C语言--指针--字符串与指针
例题10-15 定义一个字符数组,对它初始化,然后输出该字符串//例题10-15 定义一个字符数组,对它初始化,然后输出该字符串#include<stdio.h>int main(){ char str[]="I love China!"; printf("%s\n",str); return 0; } 例题10-16 定义字符指针//例题10-16 定义字符指针...原创 2020-03-27 15:55:57 · 390 阅读 · 0 评论 -
C语言--指针--多维数组与指针
例题10-10 输出二维数组有关的值//例题10-10 输出二维数组有关的值 #include<stdio.h> #define FORMAT "%d %d \n"int main(){ int a[3][4]={1,2,5,7,9,11,13,15,17,19,21,23}; printf(FORMAT,a,*a);//0行首地址,0行0列元素地址 printf(FO...原创 2020-03-26 08:55:28 · 462 阅读 · 0 评论 -
C语言--指针--例题10-9 用选择法对10个整数按由大到小顺序排序
//例题10-9 用选择法对10个整数按由大到小顺序排序#include<stdio.h>void sort(int x[],int n) //或者 sort(int *x,int n)都一样,其余不用动 { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(x[j]...原创 2020-03-24 11:02:00 · 3484 阅读 · 1 评论 -
C语言--指针--例题10-7 将数组a中的n个整数按相反顺序存放;例题10-8 用实参指针变量改写例题10-7
例题10-7 将数组a中的n个整数按相反顺序存放//例题10-7 将数组a中的n个整数按相反顺序存放#include<stdio.h> //void inv(int x[],int n) //写法一:形参x是数组名 //{// int tmp,i,j,m=(n-1)/2;// for(i=0;i<=m;i++)// {// j=n-1-i;/...原创 2020-03-24 10:51:27 · 8956 阅读 · 0 评论 -
C语言--指针--例题10-6 通过指针变量输出a数组的10个元素
#include<stdio.h>int main(){ int *p,i,a[10]; p=a; for(i=0;i<10;i++) scanf("%d",p++); printf("\n"); p=a; //note:若不加p=a,则p此时指向a数组的末尾 for(i=0;i<10;i++,p++) printf("%d ",*p...原创 2020-03-24 10:48:56 · 3387 阅读 · 0 评论 -
C语言--指针--例题10-5 输出数组中的全部元素,假设有一个a数组,有10个元素,要输出各元素的值
例题10-5 输出数组中的全部元素,假设有一个a数组,有10个元素,要输出各元素的值方法一:下标法#include<stdio.h>int main(){ int a[10]={0,1,2,3,4,5,6,7,8,9}; for(int i=0;i<10;i++) printf("%d ",a[i]); return 0;}方法二:通过数组名计算数组元素地...原创 2020-03-24 10:42:53 · 2115 阅读 · 0 评论 -
C语言--指针--例题10-4 输入a,b,c这3个整数,按大小顺序输出
例题10-4 输入a,b,c这3个整数,按大小顺序输出//例题10-4 输入a,b,c这3个整数,按大小顺序输出#include<stdio.h>int main(){ void exchange(int *q1,int *q2,int*q3); int a,b,c,*p1,*p2,*p3; scanf("%d %d %d",&a,&b,&c);...原创 2020-03-24 10:39:43 · 779 阅读 · 0 评论 -
C语言--指针--例题10-3 输入a,b两个整数,按先大后小的顺序输出a和b,现用函数处理,而且用指针类型的数据作函数参数
例题10-3 输入a,b两个整数,按先大后小的顺序输出a和b,现用函数处理,而且用指针类型的数据作函数参数//例题10-3 输入a,b两个整数,按先大后小的顺序输出a和b,//现用函数处理,而且用指针类型的数据作函数参数#include<stdio.h>int main(){ void swap(int *p1,int *p2); int a,b; int *point...原创 2020-03-24 10:35:30 · 3762 阅读 · 4 评论 -
C语言--指针--例题10-1 通过指针变量访问整型变量;例题10-2 输入a,b两个整数,按先大后小的顺序输出a和b
例题10-1 通过指针变量访问整型变量//例题10-1 通过指针变量访问整型变量#include<stdio.h>int main(){ int a,b; int *pointer_1,*pointer_2; a=100;b=10; pointer_1=&a; //把变量a的地址赋给pointer_1 pointer_2=&b; //把变量b的地址赋...原创 2020-03-24 10:27:35 · 2282 阅读 · 0 评论 -
C语言【程序52】 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的
【程序52】题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。通过程序进行加密和解密**分析:**eg. 1234 -> 6789 -> 6%10=6;7%10=7,==>6789 交换–>加密后:9876#include<std...原创 2020-03-22 11:38:16 · 12886 阅读 · 5 评论 -
C语言【程序51】 题目:两个字符串连接程序
strcat()函数:1.strcat(目的str,源str) ,最后拼接在 **目的str(第一个字符串)**上2.头文件:string.h//【程序51】//题目:两个字符串连接程序#include<stdio.h>#include<string.h> //strcat()的头文件 int main(){ char s1[50],s2[20]; ...原创 2020-03-19 21:39:03 · 2063 阅读 · 0 评论 -
C语言【程序50】 题目:一个偶数总能表示为两个素数之和。
//【程序50】//题目:一个偶数总能表示为两个素数之和。#include<stdio.h>#include<math.h>int isPrime(int t){ if(t%2==0||t<2) return 0; for(int i=2;i<=sqrt(t);i++) { if(t%i==0) return 0; } ret...原创 2020-03-19 21:27:17 · 2465 阅读 · 1 评论 -
C语言【程序49】 题目:求0-7所能组成的奇数个数。
//【程序49】//题目:求0-7所能组成的奇数个数。//分析:0-7共有8位 //准则:①最后一位(个位)不是偶数 ②第一位不是0(即没有03) //1位数:1,3,5,7符合要求, 共4个//2位数: 11,13,15,17,21,23,25,, 共7*4个//3位数: 101,103,105,107,,, 共7*8*4个//。。。//8位数: ,,, ...原创 2020-03-19 18:13:54 · 2612 阅读 · 0 评论 -
递归 十进制转二进制
//递归 十进制转二进制 #include<stdio.h>int TenToTwo(int m){ if(m<=0) //递归出口 return 0; else { TenToTwo(m/2); printf("%d",m%2); }}int main(){ int n; scanf("%d",&n); TenT...原创 2020-03-19 17:06:14 · 388 阅读 · 0 评论 -
C语言【程序48】题目:八进制转换为十进制、二进制转换为十进制、十进制转换为二进制 、十进制转换为八进制、十六进制转换为十进制、十进制转换为十六进制
基本思想: 举例: //【程序48】//题目:八进制转换为十进制#include<stdio.h>#include<math.h>int main(){ int i=0,n,tmp,sum=0; scanf("%d",&n); while(n) { tmp=n%10; n=n/10; sum+=tmp*pow(8,i); i++;...原创 2020-03-18 12:14:24 · 2169 阅读 · 0 评论 -
C语言【程序46】题目:海滩上有一堆桃子,五只猴子来分。
【程序46】题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?**解题思路:**可以从第五个人开始,从后往前推。最后一个猴子分成五份还多一个,所以最后至少有6个桃子。写一...转载 2020-03-17 23:10:34 · 2154 阅读 · 4 评论 -
C语言【程序37】 题目:输入3个数a,b,c,按大小顺序输出。(利用指针方法)
//【程序37】//题目:输入3个数a,b,c,按大小顺序输出。(利用指针方法)#include<stdio.h>void swap(int *p1,int *p2){ int tmp; tmp=*p1; *p1=*p2; *p2=tmp;}int main(){ int a,b,c; int *pa,*pb,*pc; scanf("%d%d%d",&am...原创 2020-03-17 10:13:55 · 6214 阅读 · 0 评论 -
C语言 指针、指针变量的区别;指针变量的引用; &a 和 *p的区别;
指针:是一个 地址。指针变量:存放地址的 变量。原创 2020-03-17 09:37:38 · 146 阅读 · 0 评论 -
C语言【程序36】题目:打印出杨辉三角形
写法一://【程序36】//题目:打印出杨辉三角形(要求打印出10行如下图)/*11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 */#include<stdio.h>int main(){ int i,j,str[11][11]; for(i=1;i<=10;i++) { str[i][1...原创 2020-03-17 07:56:00 · 1311 阅读 · 0 评论 -
C语言【程序35】 题目:将一个数组逆序输出。
//【程序35】//题目:将一个数组逆序输出。#include<stdio.h>int str[10]={3,2,6,7,5,9,1,8,4};int main(){ int i,j,n,tmp; for(n=0;str[n]!=0;n++); for(i=0;i<n/2;i++) { tmp=str[i]; str[i]=str[n-i-1];/...原创 2020-03-16 08:09:51 · 7653 阅读 · 0 评论