c语言入门编程题经典100例,c语言编程题

1 , c语言编程题#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int mon[13]=bool rn(int year) if(year%4==0&&(year%100!=0||year%400==0)) return true; return false;}int n;int main() scanf("%d",&n); n--; int y=1777,m=4,d=30; while(n>365&&!rn(y)||n>366) if(rn(y))while(n>=mon[m]&&m!=2||m==2&&n>=29||m==2&&n>=28&&rn(y))n-=mon[m];if(m==2) n-=rn(y);m++;if(m>=13)} while(n>=1)d++;n--;if(m!=2&&d>mon[m])if(m==2&&d>mon[2]+rn(y))if(m>=13)} printf("%04d-%02d-%02d",y,m,d); return 0;}有什么不懂可以追问【c语言入门编程题经典100例,c语言编程题】
2 , 经典C语言程序例子题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词 。直接编译,程序执行结果如下图所示:题目02:编写一个int string_len(char *s),返回字符串s的字符长度(不包括\0) 。直接编译,程序执行结果如下图所示:扩展资料:C语言是一门通用计算机编程语言 , 应用广泛 。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言 。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台 。
3,关于C语言基础编程题初学者求指点啊1.看你用的是什么编译环境,vc++6.0从右向左输出 , 而且n--表示先用n的值再自减(先用在这里是输出结束,马上我给你举例可以测试),++n表示先自加再用 , 所以就输出221;如果改成下面的程序你自己看看,就会明白了:#include void main() { int n=1; printf("%d%d%d\n",n,++n,n--); n=1; printf("%d",n--); printf("%d",++n); printf("%d",n); printf("\n"); } 输出: 221 111 现在明白了么? 2.y的值事故4 , 顺序求出来就行了,y=(x=1,++x,x+2);是一个逗号表达式 , 最终的值为y=x+2;所以结果为4;不是不确定的; 3.(1,2,3)的值为3,所以(1,2,3)-a的值为1,但是你用的是%f输出,因为float(在vc中以double代替)和int所占内存不一样 , 所以以%f输出int是错误的 。改为%d输出得到1; 4.你还是要弄清楚i++、i--和++i、--i的区别,i++、i--表示先用i的值,然后再自加或自减;而++i、--i是先自加、自减然后再用改变后的i的值;所以分析程序: a=(--x==y++)?--x:++y;是一个条件表达式,因为--x==y++相当于是--x;x==y;y++;显然9==9 , 所以a的值为--x(注意之前x的值已经变成9了)为8;继续分析b=x++;是先用x(此时x为上面的值8),所以b=8,然后x++ , x变成9;c=y(y是从上面表达式得到的值,因为执行了y++,所以值为10),所以结果为8810; ********************************************* 回答的很详细了 , 不明白的话再问;1、#include void main() { int n=1; printf("%d%d%d\n",n,++n,n--); } n一开始为1,则第一个输出1 , 然后第二个++n,这个自增符与n++有区别,++n是先加1再赋值,n++则是先赋值 , 在加1,因而输出2,第三个n--和--n是一对,n--是先赋值 , 再减1,而--n是先减1再赋值; 则结果为122 2、#include void main() { int x,y; y=(x=1,++x,x+2); printf("%d\n",y); }这题是说明逗号表达式,每一个式子从左向右依次计算,其结果为最后一个式子的值 优先级方面 , 括号的优先级最高,而逗号的优先级最低,然后赋值运算符大于逗号运算符; 原式的结果是先计算括号里面的逗号表达式,x=1,++x,x+2;其中x的值变成2 , 括号的结果为4 最后y的值为4; 3、又是一道逗号运算符的,表示无力 #include void main() { int a=2; printf("%f\n",(1,2,3)-a) } 由第二题之结果为1.000000 4、#include void main() { int x=10,y=9; int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y; printf("%d%d%d",a,b,c); } 此题为优先级运算; a=(--x==y++)?--x:++y; 优先级排列由高到低: 括号()< 自增自减++ -- < 判断== < 条件判断?:< 赋值= 括号里面--x=9;y++=9,判断显然为真,y=10,x=9 条件判断为真,则执行地一个--x=8;++y不执行 最后赋值为8 即结果为8【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4 。组成所有的排列后再去掉不满足条件的排列 。2.程序源代码:main()int i,j,k; printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++)if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); }} ============================================================== c语言算法100例题目以及代码:http://wenku.baidu.com/link?url=zfcypykvrtvkuglqrb_agvh4cfb3tukgyodfjojvo1nh2yelrpquvkfy_wxuv9en9orlrafbguzs03qyj3q-bvc4qbzclb0syxbfpgdntda1.第一个的结果是1 1 1 , 它是栈式管理的,先算n--,n--为1,此时n的值变为0,然后再算++n , ++n为1,此时n的值变为1 。2.第2个结果是4,首先是执行x=1,执行++x后x变为2 , 对于括弧里面的逗号运算符并列的若干表达式,结果取最后一个表达式的值 。3.和第2个一样,不多说了.4.该结果8 8 10,首先是x=10,y=9,在 a=(--x==y++)?--x:++y; 执行之时过程如下:--x为9,y++也为9,--x==y++为真,此时x变为9,y变为10,将--x再赋值给a,--x为8 , x此时也变为8,因此a的值为8 。b=x++; 因为x为8,故x++为8,即b为8,x此时又变为9.c=y ;因为上面最后y的值为10,因此c为10;不过不建议你天天搞++、--之类的东西,完全没有什么实用的意义,再加上表达式中有两个或以上的++ , --就属于不良程序风格,软件公司决不允许你这么做,因为可读性太差.不过你要是考计算机2级C语言的话 , 好好看看还是很有必要的!第一题 , 输出为1,2,2 因为++n是先自加在取值 , 后面的n--是先取值再自减;第二题,括号中有三个表达式,其中以最后一个表达式的值为y的值;第三题 , 这题应该为1f;第四题,a=8,b=8,c=10;a的值因为自加与自减的优先级都比赋值优先级高 , 所以先做自加自减 , 有两个--a,所以最后是a=a;后面的a已经是8了,b就是x++,先取值再自加 , 所以b=8;最后c=y,y之前y++,所以y=10 , 所以c=10;由于知识有限 , 讲的可能有些错误,希望能帮到你,祝你成功 。1、++n等价于(n=n+1,n) 是先加 后把n的值显示出来 。2、逗号 相关的知识点:在C语言中,多个表达式可以用逗号分开 , 其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值 。故上式为1不计算,然后计算++x,然后y=(x=x+2) 自然x的值不确定 , y的值也就不确定了3、(1,2,3)-a=3-a=1 结果就是14、(--x==y++)等价于 x=x-1=9,x==y,y=y-1=8 即(--x==y++)为真,则a=--x;那么,x=x-1=8,a=8;b=x++即b=x=8,x=x+1=9;c=y=8;你看看答案,不对的话找我就是了 。

    推荐阅读