8.8 输入一个4位数字,要求输出这4个数字字符,但每两个数字间插入一个输入的字符。如输入“1990”,插“W”,应输出“1W9W9W0"。”(改)
2016-08-10 23:35
477 查看
8.8 输入一个4位数字,要求输出这4个数字字符,但每两个数字间插入一个输入的字符。如输入“1990”,插“W”,应输出“1W9W9W0"。”(改)
纠结了将近一星期,其中还是用了“技术问答”,http://ask.csdn.net/questions/275108,感谢“StopZone”的热心回答。
StopZone
StopZone 2016.08.10 23:08
已采纳
puts(char *) 的输出格式是遇到'\0' 结束输出,s2所指向的字符串末尾没有'\0',所以就把非法内存的东西输出出来了。
我在纸上也推出了结果。这个程序比答案书上的好理解,没有按照原题的要求使用函数。但是想改为函数是分分钟的问题。我认为我写的比答案书上的更容易理解。
结果还有问题,用puts()函数输出的多输出了个W。应输出“1W9W9W0"。
我想出答案了,当i=4时,j等于了8,s2[j+1]=c导致对s2[8]进行了赋值,系统又自动在s2[8]的后边加上了'\0'。所以导致输出“1W9W9W0W”。更改如下:
结果如下:
完美解决。主要是通过如下代码,控制“ s2[7]='\0' ”。
以下是函数的方法:
#include<stdio.h>//8.8 输入一个4位数字,要求输出这4个数字字符,但每两个数字间插入一个输入的字符。如输入“1990”,插“W”,应输出“1W9W9W0"。”(函数的方法)
void ChaRuZiFu(char s1[],char s2[])//插入字符函数
{
char c;
int i,j;
printf("请输入要插入的字符:");
scanf("%c",&c);
fflush(stdin);
printf("*****要插入的字符c输入成功*****\n");
printf("%c\n",c);
printf("\n");
for(i=0,j=0;i<=4;i++,j++) { s2[j]=s1[i]; j=j+1; s2[j]=c; if(j>=7)//j的最大值为7 { j=7; s2[j]='\0'; } }
printf("*****c字符插入s2字符串成功*****\n");
for(i=0;i<7;i++)
{
printf("%c",s2[i]);
}
printf("\n");
for(i=0;i<7;i++)
{
printf("s2[%d]=%c ",i,s2[i]);
}
printf("\nputs()输出:");
puts(s2);
}
int main()
{
char s1[4],s2[7];
printf("请输入s1:");
gets(s1);
printf("*****s1输入成功*****\n");
puts(s1);
printf("\n");
ChaRuZiFu(s1,s2);
return 0;
}
纠结了将近一星期,其中还是用了“技术问答”,http://ask.csdn.net/questions/275108,感谢“StopZone”的热心回答。
StopZone
StopZone 2016.08.10 23:08
已采纳
puts(char *) 的输出格式是遇到'\0' 结束输出,s2所指向的字符串末尾没有'\0',所以就把非法内存的东西输出出来了。
我在纸上也推出了结果。这个程序比答案书上的好理解,没有按照原题的要求使用函数。但是想改为函数是分分钟的问题。我认为我写的比答案书上的更容易理解。
#include<stdio.h>//8.8 输入一个4位数字,要求输出这4个数字字符,但每两个数字间插入一个输入的字符。如输入“1990”,插“W”,应输出“1W9W9W0"。”(改) int main() { char s1[4],s2[7],c; int i,j; printf("请输入s1:"); gets(s1); printf("*****s1输入成功*****\n"); puts(s1); printf("\n"); printf("请输入要插入的字符:"); scanf("%c",&c); fflush(stdin); printf("*****要插入的字符c输入成功*****\n"); printf("%c\n",c); printf("\n"); for(i=0,j=0;i<=4;i++,j++) { s2[j]=s1[i]; s2[j+1]=c; j++; } printf("*****c字符插入s2字符串成功*****\n"); for(i=0;i<7;i++) { printf("%c",s2[i]); } printf("\n"); for(i=0;i<7;i++) { printf("s2[%d]=%c ",i,s2[i]); } printf("\nputs()输出:"); puts(s2); return 0; }结果如下图:
结果还有问题,用puts()函数输出的多输出了个W。应输出“1W9W9W0"。
我想出答案了,当i=4时,j等于了8,s2[j+1]=c导致对s2[8]进行了赋值,系统又自动在s2[8]的后边加上了'\0'。所以导致输出“1W9W9W0W”。更改如下:
#include<stdio.h>//8.8 输入一个4位数字,要求输出这4个数字字符,但每两个数字间插入一个输入的字符。如输入“1990”,插“W”,应输出“1W9W9W0"。”(改) int main() { char s1[4],s2[7],c; int i,j; printf("请输入s1:"); gets(s1); printf("*****s1输入成功*****\n"); puts(s1); printf("\n"); printf("请输入要插入的字符:"); scanf("%c",&c); fflush(stdin); printf("*****要插入的字符c输入成功*****\n"); printf("%c\n",c); printf("\n"); for(i=0,j=0;i<=4;i++,j++) { s2[j]=s1[i]; j=j+1; s2[j]=c; if(j>=7)//j的最大值为7 { j=7; s2[j]='\0'; } } printf("*****c字符插入s2字符串成功*****\n"); for(i=0;i<7;i++) { printf("%c",s2[i]); } printf("\n"); for(i=0;i<7;i++) { printf("s2[%d]=%c ",i,s2[i]); } printf("\nputs()输出:"); puts(s2); return 0; }
结果如下:
完美解决。主要是通过如下代码,控制“ s2[7]='\0' ”。
for(i=0,j=0;i<=4;i++,j++) { s2[j]=s1[i]; j=j+1; s2[j]=c; if(j>=7)//j的最大值为7 { j=7; s2[j]='\0'; } }
以下是函数的方法:
#include<stdio.h>//8.8 输入一个4位数字,要求输出这4个数字字符,但每两个数字间插入一个输入的字符。如输入“1990”,插“W”,应输出“1W9W9W0"。”(函数的方法)
void ChaRuZiFu(char s1[],char s2[])//插入字符函数
{
char c;
int i,j;
printf("请输入要插入的字符:");
scanf("%c",&c);
fflush(stdin);
printf("*****要插入的字符c输入成功*****\n");
printf("%c\n",c);
printf("\n");
for(i=0,j=0;i<=4;i++,j++) { s2[j]=s1[i]; j=j+1; s2[j]=c; if(j>=7)//j的最大值为7 { j=7; s2[j]='\0'; } }
printf("*****c字符插入s2字符串成功*****\n");
for(i=0;i<7;i++)
{
printf("%c",s2[i]);
}
printf("\n");
for(i=0;i<7;i++)
{
printf("s2[%d]=%c ",i,s2[i]);
}
printf("\nputs()输出:");
puts(s2);
}
int main()
{
char s1[4],s2[7];
printf("请输入s1:");
gets(s1);
printf("*****s1输入成功*****\n");
puts(s1);
printf("\n");
ChaRuZiFu(s1,s2);
return 0;
}
相关文章推荐
- 8.8 写一个函数,输入一个4位数字, 要求输出这4个数字字符, 但每两个数字间有一个空格。 如输入1990,应输出“1 9 9 0”。
- 习题 7.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如输入1990,应输出“1 9 9 0”。
- 【c语言】输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如:1990->1 9 9 0
- 写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出"1 9 9 0"。
- 写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出"1 9 9 0"。
- 输入一个4位数,要求输出这4个数字字符,每两个数字间空一个空格。求解惑。哪里不对?
- 写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出"1 9 9 0"。
- 设计一个函数,输入一个4位数字,要求输出这4个数字字符,但每个数字间空一个空格。
- C语言初级练习——编写一个乘法表,呈倒三角形、输入一串字符,要求输出这串字符中的数字最多的那段的位置以及这段数字的个数
- 输入一个字符串,要求输出字符串中字符所有的排列,例如输入"abc",得到"abc","acb","bca","bac","cab","cba"
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- 43.编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”
- 输入一个字符,字母输出‘c’,数字输出本身,回车结束(8086汇编)
- js脚本系列(1) JS判断输入字符串长度(汉字算两个字符,字母数字算一个)
- 第二章作业51.4(编写一个程序,判断用户输入的字符是否为数字,若是数字,则输出“a numerical charater”,否则输出“other charater”。)
- loner_li 机试题 编写一个简单的计算器实现加减乘除:输入两个数字和一个运算符号,输出结果(注意容错性)
- 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 输入一个字符,是数字字符输出YES!,否则输出NO!.cpp
- 输入一个字符串,把其中的字符按逆序输出。如输入light,输出thgil。要求用string方法
- 输入一个字符串内有数字和非数字字符,将连续的数字作为一个整数,存到数组a中,统计整数的个数,并输出这些数