当前位置:首页 > 生活知识 > 正文内容

c语言基础编程100道(c语言经典100道)

hacker2年前 (2022-07-14)生活知识73

本文目录一览:

c语言编程

首先申明,本人不是什么高手,但自认为对c还比较熟悉,可以给你提点建议:

1、学习C语言,要从入门到精通,需要读哪些书(从简单的到难的排序,越详细越好,最好都能注释下选择这本书的理由)?

入门阶段:还是老谭那本。

理由:虽然不能说它写得有多好,但是你现在要做的是入门,要快速的掌握c的基本语法,这本书很好理解,能够让你在最短的时间内大致掌握这门语言的概更。

第二阶段:《c程序设计语言》(The C Programming Language)和《C语言解惑》(The C puzzle book)

理由:《the c programming language》号称c语言圣经。其实它也只是一本介绍基础语法的书,不做入门教程是因为对于初学者来说,它难度稍大,之所以推荐,是因为它能让你---系统而严密的---把C语言知识构架整理一遍。《c语言解惑》,系统的整理了c语法中容易让你产生迷惑或容易犯错的地方(如a+++++b等),这时候你才算真正开始学习c语言了.(以上两本现在出重印了,应该在书店可以买到)

第三阶段:《C陷阱与缺陷》(C Traps and Pitfalls)和《高质量c/c++编程指南》

理由:《c陷阱与缺陷》是让对c的理解有质变得一本书,如如何理解(*(void(*)())0)()等问题,我的感觉是看完这本书让我真正从小菜鸟变成了老菜鸟。《高质量...》,终于有一本国产的了,呵呵,我认为这本书是把你从土匪变成正规军的最好指南,该书涉及编程风格、效率、重载、健壮性等一些列之前很难注意的问题。(以上两本《c陷阱...》已绝版,不过网上可以下载到中英文版,《高质量...》本身就是网络书,很容易找到)

其它推荐书:《c专家编程》《c和指针》

说实话这两本书我并没有看过(或看完),但有口皆碑,都是经典之作,不过都已经绝版,仔细找找网上有下载的。

2、有哪些好的C语言练习(越难的越好)?

对语言本身的练习其实就是你对它的理解,用得多了,注意得多了,自然就ok了。其它思维上的练习主要是算法和数据结构方面的,严老的《数据结构题集(C语言版)》如果你能做完就相当了不起了。

3、要学精C语言,还要具备哪些条件?

其实c语言也只是一个工具而已,就像锄头一样,你每天挖地锄田自然就精通它了。只要不是白痴,应该都没有问题。

4、C语言学完后接下去要学哪些语言好?

这个我就没有资格回答了,因为除了少量汇编和c++,我大部分只用到了c,不过也许是一脉相承的c++吧。c是面向过程的语言,学习c++面向对象的思想。

5、各位网友如果在学习计算机语言方面还有一些独到的见解,欢迎提出!

不是我提出的,不过真的很经典——“天下程序一大抄”,呵呵。

求C语言编程实例100行以上,要有文字大概解释一下

#include stdio.h

main(int a,char **date)

