C和指针第一个程序就没看懂,求解释啊
答案:1 悬赏:0 手机版
解决时间 2021-03-08 01:19
- 提问者网友:像風在裏
- 2021-03-07 01:35
C和指针第一个程序就没看懂,求解释啊
最佳答案
- 五星知识达人网友:封刀令
- 2021-03-07 02:41
#include
#include
#include
#define MAX_COLS 20 // 宏定义常量 MAX_COLS 为20
#define MAX_INPUT 1000// 宏定义常量 MAX_INPUT 为 1000
int read_column_numbers(int columns[],int max)
{
int num=0;
int ch;
while(num=0)//判断输入的值是否为正数
num=num+1;// 统计有好多个数
if(num%2!=0)//判断输入的个数是否是偶数
{
puts("Last column number is not paired.");
exit( EXIT_FALLURE);//没有成功地执行,强制结束程序
}
while((ch=getchar())!=EOF&&ch!='\n')
;
return num;
}
void rearrange(char *output,char const *input,inst n_columns,int const column[])
{
int col;
int output_col;
int len;
len=strlen(input);//计算字符串长度
output_col=0;
for(col=0;col {
int nchars=columns[col+1]-columns[col]+1;
if(columns[col]>=len||output_col==MAX_INPUT-1)
break;
if(output_col+nchars>MAX_INPUT-1)
nchars=MAX_INPUT-output_col-1;
strncpy(output+output_col,input+columns[col],nchars);
output_col=output_col+nchars;
}
output[output_col]='\0';
}
int main()
{
int n_columns;
int columns[MAX_COLS];
char input[MAX_INPUT];
char output[MAX_INPUT];
n_columns=read_column_numbers(columns,MAX_COLS);
while(gets(input)!=NULL)
{
printf("Original input :%S\n",input);
rearrange(output,input,n_columns,columns);
printf("Rearrange line:%s\n",output);
}
return EXIT_SUCCESS;//执行成功
}
首先依次输入数字,当遇见负数时停止。此时如果输入的数字个数是奇数的话就输出"last column number is not paired”然后结束。如果输入的数字是偶数的话,再输入一个字符串,将输入的数字按顺序两个一组,后面的减去前面的加1,例如9-4+1,得到的此数如果小于字符串长度,就将这个字符串的第4个字符后面的9-4+1个字符复制到另一个字符串X,然后再进行下组个数,将通过下组个数得到的字符串复制到X的后面,依次进行直到两数之差大于字符串长度或者数没有了,然后输出字符串X
#include
#include
#define MAX_COLS 20 // 宏定义常量 MAX_COLS 为20
#define MAX_INPUT 1000// 宏定义常量 MAX_INPUT 为 1000
int read_column_numbers(int columns[],int max)
{
int num=0;
int ch;
while(num
num=num+1;// 统计有好多个数
if(num%2!=0)//判断输入的个数是否是偶数
{
puts("Last column number is not paired.");
exit( EXIT_FALLURE);//没有成功地执行,强制结束程序
}
while((ch=getchar())!=EOF&&ch!='\n')
;
return num;
}
void rearrange(char *output,char const *input,inst n_columns,int const column[])
{
int col;
int output_col;
int len;
len=strlen(input);//计算字符串长度
output_col=0;
for(col=0;col
int nchars=columns[col+1]-columns[col]+1;
if(columns[col]>=len||output_col==MAX_INPUT-1)
break;
if(output_col+nchars>MAX_INPUT-1)
nchars=MAX_INPUT-output_col-1;
strncpy(output+output_col,input+columns[col],nchars);
output_col=output_col+nchars;
}
output[output_col]='\0';
}
int main()
{
int n_columns;
int columns[MAX_COLS];
char input[MAX_INPUT];
char output[MAX_INPUT];
n_columns=read_column_numbers(columns,MAX_COLS);
while(gets(input)!=NULL)
{
printf("Original input :%S\n",input);
rearrange(output,input,n_columns,columns);
printf("Rearrange line:%s\n",output);
}
return EXIT_SUCCESS;//执行成功
}
首先依次输入数字,当遇见负数时停止。此时如果输入的数字个数是奇数的话就输出"last column number is not paired”然后结束。如果输入的数字是偶数的话,再输入一个字符串,将输入的数字按顺序两个一组,后面的减去前面的加1,例如9-4+1,得到的此数如果小于字符串长度,就将这个字符串的第4个字符后面的9-4+1个字符复制到另一个字符串X,然后再进行下组个数,将通过下组个数得到的字符串复制到X的后面,依次进行直到两数之差大于字符串长度或者数没有了,然后输出字符串X
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