C语言用*号输出英文,求大神每一步解释
发布网友
发布时间:2022-05-11 08:16
我来回答
共1个回答
热心网友
时间:2023-10-09 07:38
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
int main()
{
int i,j;
int length=0;
int pass[15];
char input[15];
char output[5][150];
char *word[26];//指针数组,相当于work[26][]
word[0]=" * \n * * \n* * \n* * * * * \n* * ";//a字母的*组成,放在word[0][]数组中
word[1]="* * * * \n* * \n* * * * \n* * \n* * * * ";//b
/*
。
。
。
。
。
*/
word[25]="* * * * * \n * \n * \n * \n* * * * * ";//z
while(1)//无限循环
{
printf("在此输入单词: ");
scanf("%s",&input);
length=strlen(input);
printf("\n\n");
for(i=0;i<length;i++)
{
switch(input[i])
{case 'a':
case 'A':
{
pass[i]=0;
break;
}
case 'b':
case 'B':
{
pass[i]=1;
break;
}
/*
。
。
。
。
。
*/
case 'z':
case 'Z':
{
pass[i]=25;
break;
}
default: break;
}//switch循环结束,功能是把字母以数字形式存放在pass数组中
}//for循环结束,while循环还未结束。
for(i=0;i<length;i++)
{
for(j=0;j<11;j++)
{
output[0][i*11+j]=word[pass[i]][j];//第一行中的*
output[1][i*11+j]=word[pass[i]][12+j];//第二行中的*
output[2][i*11+j]=word[pass[i]][24+j];
output[3][i*11+j]=word[pass[i]][36+j];
output[4][i*11+j]=word[pass[i]][48+j];//共5行
}/*把字母的* 一行一行的赋给output数组,所以output中存放的只有*和空格
注意:
一个字母的输出方块是5*10,后面跟个空格位置所以是5*11,
但是word数组中最后还有\n,所以每行12字符,但是j<11规定
只把前面11个字符赋给output数组*/
}
for(i=0;i<5;i++)
{
for(j=0;j<length*11;j++)
{
printf("%c",output[i][j]);
}//以*形式打印字母串
printf("\n");
}
printf("\n\n");
system("pause");//命令行上输出一行类似于“Press any key to exit”的字,等待用户按一个键,然后返回
system("cls");//清屏
}}追问for语句可以解释一下么?
追答for(i=0;i<length;i++)//比如有字符串make,则表示从第一个字符 m 到最后一个 e;i 表示第几个字符,这里当要打印 k 时,i = 2(m时,i = 0)
{
for(j=0;j<11;j++)/*字符(总共5行比如A:
第一行: *
第二行: * *
第三行: * *
第四行:* * * * * 总共11位,中间有间隔
第五行:* *
)的其中一行中的第一个字符到最后一个字符(例如A的第一行分别为空格、空格、空格、星、空格、空格、空格)。j 表示一行中的第几个位置(如A的第一行中的 * 时,j = 5)*/
{
output[0][i*11+j]=word[pass[i]][j];//第i 个字符的第一行的星和空格赋给output[0]
output[1][i*11+j]=word[pass[i]][12+j];//第二行中的*和空格赋给output[1]
output[2][i*11+j]=word[pass[i]][24+j];//同上
output[3][i*11+j]=word[pass[i]][36+j];
output[4][i*11+j]=word[pass[i]][48+j];
}
}
for(i=0;i<5;i++) //output[]数组的行控制循环
{
for(j=0;j<length*11;j++) //output[][]数组的列控制循环
{
printf("%c",output[i][j]);
}//以*形式打印字母串
printf("\n"); //当打印了11个字符,即一列打印完成了,打印\n 即是换行,打印第二列
}
用C语言编写输出*
也就是你想输出的最后一排*号的个数-1就是n的值
...这段程序每一步是啥意思啊,能不能帮我解释一下,求帮忙,谢谢!_百度知...
第一个dowhile循环不断将原数字对16取余,得到转为16进制后每一位上的数字,存到数组c里面,直到原数字已经变为0。然后for循环将数组c里面的数字转换成对应的十六进制字母。
c语言谁给我解释解释 19行到37行的 每一步的意思啊 这是一个行数表示...
28: lineno++; //累加 29: flag=0; //flag 就像是一个锁一样的,一会打开一会关闭 30: } 31: if(c=='\t'){ //如果是'\t' 输入" "32: printf(" ");33: }else{ 34: printf("%c",c);35: } 36: if(c=='\n'){ //如果换行符,flag置1 3...
谁能给我详细解释一下这个题,i,j,k搞不懂是啥 c语言菜鸟在此,还望大神...
j,是用来控制输出*号的起始位置,通过打印空格把光标推到目标位置。k,是控制输出*号的个数。这些都有规律的,慢慢理解不难看懂
问两道有关c语言字符指针的问题,请将程序每一步的意思告诉我,谢谢啦
第一题答案:B。理由:*s与*t都是取出此时地址存储的值,while()语句里面的意思是,当指针s与t都不为空并且s指向的值等于t指向的值。。。当s或者t为空或者t与s指向的值不同时,while()结束,返回此时s指向的值减去t指向的值,所以为比较两个字符串的大小;第二题答案:A。理由:x的地址赋值...
在编写C语言程序求解汉诺塔问题时怎样表示每一步是第几步?
**输入格式要求:"%d" 提示信息:"Input the number of disks:"**输出格式要求:"Steps of moving %d disks from A to B by means of C:\n" "Move %d: from %c to %c\n"程序运行示例如下:Input the number of disks:3Steps of moving 3 disks from A to B by means of C:Move ...
2.学生成绩管理系统 (c语言做)
4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。 5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态...
关于C语言,初学的求教
%lf指示输入的是double类型的s=sin(x);//求x的正弦值,sin是个函数,求一个数的正弦值,将正弦值赋值给s。printf("sin of %lf is %lf\n",x,s);//打印x和x的正弦值s。%lf同样是指的按照double形式输出(带小数点)#include是引入文件的语句,比如你用到sin函数,这个函数是math.h定义...
c语言中,下面程序的运行结果是?
你好 1.程序的运行结果是:1,-2 2.解释每一步的运行过程:include <stdio.h> void main(){ int y, a ;y=2, a=1;while (y--!=-1){ do{ a*=y ;a++ ;} while(y--);} printf("%d,%d\n",a,y);} 从y=2,a=1开始哈 (首先我们要知道后自减y--型的返回值是y自减前的...
谁帮我解释一下C语言程序!看好久也看不懂!
s-=1.0/t;//就是在结果里减去1.0/t if(t==n)break;//因为有可能用户输入的数可能为双数行所在。这一块就是用来在此时退出k所在的for循环 } if(h==1)printf("+1/%d=",n);else printf("-1/%d=",n);printf("%9.6f\n",s);system("PAUSE");return 0;} ...