C语言 求一C语言程序 例如:第一行1 第二行121第三行12321第四行1234321
首先是第一个问题执行步骤,这程序实际上执行的关键语句只有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,有兴趣的话你可以搜索一下。
写了挺多字不容易,你觉得可以的话奖励就直接给了吧。
#include <stdio.h>
int main()
{
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
printf("%d",j+1);
while(--j>0)
printf("%d",j);
putchar('\n');
}
return 0;
}
你是想输入任意行的还是只有这四行??
我这里有一个可以帮助你完成任意行的,参考参考。
# include <iostream.h>
int main()
{
int a;
cout<<"行数:"<<flush;
cin>>a;
int i,j,k,l;
for(i=1;i<=a;i++)
{
for(j=1;j<=i;)
{
cout<<j<<flush;
if(j==i)
for(;j--;)
{ if(j==0)
goto xx;
cout<<j<<flush;
}
j++;
}xx:
cout<<"\n";
}
return 0;
}
#include <stdio.h>
int main()
{
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
printf("%d",j+1);
while(--j>0)
printf("%d",j);
putchar('\n');
}
return 0;
}
用c语言编写程序,要求输入一个数,求1到这个数的和
main(){ int i ,j,s=0;printf(“请输入一个数字:”)scanf(“%d”,&i);j=i ;while(j--)s+=j ;printf(“1到%d的和是:%d”,i ,h );}
C语言程序代码执行结果,求执行结果1,见图。
第一步:定义了数组 a=[1,2,3,4,5,6,7,8,9,10]第二步:数组a 跟数字 5 作为参数 传入到 函数 f 中去执行,由于 f 函数无返回值且 数组a 不是全局变量,所以函数f 里面的执行结果不会影响到main方法中的数组a 因此最后的结果就是 打印出数组a 1 2 3 4 5 6 7 8 9 10 ...
求一个c语言完整程序
知识扩展:编程是一种融汇贯通的东西,学会基础到后边就越来越简单了。而且可以向多种语言发展。 c语言 是一种可移植性和多系统平台的编程语言 java 是一种功能强大可移植性强的开发语言。HTML 是一种超文本标记语言,Java Script 是一种基于客户端的脚本语言 程序语言,顾名思义就是一种语言,是用于...
用c语言编写程序,要求输入一个数,求出1到这个数的和
include <stdio.h>void main(){int i,n,sum=0;scanf("%d",&n);for(i=1;i<=n;i++) sum+=i;printf("sum=%d",sum);} 运行示例:
求一c语言程序,输入两个数,判断他们是否相等
include <stdio.h> include <string.h> include <stdlib.h> int main(void){ char a[60],b[60];printf("输入第一个数:");scanf("%s",a);printf("输入第二个数:");scanf("%s",b);if(strcmp(a,b)) printf("两个数不相等\\n");else printf("两个数相等\\n");system("pause")...
编写一个标准C语言程序:输入一个整数,按如下方式输出:第一行输出所有数...
include <stdio.h>#include <string.h>int main() {int n,i,j,len;char s[20];while(scanf("%d",&n) == 1) {sprintf(s,"%d",n);len = strlen(s);for(i = 0; i < len; ++i) {for(j = i; j < len; ++j)printf("%c",s[j]);printf("\\n");}}return 0;} ...
编写一个标准C语言程序:输入一个整数,按如下方式输出:第一行输出所有数...
程序很简单 你将数字存到字符串中 然后输出时,指针每次向前移动一位就可以了!include <stdio.h>int main(){char str[256];int i;scanf("%s", str );for( i=0;str[i];i++ )printf( "%s\\n", &str[i] );return 0;}
用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数
include"stdio.h"int count(int n){ int i,j,c=0;for(i=1;i<=n;i++){ j=i;while(j!=0){ if(i%10==1) \/*判断位数中是否有1*\/ { c++;} j=j\/10; \/*让数除以十让他原来的高位变为低位,即原来的十位变成个位*\/ } } return c;} main(){ int c,n;printf("input n:\\...
求一个c语言程序,要求输入两个字符串,可以显示出第二个字符串在第一个...
include<stdio.h> include<stdlib.h> int main(){ char str1[50],str2[50];int locat[50];char *p,*q;int i=0,len=0,lct=1,j;printf("请输入字符串1\\n");gets(str1);printf("请输入字符串2\\n");gets(str2);q=str2;for(;*q!='\\0';q++){ len=len+1;} p=str1;q=...
c语言程序设计编写程序 第一行是一个1,第二行是三个2,第三行是五个3...
参数n是要打印的行数 printNum(int n) { for (int i = 1, k = 0; k < n; k++) { int a = i;while (a <= i && a > 0) { printf("%d",(k+1));a--;} i+=2;printf("\\n"); \/\/打印完一行了 } } main函数中调用printNum(int n)函数就好了 ...