100分,求C语言高手讲解此程序,只有四行代码。越详细越好,我是新手,谢谢!

作者&投稿:正赖 (若有异议请与网页底部的电邮联系)
求高手给个C#代码,这个不会,越详细越好,谢谢!~


是要的这个结果吗

SEO这个属于网络营销或者电子商务,学习下网页设计,建站和其他一些就可以了,java,C 这些可以说和SEO 没有太大关系!2

首先是第一个问题执行步骤,这程序实际上执行的关键语句只有printf一句,printf首先读取参数,一共是四个参数a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34。
第一个参数a为打印的内容,因为后面第三个参数a="main(a){printf(a,34,a=%c%s%c,34);}"实际上同时也是一条赋值语句,将a的值设为后面的一串字符串,这里可以将第一个参数a代换为"main(a){printf(a,34,a=%c%s%c,34);}",同时一条赋值语句的值也为所赋予的值即后面的字符串,这样可以把这条printf语句看做

printf("main(a){printf(a,34,a=%c%s%c,34);}",34,"main(a){printf(a,34,a=%c%s%c,34);}",34);

这样之后可以看出现在此语句已经是很直白的标准的打印语句形式了,打印双引号中的内容,其中包含有%c%s%c三个参数,分别即后面的34,,"main(a){printf(a,34,a=%c%s%c,34);}",34。
%c是字符型,对照ASCII码可知34对应符号即双引号",%s是字符串,即后面的字符串,接着又是一个%c的字符双引号。打印的步骤为
1.首先打印main(a){printf(a,34,a=
2.然后打印参数%c,值是34,因此打印出双引号"
3.然后打印参数%s,参数是a="main(a){printf(a,34,a=%c%s%c,34);}",其值即等号后的"main(a){printf(a,34,a=%c%s%c,34);}",因此打印双引号内的内容,即main(a){printf(a,34,a=%c%s%c,34);}
4.然后打印%c,参数还是34,打印双引号"
5.最后是剩下的部分,34);}
拼接起来,最后打印的总结果就是
main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}
即是程序代码本身。

你的第二个问题main的参数问题,参数中的那个a其实就是一个形式参数,在本程序中并没有实际意义,只是为了让程序正好打印出本身的加工而已。main函数的实际形式为
main(int argc,char *argv[]),argc为程序参数数量,argv为程序各个参数,其中argv[0]为程序名称,往后为输入的参数。这个因为与你提问的程序本身不产生影响,感兴趣可以额外看一看。

至于第三个问题printf参数问题,我在前面讲执行步骤的时候已经详细说过了。
最后这类打印自身的程序有个通称叫quine,有兴趣的话你可以搜索一下。

写了挺多字不容易,你觉得可以的话奖励就直接给了吧。

首先a是一个整形。
main函数代参数的情况下是这样定义的。
main(int i,char *m[]);有几种情况。
1.main(int i)
2.main(int i,char *m[])
3.main(int 1,char *m[],char *n[])
//以上更改,因为我发现编译的时候报错。然后查了下发现的。
我们遇到的是第一种情况
其实当a被赋值指针的时候会报错,因为变量赋值不对称的。但是也是能用。如何使用不报错,后面会说。
然后调用函数的时候,都是先进行赋值运算。如:
fun(i=1); 是先赋值,使i等于1,然后调用fun函数。那么上面的函数可以简化为:
main(a)
{
a="main(a){printf(a,34,a=%c%s%c,34);}";
printf(a,34,a,34);
}

有TC的话,可以看出,这个程序和原来的程序的结果是一样的。

然后上面可以写成这样,看着明白:
main(a)
{
a="main(a){printf(a,34,a=%c%s%c,34);}";
printf("main(a){printf(a,34,a=%c%s%c,34);}",34,a,34);
}

然后就非常清晰了。34 以字符输出为:"。指针a指向的字符串以%s字符串输出。然后在输出:"
结果就是:main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}

然后这里有个重点是a是int变量,这里被用作字符串指针来用,指针地址位数与int位数其实在TC中是一致的(远指针除外)。
想编译的时候不报错,仅仅需要一步强制转换:
main(a)
{
(char *)a="main(a){printf(a,34,a=%c%s%c,34);}";
printf(a,34,a,34);
getch();
}

