目录:
- 注意事项:
- 1.将字符串a中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格
- 2.创建带头结点的单向链表,并为各结点数据域赋0到m-1的值
- 3.求出所有满足条件的三位数
- 4.对于长整数n中的各个位置上的数值,分别统计出为0和为1的个数
- 5.是大写字母则输出*,是小写字母输出#,是其他字符则输出问号?
- 6.所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动
- 7.根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据
- 8.把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中
- 9.判断输入的任何一个正整数n,是否等于某个连续正整数序列之和
- 10.依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串
注意事项:
错误一般设置在/found/的下面那句里
其他的和程序填空差不多
1.将字符串a中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格
给定程序modi1.c中,函数fun的功能是:将字符串a中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。
例如,在调用fun函数之前给字符串a输入:ABCDEFGHIJK,调用函数之后,字符串b中的内容则为: ABC DEF GHI JK
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
modi1.c:
#include <stdio.h>
#pragma warning (disable:4996)
void fun(char *p, char *b)
{ int i, k=0;
while(*p)//遍历字符串a
{ i=1;//每次循环开始i为1
while( i<=3 && *p ) {//复制三个字符后跳出循环,
/**********found**********/
b[k]=p;
k++; p++; i++;
}
if(*p)//字符不为空时进入if分支
{
/**********found**********/
b[k++]=" ";
}
}
b[k]='\0';//字符串末尾赋空,因为在main函数里用puts输出的,puts输出字符串遇空才停
}
main()
{ char a[80],b[80];
printf("Enter a string: "); gets(a);
printf("The original string: "); puts(a);
fun(a,b);
printf("\nThe string after insert space: "); puts(b); printf("\n\n");
getchar();
}
解题思路:
错误一般设置在/**********found**********/
的下面那句里
所以有两个错误,
b[k]=p;//p是指针,单纯的p是指向的字符的地址,这样的话赋给b[k]的是地址,这显然不对,想要传过去的是字符,就要加一个解引符*,
//正确写法应该是b[k]=*p;
b[k++]=" ";//这个记住就行,字符串用""双引,字符用''单,空格是一个字符应该用''
答案:
#include <stdio.h>
#pragma warning (disable:4996)
void fun(char *p, char *b)
{ int i, k=0;
while(*p)
{ i=1;
while( i<=3 && *p ) {
/**********found**********/
b[k]=*p;
k++; p++; i++;
}
if(*p)
{
/**********found**********/
b[k++]=' ';
}
}
b[k]='\0';
}
main()
{ char a[80],b[80];
printf("Enter a string: "); gets(a);
printf("The original string: "); puts(a);
fun(a,b);
printf("\nThe string after insert space: "); puts(b); printf("\n\n");
getchar();
}
测试:
Enter a string: ABCDEFGHIJK
The original string: ABCDEFGHIJK
The string after insert space: ABC DEF GHI JK
2.创建带头结点的单向链表,并为各结点数据域赋0到m-1的值
给定程序modi1.c中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
modi1.c:
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{ NODE *h=NULL, *p, *s;
int i;
/**********found***********/
p=(NODE )malloc(sizeof(NODE));//用p开辟节点空间
h=p;//开辟的节点赋给头节点
p->next=NULL;//p的指针域为空
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));//开辟节点空间
s->data=rand()%m; s->next=p->next;//s的数据域由随机数得出,把p的下一节点地址赋给s的下一节点地址
p->next=s; p=p->next;//把节点s设为p的下一节点,p指向下一节点
}
/**********found***********/
return p;//返回头节点
}
outlink(NODE *h)
{ NODE *p;
p=h->next;//p指向头节点的下一个节点
printf("\n\nTHE LIST :\n\n HEAD ");
while(p)
{ printf("->%d ",p->data);
p=p->next;//p指向下一个节点
}
printf("\n");
}
main()
{ NODE *head;
head=Creatlink(8,22);//创建链表,这里传的两个数你看到在Creatlink函数中的rand随机数函数应该就懂了,前一个数n是要创建的节点数,后一个数m是随机数的范围
outlink(head);//输出链表
getchar();
}
解题思路:
讲一下malloc开辟空间函数:
指针自身 = (指针类型*)malloc(sizeof(指针类型)*数据数量)//直接套公式就行
题目代码中的每次都只开辟了一个元素的空间
可以用malloc开辟数组空间
例:
double * ptd;
ptd = (double * ) malloc (30 * sizeof(double));
等价于
double ptd[n];
现在说下题目中的错误
p=(NODE )malloc(sizeof(NODE));//这里使用malloc明显指针类型使用错误
//应该是p=p=(NODE *)malloc(sizeof(NODE));
第二处错误:
创建链表后返回的应该是头节点,调用的时候都是从头节点开始的
答案:
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{ NODE *h=NULL, *p, *s;
int i;
/**********found***********/
p=(NODE *)malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
/**********found***********/
return h;
}
outlink(NODE *h)
{ NODE *p;
p=h->next;
printf("\n\nTHE LIST :\n\n HEAD ");
while(p)
{ printf("->%d ",p->data);
p=p->next;
}
printf("\n");
}
main()
{ NODE *head;
head=Creatlink(8,22);
outlink(head);
getchar();
}
测试:
THE LIST :
HEAD ->17 ->10 ->17 ->13 ->1 ->15 ->0 ->6
3.求出所有满足条件的三位数
给定程序MODI1. C中,调用fun函数求出所有满足条件的三位数,存放到形参n所指的组
中,并返回这些数的个数。这些三位数等于它各个位上数字的立方和。
例如: 153=111+555+333
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
MODI1. C:
#include <stdio.h>
#pragma warning (disable:4996)
int cube(int n) { return n*n*n; }
int fun( int *n)
{ int a,b,c,i,k=0; //k是有多少符合的数
for (i=100; i<1000; i++) //遍历三位数
{
/*****************found*****************/
a = i % 100;//百位
b = i / 10 % 10;//十位
c = i % 10;//个位
/*****************found*****************/
if(cube(a)+cube(b)+cube(c) = i)//判断该数是否等于各个位上数字的立方和
{ n[k]=i; k++;}//若是,存入数组
}
/*****************found*****************/
return k-1 ;//返回符合的数有多少个
}
main()
{
int n[100],k,i;
k=fun(n);
for(i=0;i<k;i++)printf("%d ", n[i]);
printf("\n");
}
解题思路:
一共有三个错误:
(1):
a = i % 100;//%是取余,比如111%100等于11,明显不对,这句应该是要取百位上的个位,是三位数,那只用i/100就行
(2):
if(cube(a)+cube(b)+cube(c) = i)//单等是赋值,==才是相等
(3):
return k-1 ;//在main函数看到输出是i<k,数组里k个元素,下标为0到k-1,如果返回的是k-1,那么就会少输出一个元素
答案:
#include <stdio.h>
#pragma warning (disable:4996)
int cube(int n) { return n*n*n; }
int fun( int *n)
{ int a,b,c,i,k=0;
for (i=100; i<1000; i++)
{
/*****************found*****************/
a = i / 100;
b = i / 10 % 10;
c = i % 10;
/*****************found*****************/
if(cube(a)+cube(b)+cube(c) == i)
{ n[k]=i; k++;}
}
/*****************found*****************/
return k ;
}
main()
{
int n[100],k,i;
k=fun(n);
for(i=0;i<k;i++)printf("%d ", n[i]);
printf("\n");
}
测试:
153 370 371 407
4.对于长整数n中的各个位置上的数值,分别统计出为0和为1的个数
给定程序MODI1. C中,函数fun的功能是:对于长整数n中的各个位置上的数值,分别统计
出为0和为1的个数,并传递回主函数输出。
例如:若n的值为120311,即为0的个数是1;为1的个数是3,则应输出: c0=1, c1=3。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
MODI1. C:
#include <stdio.h>
#pragma warning (disable:4996)
void fun(long n,int *c0,int *c1)//c0和c1都是以指针的形式传来的,所以在fun函数c0和c1的变化会保留回到main函数
{ int k;
/**********************found***********************/
*c0=*c1=1;//赋初值,但应该是0
do
{
/**********************found***********************/
k= n/10;//k是取每一位上数,应该是取余才正确
if(k==0) (*c0)++;
if(k==1) (*c1)++;
/**********************found***********************/
n=n-10;//n应该一位一位的去掉
}
while (n);//先循环再判断,不然0就无法判断了
}
main()
{ long n; int c0,c1;
printf("input n:");
scanf("%ld",&n);
fun(n,&c0,&c1);
printf("c0=%d,c1=%d\n",c0,c1);
}
解题思路:
有三个错误,这题简单,注释就很清楚了ヾ(•ω•`)o
答案:
#include <stdio.h>
#pragma warning (disable:4996)
void fun(long n,int *c0,int *c1)
{ int k;
/**********************found***********************/
*c0=*c1=0;
do
{
/**********************found***********************/
k= n%10;
if(k==0) (*c0)++;
if(k==1) (*c1)++;
/**********************found***********************/
n=n/10;
}
while (n);
}
main()
{ long n; int c0,c1;
printf("input n:");
scanf("%ld",&n);
fun(n,&c0,&c1);
printf("c0=%d,c1=%d\n",c0,c1);
}
测试:
input n:120311
c0=1,c1=3
5.是大写字母则输出*,是小写字母输出#,是其他字符则输出问号?
给定程序MODI1.C中,函数int my_ isalpha (char c) 的功能是返回字符的种类:大写字母
返回1,小写字母返回-1,其他字符返回0。
函数void a()调用my_ isalpha(), 根据其返回值决定输出:是大写字母则输出*,是小写字
母输出#,是其他字符则输出问号?。
请改正函数a()中指定部位的错误,使它能得出正确的结果。
注意:不要改动其他函数,不得增行或删行,也不得更改程序的结构。
MODI1.C:
#include <stdio.h>
#pragma warning (disable:4996)
int my_isalpha(char c) //判断字符种类
{
if(c>='A'&&c<='Z') return 1;//为大写字母
else if(c>='a'&&c<='z') return -1;//为小写字母
else return 0; //其他字符
}
void a( )
{
char ch;
int sort;
printf("本程序判断你从键盘上键入字符的种类,请输入字符(串):\n");
do
{
ch=getchar();
if(ch!='\n')
{
sort= my_isalpha( ch);
/**********************found***********************/
switch(-1<=sort && sort<=1) //switch里的表达式应为数值表达式,根据表达式的结果进行多分支运算,而不是判断表达式
{
case 1: printf("%c",'*'); break;
/**********************found***********************/
case -1: printf("%c",'#');//case语句遇到break才会停止执行,不然会将下面的语句全部执行了
case 0: printf("%c",'?');
}
}
/**********************found***********************/
}while(ch =='\n');//这里while的意思是当输入字符为换行符时,才进入循环,看里面if分支的意思明显是要输入的字符为换行符时跳出循环
printf("%c",'\n');
}
void main( )
{
a();
}
解题思路:
改错的解析写在注释里了,说下代码中一眼看过去有些疑惑的地方
在a()中为什么要用do-while而不用while,这里是为了更严谨些,因为字符ch没有赋初值,那么此时ch的值就是随机的,而这个给的随机的值并不是输入的,随机值是换行符就直接跳出了,也就无法收取输入了
答案:
#include <stdio.h>
#pragma warning (disable:4996)
int my_isalpha(char c)
{
if(c>='A'&&c<='Z') return 1;
else if(c>='a'&&c<='z') return -1;
else return 0;
}
void a( )
{
char ch;
int sort;
printf("本程序判断你从键盘上键入字符的种类,请输入字符(串):\n");
do
{
ch=getchar();
if(ch!='\n')
{
sort= my_isalpha( ch);
/**********************found***********************/
switch(sort)
{
case 1: printf("%c",'*'); break;
/**********************found***********************/
case -1: printf("%c",'#');break;
case 0: printf("%c",'?');
}
}
/**********************found***********************/
}while(ch !='\n');
printf("%c",'\n');
}
void main( )
{
a();
}
测试:
本程序判断你从键盘上键入字符的种类,请输入字符(串):
Aa#
*#?
6.所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动
给定程序modi1.c中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。
例如,调用fun函数之前给字符串输入:GABCDeFGH,调用后字符中的内容为: eGABCDFGH请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
modi1.c:
#include <stdio.h>
void fun( char *p )
{ char max,*q; int i=0;
max=p[i];
q=p;
while( p[i]!=0 )
{ if( max<p[i] )
{ max=p[i];
/**********found**********/
q=p+i//语句以分号;结尾
}
i++;
}
/**********found**********/
wihle( q>p )//while拼写错误,这个是真醉了,我看半天没看出来
{ *q=*(q-1);
q--;
}
p[0]=max;
}
main()
{ char str[80];
printf("Enter a string: "); gets(str);
printf("\nThe original string: "); puts(str);
fun(str);
printf("\nThe string after moving: "); puts(str); printf("\n\n");
getchar();
}
解题思路:
总共两个错误,都是很基础的,第一个很容易就看出来,第二个麻了,根本没想到那去
答案:
#include <stdio.h>
void fun( char *p )
{ char max,*q; int i=0;
max=p[i];
q=p;
while( p[i]!=0 )
{ if( max<p[i] )
{ max=p[i];
/**********found**********/
q=p+i;
}
i++;
}
/**********found**********/
while( q>p )
{ *q=*(q-1);
q--;
}
p[0]=max;
}
main()
{ char str[80];
printf("Enter a string: "); gets(str);
printf("\nThe original string: "); puts(str);
fun(str);
printf("\nThe string after moving: "); puts(str); printf("\n\n");
getchar();
}
测试:
Enter a string: GABCDeFGH
The original string: GABCDeFGH
The string after moving: eGABCDFGH
7.根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据
给定程序MODI1.C中函数fun的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。
例如,若输入2
则输出:
1 2
2 4
若输入4
则输出:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
请改正程序函数中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
MODI1.C:
#include <conio.h>
#include <stdio.h>
#define M 10
int a[M][M] = {0} ;//这里数组a是定义为全局了
/**************found**************/
void fun(int **a, int m)//双重指针是指向指针的指针,在这里错到没边了
{ int j, k ;
for (j = 0 ; j < m ; j++ )
for (k = 0 ; k < m ; k++ )
/**************found**************/
a[j][k] = k * j ;
}
main ( )
{ int i, j, n ;
printf ( " Enter n : " ) ; scanf ("%d", &n ) ;
fun ( a, n ) ;
for ( i = 0 ; i < n ; i++)
{ for (j = 0 ; j < n ; j++)
printf ( "%4d", a[i][j] ) ;//%4d靠右对齐,占4个空格
printf ( "\n" ) ;
}
getchar();
}
解题思路:
有两处错误,
第一处:
由于数组a是全局的,所以可以写int a[M][M],也可以写int (*a)[M]
第二处:
仔细看看例子,可以看出输出的矩阵中的元素是下标乘积
答案:
#include <conio.h>
#include <stdio.h>
#define M 10
int a[M][M] = {0} ;
/**************found**************/
void fun(int a[M][M], int m)
{ int j, k ;
for (j = 0 ; j < m ; j++ )
for (k = 0 ; k < m ; k++ )
/**************found**************/
a[j][k] = (k+1)*(j+1) ;
}
main ( )
{ int i, j, n ;
printf ( " Enter n : " ) ; scanf ("%d", &n ) ;
fun ( a, n ) ;
for ( i = 0 ; i < n ; i++)
{ for (j = 0 ; j < n ; j++)
printf ( "%4d", a[i][j] ) ;
printf ( "\n" ) ;
}
getchar();
}
测试:
Enter n : 4
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
8.把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中
给定程序modi1.c中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。
例如,当a所指字符串中的内容为"abcdefg",b所指字符串中的内容为"1234"时,c所指数组中的内容应该为"a4b3c2d1efg";而当a所指字符串中的内容为"1234", b所指字符串中的内容为"abcdefg"时,c所指数组中的内容应该为"1g2f3e4dcba"。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
modi1.c:
#include <stdio.h>
#include <string.h>
void fun( char *a, char *b, char *c )
{
int i , j;
char ch;
i = 0;
j = strlen(b)-1;//数组有数据的最大下标
/************found************/
while ( i > j )//这明显反了,这个while循环是为了让字符串逆序,明显应该j>i
{
ch = b[i];
b[i] = b[j];
b[j] = ch;
i++;
j--;
}
while ( *a || *b )//遍历两个字符串,只要有1个指针后续指向字符不是空,就继续循环,
{
/************found************/
If ( *a )//指针a指向字符不是空
{
*c = *a;
c++;
a++;
}
if ( *b )//指针b指向字符不是空
{
*c = *b;
c++;
b++;
}
}
*c = 0;//指针c最后指向字符赋空
}
main()
{
char s1[100],s2[100],t[200];
printf("\nEnter s1 string : ");
scanf("%s",s1);
printf("\nEnter s2 string : ");
scanf("%s",s2);
fun( s1, s2, t );
printf("\nThe result is : %s\n", t );
getchar();
}
解题思路:
很有意思的字符串交叉合并的思路,可以学习一下(‾◡◝)
答案:
#include <stdio.h>
#include <string.h>
void fun( char *a, char *b, char *c )
{
int i , j;
char ch;
i = 0;
j = strlen(b)-1;
/************found************/
while ( i < j )
{
ch = b[i];
b[i] = b[j];
b[j] = ch;
i++;
j--;
}
while ( *a || *b )
{
/************found************/
if ( *a )
{
*c = *a;
c++;
a++;
}
if ( *b )
{
*c = *b;
c++;
b++;
}
}
*c = 0;
}
main()
{
char s1[100],s2[100],t[200];
printf("\nEnter s1 string : ");
scanf("%s",s1);
printf("\nEnter s2 string : ");
scanf("%s",s2);
fun( s1, s2, t );
printf("\nThe result is : %s\n", t );
getchar();
}
测试:
Enter s1 string : 1234
Enter s2 string : abcdefg
The result is : 1g2f3e4dcba
9.判断输入的任何一个正整数n,是否等于某个连续正整数序列之和
给定程字MODI1.C中,函数fun的功能是:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列。否则输出”不能分解”
例如:当输入100时,
输出: 100=9+10+11+12+13+14+15+16
100=18+19+20+21+22
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
MODI1.C:
#include <stdio.h>
void fun( int n )
{ int j, b, c, m, flag=0;
for (b=1; b<=n/2; b++) { //b就是连续正整数序列第一个数,循环停止在n/2,应该很好理解,想一下就知道,n/2+(n/2+1)不明显大于n了
/**********found**********/
n = m;//这是把m赋给n了,明显不对,应当m=n
c = b;
while (m !=0 && m>=c) {//寻找是否有连续正整数序列,若有循环结束后,m会等于0
/**********found**********/
m = m - c; c++//语句要分号结尾
}
/**********found**********/
if ( m!=0)//要m==0才是有连续正整数序列
{ printf("%d=", n);
for (j=b; j<c-1; j++) printf( "%d+", j );
printf("%d\n", j);
flag=1;
}
}
if(flag==0)
printf("不能分解\n");
}
main()
{ int n;
printf("请输入一个整数 : "); scanf("%d", &n);
fun(n);
getchar();
}
解题思路:
这题的代码的思路很不错,值得借鉴
答案:
#include <stdio.h>
void fun( int n )
{ int j, b, c, m, flag=0;
for (b=1; b<=n/2; b++) {
/**********found**********/
m=n;
c = b;
while (m !=0 && m>=c) {
/**********found**********/
m = m - c; c++;
}
/**********found**********/
if ( m==0)
{ printf("%d=", n);
for (j=b; j<c-1; j++) printf( "%d+", j );
printf("%d\n", j);
flag=1;
}
}
if(flag==0)
printf("不能分解\n");
}
main()
{ int n;
printf("请输入一个整数 : "); scanf("%d", &n);
fun(n);
getchar();
}
测试:
请输入一个整数 : 100
100=9+10+11+12+13+14+15+16
100=18+19+20+21+22
10.依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串
给定程序modi1.c中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
modi1.c:
#include <stdio.h>
void fun(char *s)
{ int i,j;
for(i=0,j=0; s[i]!='\0'; i++)
if(s[i]>='0' && s[i]<='9')//筛出数字字符
/**********found**********/
s[j]=s[i];//j没有做对往后递增的操作
/**********found**********/
s[j]="\0";//筛出所有数字字符后赋空,这样后面的字符也就没了,但空字符只是字符,而不是字符串,字符用单引'',字符串用双引""
}
main()
{ char item[80];
printf("\nEnter a string : ");gets(item);
printf("\n\nThe string is : \"%s\"\n",item);
fun(item);
printf("\n\nThe string of changing is : \"%s\"\n",item );
getchar();
}
解题思路:
题外话,筛出数字字符可以一个函数完成
头文件:#include<ctype.h>
int isdigit(char c) //检查字符是否是数字字符
答案:
#include <stdio.h>
void fun(char *s)
{ int i,j;
for(i=0,j=0; s[i]!='\0'; i++)
if(s[i]>='0' && s[i]<='9')
/**********found**********/
s[j++]=s[i];
/**********found**********/
s[j]='\0';
}
main()
{ char item[80];
printf("\nEnter a string : ");gets(item);
printf("\n\nThe string is : \"%s\"\n",item);
fun(item);
printf("\n\nThe string of changing is : \"%s\"\n",item );
getchar();
}
测试:
Enter a string : j2u4h5
The string is : "j2u4h5"
The string of changing is : "245"