精华内容
下载资源
问答
  • C语言经典题目C语言经典题目C语言经典题目C语言经典题目C语言经典题目C语言经典题目C语言经典题目
  • C语言经典题目

    2015-10-06 09:54:31
    里面包含有C语言经典题目,提供C语言初学者练习
  • c语言经典题目

    2019-09-02 11:06:11
    #include<stdio.h> int main() { char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; char**cp[] = { c + 3, c + 2, c + 1, c }; char***cpp = cp;... printf("%s\n", **++cpp);... printf("%s\n", *--*++cpp .....
    #include<stdio.h>
    int main()
    {
     char *c[] = { "ENTER", "NEW", "POINT", "FIRST" };
     char**cp[] = { c + 3, c + 2, c + 1, c };
     char***cpp = cp;
     printf("%s\n", **++cpp);
     printf("%s\n", *--*++cpp + 3);
     printf("%s\n", *cpp[-2] + 3);
     printf("%s\n", cpp[-1][-1] + 1);
     system("pause");
     return 0;
    }
    

    1.先创建一个数组c,里面存放的是元素的首字母,每个元素都是char*。在这里插入图片描述
    2.数组cp用来接收数组c里面的元素,用char**接收。

    在这里插入图片描述
    3.创建一个数组用来接收cpp里面的元素,用char***接受。
    在这里插入图片描述

    4.cpp+0指的是cp数组里第一个元素,+1指的是cp数组里第二个元素的地址,解引用后是第二个元素的内容,cp数组里第二个元素在c数组里指的是元素首元素的地址,则第一个printf输出的是point。在这里插入图片描述
    5. ++cpp + 3 由于“+”优先级较低,所以程序先执行*–++cpp代码,这段代码先执行++cpp,再执行++cpp,再执行–++cpp,再执行++cpp,最后再+3.打印的是ER
    在这里插入图片描述
    6. cpp[-2] + 3 cpp[-2]可以转化为(cpp-2),先对cpp-2后,指的是cp数组的首元素地址,而c+3指向的是c数组的第三个元素,解引用之后,取的是第三个元素的首元素地址,再加三是第三个元素的地址,从此处开始打印。打印的是ST 在这里插入图片描述
    7.cpp[-1][-1] + 1 先转化:cpp[-1][-1] + 1–>
    (*(cpp - 1) - 1)+1. 打印的是EW
    在这里插入图片描述
    8.最后输出程序结果:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 三个数比较大小 — C语言经典题目

    万次阅读 多人点赞 2017-03-29 20:57:40
    这道题是每一位初学C的小伙伴们的必经之路,其经典性简直如同Hello World!下面写一下几种不同的解法。 1.if语句 2.三目运算(?) 3.调用函数 4.指针

    这道题是每一位初学C的小伙伴们的必经之路,其经典性简直如同Hello World!

    下面写一下几种不同的解法。


    • 使用if语句
    #include<stdio.h>
    
    int main()
    {
    	int a, b, c, max;//逗号,(大/中/普通)括号,右端需有空白字符
    	
    	scanf("%d%d%d", &a, &b, &c);
    	
    	if( a>b)    max = a;//为了代码可视性高,操作符需被空白字符包围
    	else        max = b;
    	if( c>max)  max = c;
    	
    	printf("max=%d", max);
    	
    	return 0;
    }
    

    • 使用三目运算符

    ?:条件运算符,使用方法是<表达式1> ?<表达式2> :<表达式3>,意思是满足表达式1就执行表达式2,否则执行表达式3。

    #include<stdio.h>
    
    int main()
    {
    	int a, b, c, max;
    	
    	scanf("%d%d%d", &a, &b, &c);
    	
    	max = a>b ? a:b;
    	max = c>max ? c:max;
    	
    	printf("max=%d", max);
    	
    	return 0;
    }
    
    • a>b ? (max = a) : (max = b); c>max ? (max = c) : max ;

    • max = ( (a>b ? a:b) > c) ? (a>b ? a:b) : c;

    以上三种方法均可以比较出三个数的最大值,区别在于例子中的方法是使用的赋值语句,而替代方法1是运用的标准条件运算,后面的替代方法2则是以赋值语句为主的两重(条件运算的)嵌套。

    补充:替代方法2不能写成max = ( (a>b?a:b) > c ) ? ():c;
    因为在三目运算符?的前置条件中(a>b?a:b)的运算结果是没有分配储存地址的,只是开辟了临时地址(理解成缓存也行,程序结束便清空),这就导致后面的()根本无法从前面取得值,所以得再写一次表达式。


    • 使用max函数 + if语句
    #include<stdio.h>
    
    int main()
    {
    	int a, b, c, max;
    	int Max( int x, int y, int z);//声明自定义函数Max
    	
    	scanf("%d%d%d", &a, &b, &c);
    	
    	max = Max( a,b,c);
    	
    	printf("max=%d", max);
    	return 0;
    }
    
    int Max(int x, int y, int z)
    {
    	int max;//不同的函数中可以使用同名(局部)变量
    	
    	if( x>y)    max = x;
    	else        max = y;
    	if( z>max)  max = z;
    	
    	return max;
    }
    
    • 使用max函数 + 三目运算符
    #include<stdio.h>
    
    int main()
    {
    	int a, b, c;
    	int Max( int x, int y);
    	
    	scanf("%d%d%d", &a, &b, &c);
    	printf("max=%d", Max(Max(a,b),c) );//调用两重Max函数嵌套
    	
    	return 0;
    }
    
    int Max(int x, int y)
    {
    	return x>y?x:y;
    }
    

    其中printf语句里的两重函数嵌套不能写成Max( (a,b) ,c),因为这个(a,b)并不符合自定义Max函数的传参要求。

    自定义Max函数int Max(int x, int y)的形参为整型变量int x, int y,所以在调用Max函数时,需要传入符合定义要求的int型参数,那么显然这个(a,b)并不是int型参数,它是一个不属于任何类型的不完整表达式,其没有实际意义。

    不过,两重Max函数嵌套写成Max( Max(a,b) ,c)是符合要求的,因为Max(a,b)的函数返回值符合int x的传参要求,究其原因是其内部return语句中返回的x>y?x:y是一个int型值。


    • 使用指针
    #include<stdio.h>
    
    int main()
    {
    	int a, b, c;
    	int Max( int x, int y);
    	int (*p)(int, int) = &Max;//对指针p赋初值为Max的地址,&可省略
    	
    	scanf("%d%d%d", &a, &b, &c);
    	printf("max=%d", p(p(a,b) ,c) );
    	
    	return 0;
    }
    
    int Max(int x, int y)
    {
    	return x>y?x:y;
    }
    

    这个有关于数字比较之类的问题,在C语言中是非常经典的一块,于是写了几种方法来开拓一下自己思路。也希望可以通过对这个题目的不同解法,来为之后像回溯和指针之类的知识稍微做一下铺垫,嘿,大家一起来感受一下。

    总之,我觉得吧,像这种O(1)的小小代码片儿,要是闲的没事儿或闲情所致,那还是可以追求一下更多的不同解答方法啦。^ _ ^

    展开全文
  • c语言经典题目100

    2015-09-07 14:29:40
    c语言经典题目100道,适用于初学者练习
  • 主要介绍了C语言 经典题目螺旋矩阵 实例详解的相关资料,这里附有代码实例及实现效果图,需要的朋友可以参考下
  • C语言经典题目及解题思路 C语言经典题目及解题思路 C语言经典题目及解题思路 C语言经典题目及解题思路C语言经典题目及解题思路
  • c语言经典题目.rar

    2011-06-05 21:30:33
    c语言经典题目.rar, 某位前辈的C语言题目总结
  • C语言经典题目及代码

    2012-06-09 08:53:08
    113道C语言经典题目的代码,感觉对初学者来说挺有帮助的!
  • C语言经典题目900例

    千次下载 热门讨论 2013-05-29 10:10:10
    这个是一个C语言的900例 涵盖各种算法 。对于练习算法的同学入门和提升还是不错的
  • C语言 经典题目训练

    2018-03-28 00:26:21
    主要是C语言的一部分练习题的汇总,包含了C语言入门学习的大部分方面
  • 100例c语言经典题目

    2013-05-09 21:18:36
    c语言100题经典题目 包含100题c语言的题目 适合入门者使用
  • C语言 经典题目螺旋矩阵//N阶螺旋矩阵#include #include int main(){int N,i,j,n,num=1;int a[10][10]={0};printf("输入你要输出的几阶中断:");scanf("%d",&N);for(n=0;n<=N/2;n++){for(j=n;j<=N-n-1;j++)...

    C语言 经典题目螺旋矩阵

    //N阶螺旋矩阵

    #include

    #include

    int main()

    {

    int N,i,j,n,num=1;

    int a[10][10]={0};

    printf("输入你要输出的几阶中断:");

    scanf("%d",&N);

    for(n=0;n<=N/2;n++)

    {

    for(j=n;j<=N-n-1;j++)

    a[n][j]=num++;

    for(i=n+1;i

    a[i][N-n-1]=num++;

    for(j=N-n-1;j>n;j--)

    a[N-n-1][j]=num++;

    for(i=N-n-1;i>n;i--)

    a[i][n]=num++;

    }

    //输出螺旋矩阵

    for(i=0;i

    {

    for(j=0;j

    printf("%2d ",a[i][j]);

    printf("\n");

    }

    system("pause");

    return 0;

    }

    思路是这样的,刚开始很容易想到顺时针赋值,如下图为5阶:分为四个方向顺时针赋值。每个方向负责相同数量的元素。

    但这样,后来发现当N为基数时,最中心一个数不能被赋值。

    所以改为还是顺时针赋值,只是->方向多负责一个元素,右| 方向少负责一个元素

    最后的运行结果如下图:

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • C语言经典题目“小蜜蜂“代码小蜜蜂(选作)一只小蜜蜂在如下图所示的蜂窝上爬行。它爬行时,只能从一个格爬到相邻的大号格子中。例如,从 1 号格子可以爬到 2 号或者 3 号格子,从 2 号则可以爬到 3 号或者 4 号格子...

    C语言经典题目“小蜜蜂“代码

    小蜜蜂(选作)

    一只小蜜蜂在如下图所示的蜂窝上爬行。它爬行时,只能从一个格爬到相邻的大号格子中。例如,从 1 号格子可以爬到 2 号或者 3 号格子,从 2 号则可以爬到 3 号或者 4 号格子。

    请问从一个格子 a 爬到一个格子 b 一共有多少种可行的路线。

    输入:

    分别是起始点 a 和终止点 b 的编号。( a 和 b 在 1~100 之间,且 a

    输出:

    程序:

    #include"stdio.h"

    #define N 50

    int main()

    {

    int b[N]={0};

    int c[N]={0};

    int i,j,k,n,a1,a2,t,l;

    b[1]=c[1]=1;

    scanf("%d%d",&a1,&a2);

    n=a2-a1+1;

    for(j=3;j<=n;j++)

    {

    for(i=1;i

    {

    t=b[i]+c[i];

    if(l==1)

    {

    c[i]=b[i]-1;

    l=0;

    }

    else

    c[i]=b[i];

    b[i]=t;

    if(b[i]>=10)

    {

    l=1;

    b[i+1]=b[i+1]+1;

    b[i]=b[i]%10;

    }

    }

    }

    k=N;

    while(b[--k]==0){}

    for(i=k;i>=1;i--)

    printf("%d",b[i]);

    printf("\n");

    return 0;

    }

    #include

    int main()

    {

    long double num1,num2,num3=0;

    int a=0,b=0,i;

    scanf("%d %d",&a,&b);

    num1=1;

    num2=2;

    if(b-a==1)

    printf("1\n");

    else if(b-a==2)

    printf("2\n");

    else

    {

    for(i=3;i<=b-a;i++)

    {

    num3=num1+num2;

    num1=num2;

    num2=num3;

    }

    printf("%.0lf\n",num3);

    }

    return 0;

    }

    展开全文
  • 晕选作 看着这样的回形图案你晕吗 让我们不用数组来做出它 输入 n正方形的边长 输出 边长为 n 的数字回形方阵 程序 #include<stdio.h> int main) { int a[20][20],i,j,n,m=1,l,k=0; scanf%d&n; l=n;...
  • 第1题 输入3个整数输出其中最大数 样例输入1 3 2 样例输出3 第2题 编写程序输入一个数判断其是否是3或7的倍数分4种情况输出是3的倍数但不是7的倍数时输出1不是3的倍数但是7的倍数时输出2是3的倍数也是7的倍数时输出3...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,032
精华内容 812
关键字:

c语言经典题目

c语言 订阅