{

int year=0,month=0,day=0,week;

int d,i,dm,dy,m2;

char WEEK[9];

if (a==1)

{

printf ("\n ERROR! you forgot to enter the date you want to view\n");

exit (0);

}

i=0; d=-1;

while (date[1][i])/*遍历传入的参数日期,计算出year,month,day*/

{

if ((date[1][i]=='/'||date[1][i]=='.')d==-1) { d=0; i++; continue; }

if ((date[1][i]=='/'||date[1][i]=='.')d==0) { d=1; i++; continue; }

if (d==-1) year=year*10+(date[1][i]-'0');

if (d==0) month=month*10+(date[1][i]-'0');

if (d==1) day=day*10+(date[1][i]-'0');

i++;

}

if (month1||month12)/*若月份传入错误数字*/

{

printf ("\n ERROR! the entered MONTH is invalid\n");

exit (0);

}

if (year==2000)

{

dy=0; /*年引起的星期差为0个*/

m2=1; /*2月引起的星期差为1个*/

goto la_100;

}

if (year2000)

d=(year-1-2000)/4-(year-1-2000)/100+(year-1-2000)/400+1;

else

d=(year-2000)/4-(year-2000)/100+(year-2000)/400;

dy=(year-2000)+d; /*** 该年 1月1号 到2000年1月1号的 " 星期差 " ***/

if((year%4==0year%100!=0)||(year%100==0year%400==0))

m2=1;

else

m2=0; /*** 该年是否润 ***/

la_100: /**** la_100 ****/

/*** 该月以前的月所引起的 " 星期差 " ***/

switch (month)

{

case 1: dm=0; month=31; break; /*** month 在此存放该月天数 ***/

case 2: dm=3; month=d==1? 29:28; break;

case 3: dm=3+m2; month=31; break;

case 4: dm=6+m2; month=30; break;

case 5: dm=1+m2; month=31; break;

case 6: dm=4+m2; month=30; break;

case 7: dm=6+m2; month=31; break;

case 8: dm=2+m2; month=31; break;

case 9: dm=5+m2; month=30; break;

case 10: dm=m2; month=31; break;

case 11: dm=3+m2; month=30; break;

case 12: dm=5+m2; month=31; break;

}

if (day0||daymonth)

{

printf ("\n ERROR! the entered DAY is invalid\n");

exit (0);

}

week=(dy+dm+day-1+6)%7;

if(week0)

week+=7;

if (day0) /*** 判定查看类型 ***/

{

switch (week)

{

case 0: strcpy (WEEK,"SUNDAY"); break;

case 1: strcpy (WEEK,"MONDAY"); break;

case 2: strcpy (WEEK,"TUESDAY"); break;

case 3: strcpy (WEEK,"WEDNESDAY"); break;

case 4: strcpy (WEEK,"THURSDAY"); break;

case 5: strcpy (WEEK,"FRIDAY"); break;

case 6: strcpy (WEEK,"SATURDAY"); break;

}

printf ("\n this day is %s \( %d \)\n\n OK!\n",WEEK,week);

}

else

{

week=++week%7;

printf ("\n the calender of this month as following\n");

printf ("\n *********************************\n");

printf (" SUN MON TUE WEN THU FRI STA\n");

for (i=0;iweek;i++)

printf (" ");

for (i=1;i=month;i++)

{

printf (" %2d ",i);

week++;

if (week%7==0i!=month)

printf ("\n");

}

printf ("\n *********************************\n");

printf ("\n OK!\n");

}

}

这是一个万年历的小程序,效率不怎么高,不过涉及到很多基础知识,可以读读

C语言编程题,考试急用,请高手帮忙啊!!!!

1.

#includestdio.h

long fun(long int x)

{

long ret=0;

while(x){

if(x%10%2){

ret= ret*10+ x%10;

}

x=x/10;

}

return ret;

}

void main()

{

long a,b;

printf("Please input a long int num:");

scanf("%ld",a);

b=fun(a);

printf("b=%ld\n",b);

}

2.

#includemath.h

void fun(char *s,char *t,char *p)

{

int i=0,j=0,k=0;

for(i=0;i50;i++){

p[i]=0;

}

i=0;

while(t[i]){

j=0;

while(s[j]){

if(t[i]!=s[j]){

j++;

}else break;

}

k=0;

while(p[k]){

if(t[i]!=p[k]){

k++;

}else break;

}

if(s[j]==0 p[k]==0){

p[k]=t[i];

}

i++;

}

}

void main()

{

char s1[50],s2[50],s3[50];

gets(s1);gets(s2);

fun(s1,s2,s3);

puts(s3);

}

3.

int fun(int m)

{

int sum=0,a=0,i;

if(m==1) return 1;

for(i=1;;i++){

a=a+i;

sum =sum+a;

if(summ)

return i-1;

}

}

void main()

{int x;

scanf("%d",x);

printf("n=%d\n",fun(x));

}

4.

#define N 10

void fun(int *x,int n)

{

int i,min_n,min;

min=x[0];

min_n=0;

for(i=1;in;i++){

if(x[i]min){

min=x[i];

min_n=i;

}

}

i=x[0];

x[0]=x[min_n];

x[min_n]=i;

min=x[1];

min_n=1;

for(i=2;in;i++){

if(x[i]min){

min=x[i];

min_n=i;

}

}

i=x[1];

x[1]=x[min_n];

x[min_n]=i;

}

main()

{int a[N],i;

for(i=0;iN;i++)

scanf("%d",a+i);

fun(a,N);

for(i=0;iN;i++)

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

printf("\n");

}

5.

#include math.h

long fun(int high,int n)