这是一个输出自身源代码的程序.
需要修改下main参数的定义才能在vc6中运行.另外要加上#include <stdio.h>
main(char* a)
{
printf(a,34,a="main(char* a){printf(a,34,a=%c%s%c,34);}",34);
}
具体执行步骤自己在vc中看看汇编代码吧.你可以理解为拿a代表的字符串放在printf第一个a处,然后%c%s%c带入相应的值
main参数a是一个字符指针,printf第一个参数需要,而第3个参数又同时初始化了他.
printf参数就更好理解了,第一个是格式字符串,后三个是字符串中3个%所要带入的值.printf("%c",34)正好是双引号.

据我估计啊,这是递归调用main()函数,至于具体怎么调用呢,容我18年后再来讲解。

汗,看的蛋疼乳酸。。。

100分!求C语言设计的班费程序急!急!急!
答:100分!求C语言设计的班费程序急!急!急! 100 C语言中相关知识,设计出班费管理程序。要求如下所述:录入学生信息,每位学生录入的信息有:姓名、学号、性别以及班费缴纳情况。以文件(myfile.txt)的形式保存所有信息。u增加学生... C语言中相关知识,设计出班费管理程序。要求如下所述:录入学生信息,每位学生录入的...

c语言问题 求高手解答
答:这是因为,输入空格,回车的时候,回车就被b 给读取到了,所以j 会比i 大一

求C语言高手来解答啊!不胜感激啊!
答:{ int i = 0;for( ; (*str1 == *str2 && *str1 != '\0' && *str2 != '\0') ;str1++,str2++,i++);return ( *str1 - *str2 );} 第二个:int main(void){ int bai,shi,ge,x;printf("输入一个三位数:\n");scanf("%d",&x);bai = x/100;shi = x%100/...

求C语言程序,高手请进...
答:/*1.输入一个以回车结束的字符串(少于80个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替换后的字符串 原字母 对应字母 A Z B Y C X D W X C Y B Z A*/ /*#include <stdio.h> void main(){ char str[80];char a;int i=0;s...

求高手解答一些简单的C语言题目!(高分悬赏)
答:1、Before GlobalPlusPlus(), it is 1 Before ++, it is 1 After ++, it is 2 After GlobalPlusPlus(), it is 2 2、over!3、(1)printf("Input a year:");scanf("%d",&year);(2)(0==year%4 && 0!=year%100) || 0==year%400 4、(1)s[i]!='\0'(2)s[j]=s[i];5...

求C语言高手解释下 加分
答:include "stdafx.h"include <stdio.h> int main(int argc, char* argv[]){ int m,n,flag;//输出提示,在屏幕上显示The primers form 100 to 200 is:printf("\nThe primers form 100 to 200 is:\n");for(n=101;n<=200;n+=2)//从101开始到200为止,遍历所有的奇数,判断是否为...

求C语言高手解决,程序有一处错误始终找不出来。下面是程序代码。回答好...
答:错误原因主要有:1、C语言是大小写敏感的,注意一些函数和关键字的大小写,如:If和if的区别2、变量的名称错误3、调用的库函数没有头文件,如:inportb/outportb等。下面的程序可以编译,但是连接时出现库函数没有说明的问题,请添加inportb/outportb对应的头文件!include <stdio.h> include <conio.h>...

求C语言高手解答
答:include <stdio.h> main(){ int m,i,flag;int k=0;for(m=100;m<=200;m++){ flag=1;for(i=2;i<m;i++)if(m%i==0){flag=0;break;} if (flag==1){ printf("%4d",m);k++;} if (k%8==0)printf("\n");} getch();} 那个,printf("%4d",m);和k++;,这两个语句...

C语言简单题目,求高手解答
答:{ int a ,b,c,max;printf("请输入三个数a,b,c:\n");scanf("%d%d%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max = c;printf("最大数为:%d",max);} 1、一球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下。求它在第10次落地时,共经过多少m?第10次...

C语言题目,100分悬赏
答:/ 第一题:已知某班N(〈=50)名学生进行了高数、英语和C语言等3门课考试,将3门课 的成绩以及计算3门课的总分存放于一个二维数组中,将学生姓名存放在另一个二维字 符数组中,按总分(由高到低)将学生姓名排序并输出排序结果(序号和姓名)。/ include "stdafx.h"include "stdio.h"struct ...