{

int sum=0,count=0,k,i;

for(high--;high=2;high--){

k=0;

for(i=2;i=sqrt(high+1);i++){

if(high%i==0){

k=1;

break;

}

}

if(k==0){

count++;

sum += high;

}

if(count==n) break;

}

return sum;

}

void main()

{int k,n;

scanf("%d%d",k,n);

printf("sum=%ld\n",fun(k,n));

}

6.

int fun(int *a,int n)

{

int i,j;

for(i=j=0,j;in;i++){

if(!(a[i]%2)){

a[j]=a[i];

j++;

}

}

a[j]=-1;

return j;

}

void main()

{int x[15],i,n;

for(i=0;i15;i++)

scanf("%d",x+i);

n=fun(x,15);

for(i=0;x[i]!=-1;i++)

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

printf("n=%d\n",n);

}

急求 几道C语言基础编程大题 求详细过程

/*九九乘法表*/

#include stdio.h

int main()

{

int i,j;

for(i=1;i10;i++)

{

for(j=1;j10;j++)

{

printf("%dX%d=%d\t",i,j,j*i);

if(i==j)

break;

}

printf("\n");

}

return 0;

}

求解一道C语言基础编程题。

首先看一下程序的逻辑(虽然貌似题主应该不是在这一块有问题:

关于ascii码的解释:

首先得知道每个字符和数值的对应关系(图不清晰可看戳这里:ascii编码对应表

好了,现在看程序中的第一个if语句,在用大于、小于这些运算比较符比较char的时候,会自动转换为整数比较,也就是说‘0’会转换成48,‘1’转换成49……以此类推,最后是‘9’转换成57,你会发现把这些char减去48就会得到它们各自相对应的整数数值,这就是第一个if里面减去48的目的。同理,接下来的else-if语句,‘A’到‘F’也会转换成整数数值,具体对应的数值可以参看ascii表,一样的道理减去‘A’然后加10的目的也是转换成数值,因为在大于10的进制下,A代表10,B代表11……以此类推,因为这个程序最高就16进制了,所以判断到F就可以了。

然后我们来看进制的解释:

所谓进制,其实就是组合数字的方式,理解了这一点就很好说了。比如说10进制,为什么198等于198(好像很傻一问题)?其实是因为在十进制下,198 (10) = 1 * 10^2 + 9 * 10^1 + 8 * 10^0 = 198(好像是这么回事,(。ì _ í。)),同一个数字,放在不同的位置,它所代表的分量也不一样,即组合数字的方式会影响数字的值,1后面还有2个数字,所以这个1实际上是1 * 10^2 = 100,而不是1,其它位置的数字同理,然后把这些值加起来,就得到了整个数字所代表的最终的值,因此我们才有了 198 = 198(好像很有道理)。

但是,198也可能不等于198,什么时候不等于呢?在不同的进制下。比如说假如我们的这个198是在16进制下的198,那么 198 (16) = 1 * 16^2 + 9 * 16^1 + 8 * 16^0 = 408 (10) = 408。

为什么会产生这种差别呢?因为16进制下的那个1代表的分量是1 * 16^2了,而不是1 * 10^2了,同理,在其它进制下只需要把乘的数字换成对应的进制的数就好了,比如在9进制下那个1就是1 * 9^2等等。

这样一来上面程序里面的for语句就好理解了,之所以用for是因为要算出次方(这个应该不用解释),一个数要乘的次方是它后面跟着的数字的个数,所以是“j = 0; j len - 1”。

然后把这些值加起来,就得到这个数字对应的十进制下的数值,也就完成了最终的转换。

题主可以随便写些不同进制下的数字,然后自己算出十进制下对应的数值,和网站上得出的结果比较比较,这样也可以加深对进制的理解,同时提高计算能力。

戳这里:在线进制转换

这里给出了一个链接,这种网页到处都是,随便搜一下就可以找到。

扫描二维码推送至手机访问。

版权声明:本文由万物知识分享发布,如需转载请注明出处。

本文链接:http://qmsspa.com/69328.html

分享给朋友:

“c语言基础编程100道(c语言经典100道)” 的相关文章

日赚1000元的方法(赚钱方法每天收入2000加微信)

日赚1000元的方法(赚钱方法每天收入2000加微信)

原期,洪哥具体 讲述了正在微疑上赔钱的设法主意 ,即正在公域真现游戏。 许多 人常常 答尔: 为何尔的产物 售没有进来? 为何尔的排火体系 出有事情 ? 为何抽湿的粉丝不克不及 改革 ? 为何尔赔没有到钱?信任 您也有如许 的信答,宁神 吧,看完那篇文章,您会谢悟的! 念正...

京东无货源如何算利润(京东无货源模式店群值得投资吗)

京东无货源如何算利润(京东无货源模式店群值得投资吗)

昨天分享一个否以历久 赔钱的名目:JD.COM无货源名目。 该名目无需投资、排火或者购置 。并且 操做单纯,支出没有启顶。今朝 作的人很长,属于蓝海商场。 跟着 Tik Tok、Aauto faster等仄台正在电商范畴 的快捷突起 ,间接证实 了内容带货=电商趋向 ,内容成为电商仄台...

2018年godaddy域名续费最新优惠码,域名续费优惠方式

Godaddy域名绝费劣惠码,如今 愈来愈易找到否用的了。域名要到期,须要 绝费,一看竟然要 一0 一群众币,实是疾苦 添抓狂。不消 担忧 ,念劣惠绝费照样 无方法的: 上面那个是买物车华夏 去绝费价钱 : 一0 一群众币 劣惠绝费要领 : 点简体外文谁人 地位 ,涌现 抉择国度 地域 界里,点i...

怎样阻止qq浏览器自动登录(qq非法扫描浏览器记录)

远日网上上传“腾讯PC版QQ扫描阅读 器事宜 ”,称领现QQ office版战TIM正在登录时扫描用户Chrome阅读 器汗青 。编纂 宋暂暂 新闻 爆没后,网上一片哗然。网友表现 是可有盗与用户数据的止为,或者者说所谓的年夜 数据是怎么去的。 事宜 爆没后,又有网友爆料称腾讯未移除了相...

自媒体都是如何挣钱呢(自媒体怎么挣钱不用运营)

【本创】天天 放工 归野的第一个义务 便是刷一会望频或者者玩一会游戏,如许 不只会让您认为 乏,借会让您认为 更搁紧。这么那些望频或者者游戏皆是去自媒体仄台。岂非 咱们看那些器械 没有是为了赔钱吗?似乎没有是那个缘故原由 。应该是为了挣钱吗?这为何借有人说没有从媒体赔钱?尔念他们仅仅没有 晓得若何...

如何设计一个婚庆网页(婚庆网站制作方案)

如何设计一个婚庆网页(婚庆网站制作方案)

您念过小我 婚礼网站吗?婚礼是一小我 平生 外最易记的日子之一。有许多 值患上记载 的绘里,您否以用网站归忆曩昔 ,记载 婚礼空儿,以至领请柬 。假如 您没有 晓得怎么作,否以看看上面的婚礼设计网站案例。  一.下量感的头图展现 当然,婚礼网站要尽量下调,如许 能力 让本身 高兴 ,让访客...

评论列表

温人俛就
2年前 (2022-07-14)

合数字的方式,理解了这一点就很好说了。比如说10进制,为什么198等于198(好像很傻一问题)?其实是因为在十进制下,198 (10) = 1 * 10^2 + 9 * 10^1 + 8 * 10^0 = 198(好像是这么回事,(。ì _ í。)),同一个数字,放在不同的位置,它所代

孤鱼栖迟
2年前 (2022-07-14)

if(t[i]!=s[j]){ j++; }else break; } k=0; while(p[k]){ if(t[i]!=p[k]){ k++; }else break; } if(s[j]==0 p[k]==0){ p

听弧神择
2年前 (2022-07-14)

上有下载的。 2、有哪些好的C语言练习(越难的越好)? 对语言本身的练习其实就是你对它的理解,用得多了,注意得多了,自然就ok了。其它思维上的练习主要是算法和数据结构方面的,严老的《数据结构题集(C语言版)》如果你能做完就相当了不起了。 3、要学精C语言,还要具备哪些条件? 其实c语言也只是一

痴妓喜余
2年前 (2022-07-14)

年是否润 ***/la_100: /**** la_100 ****/ /*** 该月以前的月所引起的 " 星期差 " **

纵遇俗野
2年前 (2022-07-14)

8是在16进制下的198,那么 198 (16) = 1 * 16^2 + 9 * 16^1 + 8 * 16^0 = 408 (10) = 408。为什么会产生这种差别呢?因为16进制下的那个1代表的分量是1 * 16^2了,而不是1 * 10^2了,同理,在其它进制

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。